Avec le développement d'Internet, de plus en plus d'entreprises et de particuliers ont commencé à sauvegarder et à partager leurs documents et informations sous forme électronique. Parmi ces documents électroniques, le format PDF est sans aucun doute l'un des formats les plus populaires et les plus polyvalents, car il peut être affiché de la même manière sur différentes plateformes quels que soient les systèmes d'exploitation et les applications, et il n'est pas non plus facile à réviser.
Cependant, nous devons parfois convertir certaines pages HTML ou le contenu de sortie d'un programme Java au format PDF. Dans ce cas, nous devons utiliser des outils et des technologies professionnels. Cet article présente les étapes et idées spécifiques de ce processus en expliquant comment le langage Java utilise certaines bibliothèques et frameworks pour implémenter la fonction de conversion HTML et Java en PDF.
1. Utilisez Flying Saucer pour convertir du HTML en PDF
Flying Saucer est un moteur de rendu Java CSS spécialement utilisé pour convertir les feuilles de style XHTML, XML et CSS en formats PDF ou image. Il fournit une API facile à utiliser qui peut restituer des pages PDF complètes et de haute qualité avec des fonctionnalités telles que les super polices et CSS3.
1. Présentez la bibliothèque de dépendances de Flying Saucer
Ajoutez des dépendances dans le pom :
<dependency> <groupId>org.xhtmlrenderer</groupId> <artifactId>flying-saucer-pdf</artifactId> <version>9.1.20</version> </dependency>
2. Utilisez iText pour convertir des objets Java en PDF
En plus de convertir du HTML en PDF, nous pouvons également convertir des objets Java en fichiers PDF. via la bibliothèque iText. iText est une bibliothèque d'opérations Java PDF qui offre la possibilité et l'API d'opération de générer des fichiers au format PDF.
1. Introduisez la dépendance iText
Ajoutez la bibliothèque de dépendances iText dans Maven, comme indiqué ci-dessous :
// DOM解析器 DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); // 创建一个Model用于存储转换后的文档 Document document = builder.newDocument(); // 读取html内容并转换为文档树 StringReader reader = new StringReader("要转化为PDF的html格式内容"); InputSource source = new InputSource(reader); // 获取根元素 Element root = document.getDocumentElement(); // 将html输入文档树种 Node node = document.importNode(root, true); // 将html根元素加入文档树中 document.appendChild(node); // 转化为PDF ITextRenderer renderer = new ITextRenderer(); renderer.setDocument(document, null); renderer.layout(); OutputStream out = new FileOutputStream(pdfUrl); renderer.createPDF(out);
2. Créez un objet de document PDF
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.11</version> </dependency>
3. Ajoutez du contenu au document
Le code suivant peut ajouter des objets Java à In. PDF :
// 创建pdf文件对象 Document document = new Document(PageSize.A4); // 文件输出流 OutputStream outputStream = new FileOutputStream("test.pdf"); // 将文件流作为输出对象 PdfWriter.getInstance(document, outputStream); // 打开文件 document.open(); // 向文件中添加段落,代码省略 // 关闭文件 document.close()
4. Sortie du fichier PDF
Enfin, sortez le fichier PDF via le flux de sortie de fichier :
// 添加文字 Font font = new Font(); font.setStyle(Font.BOLD); font.setSize(18); Paragraph paragraph = new Paragraph("Hello World!", font); document.add(paragraph); // 添加表格 PdfPTable table = new PdfPTable(3); table.addCell("Candidate ID"); table.addCell("Candidate Name"); table.addCell("Status"); for(int i=0;i<10;i++) { table.addCell("00"+i); table.addCell("Candidate "+i); table.addCell("Selected"); } document.add(table);
On peut voir qu'iText fournit une API riche qui peut être utilisée pour créer et exploiter des objets de document PDF, et Flying Saucer peut bien gérer les styles CSS complexes et les balises XHTML, et convertir les pages HTML en fichiers PDF. Je pense qu'en utilisant ces deux outils, vous convertirez plus facilement le contenu des programmes HTML et Java en fichiers PDF.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!