首頁 >web前端 >前端問答 >java html 轉pdf

java html 轉pdf

WBOY
WBOY原創
2023-05-15 15:37:382063瀏覽

隨著網路的發展,越來越多的企業和個人開始將自己的文件、資料以電子化的形式保存和分享。而在這些電子文件中,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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn