如何用Java將HTML轉換為高質量PDF文件?

將HTML轉換為PDF文件是一項常見的任務,它可以使您的網站內容更易於打印、分享和存檔。在本文中,我們將詳細介紹如何用Java實現高質量HTML到PDF文件的轉換。

一、選擇一個Java PDF庫

在開始轉換HTML到PDF之前,您需要選擇一個適合您的Java PDF庫。目前,有許多常用的Java PDF庫,如iText、Apache PDFBox和Flying Saucer等。在這裡我們選擇Flying Saucer作為演示庫。

//導入Flying Saucer包
import org.xhtmlrenderer.pdf.ITextRenderer;
import com.lowagie.text.DocumentException;
import java.io.IOException;
import java.io.File;
import java.io.FileOutputStream;

public class HtmlToPdfConverter {
    public void convertHtmlToPdf(String html, String pdfFilePath) throws IOException, DocumentException {
        //設置文件輸出流
        FileOutputStream os = new FileOutputStream(pdfFilePath);

        //使用Flying Saucer生成PDF
        ITextRenderer renderer = new ITextRenderer();
        renderer.setDocumentFromString(html);
        renderer.layout();
        renderer.createPDF(os);

        //關閉文件輸出流
        os.close();
    }
}

二、生成HTML字符串

在將HTML轉換為PDF之前,需要先將HTML生成字符串。在這裡,我們可以使用Jsoup。

//導入Jsoup包
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class HtmlGenerator {
    public String generateHtml() {
        //創建HTML文件
        Document document = new Document("https://www.example.com/");

        //添加標題
        Element title = document.createElement("title");
        title.html("Example Title");
        document.head().appendChild(title);

        //添加內容
        Element body = document.body();
        Element h1 = body.appendElement("h1");
        h1.html("Example Header");
        Element p = body.appendElement("p");
        p.html("This is an example paragraph.");

        //返回HTML字符串
        return document.html();
    }
}

三、轉換HTML到PDF

一旦我們有了HTML字符串和PDF庫,我們就可以將HTML字符串轉換為PDF。
在這裡,我們將使用第一步選擇的Flying Saucer庫。

public class App {
    public static void main(String[] args) throws IOException, DocumentException {
        HtmlGenerator htmlGenerator = new HtmlGenerator();
        HtmlToPdfConverter converter = new HtmlToPdfConverter();

        //生成HTML字符串
        String html = htmlGenerator.generateHtml();

        //轉換HTML到PDF文件
        String pdfFilePath = "example.pdf";
        converter.convertHtmlToPdf(html, pdfFilePath);
    }
}

四、設置PDF頁面大小和布局

您可以使用Flying Saucer設置生成的PDF文件的布局和頁面大小。使用setRootFontSize方法設置文本大小,使用setDocumentMargins方法設置頁面邊距。

public class HtmlToPdfConverter {
    public void convertHtmlToPdf(String html, String pdfFilePath) throws IOException, DocumentException {
        //設置文件輸出流
        FileOutputStream os = new FileOutputStream(pdfFilePath);

        //使用Flying Saucer生成PDF
        ITextRenderer renderer = new ITextRenderer();
        renderer.setDocumentFromString(html);

        //設置文本大小
        renderer.getSharedContext().setFontSize(12.0f);

        //設置頁面邊距
        renderer.getSharedContext().setMargins(20, 20, 20, 20);

        renderer.layout();
        renderer.createPDF(os);

        //關閉文件輸出流
        os.close();
    }
}

五、添加頁眉頁腳和水印

使用Flying Saucer添加頁眉、頁腳和水印非常容易。使用setHeaderTemplate、setFooterTemplate和setUserAgentCallback方法為文檔添加頁眉、頁腳和水印。

public class HtmlToPdfConverter {
public void convertHtmlToPdf(String html, String pdfFilePath) throws IOException, DocumentException {
//設置文件輸出流
FileOutputStream os = new FileOutputStream(pdfFilePath);

//使用Flying Saucer生成PDF
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(html);

//設置頁眉、頁腳和水印
renderer.setFooterTemplate("


Page -

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/193332.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-01 15:00
下一篇 2024-12-01 15:00

相關推薦

發表回復

登錄後才能評論