在 Java 中将 HTML 转换为 PDF 有几种实现方式,包括使用第三方库和工具。下面我将为你介绍其中几种常见的方式,以及每种方式的步骤和示例代码。
iText 是一个用于创建和处理 PDF 文档的流行 Java 库。以下是将 HTML 转换为 PDF 的步骤:
步骤流程:
添加依赖:
Maven 依赖:
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.1.16</version>
</dependency>
Gradle 依赖:
implementation 'com.itextpdf:itext7-core:7.1.16'
编写代码:
import com.itextpdf.html2pdf.ConverterProperties;
import com.itextpdf.html2pdf.HtmlConverter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class HtmlToPdfConverter {
public static void main(String[] args) {
String htmlFilePath = "path/to/your/input.html";
String pdfFilePath = "path/to/your/output.pdf";
try {
FileInputStream htmlFileStream = new FileInputStream(new File(htmlFilePath));
FileOutputStream pdfFileStream = new FileOutputStream(new File(pdfFilePath));
ConverterProperties converterProperties = new ConverterProperties();
HtmlConverter.convertToPdf(htmlFileStream, pdfFileStream, converterProperties);
htmlFileStream.close();
pdfFileStream.close();
System.out.println("HTML to PDF conversion successful.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Flying Saucer 是一个用于将 XHTML 和 CSS 渲染为 PDF 的开源库,它是基于 iText 的。
步骤流程:
添加依赖:
Maven 依赖:
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf</artifactId>
<version>9.1.22</version>
</dependency>
Gradle 依赖:
implementation 'org.xhtmlrenderer:flying-saucer-pdf:9.1.22'
编写代码:
import org.xhtmlrenderer.pdf.ITextRenderer;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class XhtmlToPdfConverter {
public static void main(String[] args) {
String xhtmlContent = "<html><body><h1>Hello, World!</h1></body></html>";
String pdfFilePath = "path/to/your/output.pdf";
try {
try (OutputStream pdfOutputStream = new FileOutputStream(pdfFilePath)) {
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(xhtmlContent);
renderer.layout();
renderer.createPDF(pdfOutputStream);
renderer.finishPDF();
System.out.println("XHTML to PDF conversion successful.");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
wkhtmltopdf 是一个开源工具,它可以将 HTML 和 CSS 转换为 PDF。尽管不是 Java 库,但它可以通过 Java 代码进行调用。
步骤流程:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class WkHtmlToPdfConverter {
public static void main(String[] args) {
String htmlFilePath = "path/to/your/input.html";
String pdfFilePath = "path/to/your/output.pdf";
String command = "wkhtmltopdf " + htmlFilePath + " " + pdfFilePath;
try {
Process process = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
System.out.println("HTML to PDF conversion successful.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
请注意,这只是使用 wkhtmltopdf 工具的一种方法,该工具有许多参数和选项,可以根据需要进行配置。
以上是三种常见的将 HTML 转换为 PDF 的方法。你可以根据实际情况选择其中一种来实现你的需求。每种方法都有其自身的优缺点,可以根据项目需求进行选择。