將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
微信掃一掃
支付寶掃一掃