將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-tw/n/193332.html