隨著網路的發展,越來越多的企業和個人開始將自己的文件、資料以電子化的形式保存和分享。而在這些電子文件中,PDF 格式無疑是其中最受歡迎和通用的格式之一,因為它可以不受作業系統和應用程式的影響,在不同平台上保持以相同的方式顯示,同時也不容易進行修改。
然而,我們有時需要將一些 HTML 頁面或 Java 程式輸出的內容轉換成 PDF 格式,這時候就需要用到一些專業的工具和技術。本文透過解釋 Java 語言如何利用一些函式庫和框架來實現 HTML 和 Java 轉 PDF 的功能,來介紹這個過程的具體操作步驟和思路。
一、使用 Flying Saucer 將 HTML 轉 PDF
Flying Saucer 是一款 Java CSS 渲染引擎,專門用於將 XHTML、XML 以及 CSS 樣式表轉換成 PDF 或圖片格式。它提供了一個簡單易用的 API,能夠以超級字體和CSS3等功能在 PDF 中渲染出完整且高品質的頁面。
1、引入Flying Saucer 的依賴庫
在pom.xml 檔案中加入依賴如下所示:
<dependency> <groupId>org.xhtmlrenderer</groupId> <artifactId>flying-saucer-pdf</artifactId> <version>9.1.20</version> </dependency>
2、使用ITextRenderer 物件將HTML 轉成PDF
透過以下程式碼建立一個模板並填入HTML 內容:
// 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);
二、使用iText 將Java 物件轉PDF
除了將HTML 轉換成PDF 外,我們還可以透過iText 函式庫將Java 物件轉換為PDF 檔案。 iText 是一款 Java PDF 操作庫,提供了產生 PDF 格式檔案的能力和操作 API。
1、引入iText 依賴
在Maven 中新增iText 依賴函式庫,如下所示:
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.11</version> </dependency>
2、建立PDF 文件物件
// 创建pdf文件对象 Document document = new Document(PageSize.A4); // 文件输出流 OutputStream outputStream = new FileOutputStream("test.pdf"); // 将文件流作为输出对象 PdfWriter.getInstance(document, outputStream); // 打开文件 document.open(); // 向文件中添加段落,代码省略 // 关闭文件 document.close()
3 、新增內容給文件
如下程式碼可以將Java 物件加入PDF 中:
// 添加文字 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);
4、輸出PDF 文件
最後,透過檔案輸出流將PDF 文件輸出:
// 文件输出流 OutputStream outputStream = new FileOutputStream("test.pdf"); // 将文件流作为输出对象 PdfWriter.getInstance(document, outputStream);
由此可見,iText 提供了豐富的API,可以用於建立和操作PDF 文件對象,而Flying Saucer 則能夠很好地處理複雜的CSS 樣式和XHTML 標籤,將HTML 頁面轉變為PDF 文件。相信利用這兩個工具,你會更方便地將 HTML 和 Java 程式內容轉換為 PDF 檔案。
以上是java html 轉pdf的詳細內容。更多資訊請關注PHP中文網其他相關文章!