将 HTML 文档转换为 PDF 文件的好处有:
- 能离线阅读和查看
- 易于编辑和评论
- 易于分享和打印
- 文档体积更小
本文演示了如何使用 Spire.PDF for Java 和 QT Web 引擎将 HTML 网页(URL) 或 HTML 字符串转换为 PDF 文档。
安装 Spire.PDF for Java
首先,您需要在 Java 程序中添加 Spire.Pdf.jar 文件作为依赖项。JAR 文件可以从此链接下载。 如果您使用 Maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而轻松地在应用程序中导入 JAR 文件
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>10.11.2</version>
</dependency>
</dependencies>
下载插件
此场景还依赖于 QT Web 引擎,它是一个提供渲染 HTML 内容的功能的开源库。请从以下链接下载适合您的操作系统的插件。
在磁盘上的某个位置解压缩包以获取 “Plugins” 文件夹。在本例中,我们将插件保存在路径 “F:\Libraries\plugins-windows-x64\plugins” 下。
对于 Linux 和 Mac 环境,请直接将插件包拷贝到 Linux 或 Mac 系统上解压缩,并确保解压后的文件夹有权限进行读取。
请注意:该转换方法需要 GUI(图形用户界面)的支持。对于未安装图形用户界面的服务器,请按照以下步骤进行转换。
- 安装 Xvfb
Centos 系统:yum install XvfbUbuntu 系统:apt-get install Xvfb
- 使用 xvfb-run 运行 jar 包
xvfb-run java -jar HTMLToPDF.jar (HTMLToPDF.jar 文件是需要客户自行打包的自定义项目)
将 URL 转换为 PDF
以下是使用 Spire.PDF for Java 以及 QT 插件将 URL 转换为 PDF 文档的步骤。
- 指定要转换的 URL 路径。
- 指定输出文件路径。
- 指定插件路径,并将其作为 HtmlConvert.setPluginPath() 方法的参数传递。
- 调用 HtmlConverter.convert (String url, String fileName, boolean enableJavaScript, int timeout, com.spire.pdf.htmlconverter.qt.Size pageSize, com.spire.pdf.graphics.PdfMargins margins) 方法将 URL 转换为 PDF。
- Java
import com.spire.pdf.graphics.PdfMargins;
import com.spire.pdf.htmlconverter.qt.HtmlConverter;
import com.spire.pdf.htmlconverter.qt.Size;
public class ConvertUrlToPdf {
public static void main(String[] args) {
//指定URL路径
String url = "https://www.baidu.com/";
//指定输出文档路径
String fileName = "output/UrlToPdf.pdf";
//指定插件路径
String pluginPath = "F:\\Libraries\\plugins-windows-x64\\plugins";
//设置插件路径
HtmlConverter.setPluginPath(pluginPath);
//将URL转换为PDF
HtmlConverter.convert(url, fileName, true, 1000000, new Size(1200f, 1000f), new PdfMargins(0));
}
}
将 HTML 转换为 PDF
以下是使用 Spire.PDF for Java 以及 QT 插件将 HTML 字符串转换为 PDF 文档的步骤。
- 指定要转换的 URL 路径。
- 指定输出文件路径。
- 指定插件路径,并将其作为 HtmlConvert.setPluginPath() 方法的参数传递。
- 调用 HtmlConverter.convert (String htmlString, String fileName, boolean enableJavaScript, int timeout, com.spire.pdf.htmlconverter.qt.Size pageSize, com.spire.pdf.graphics.PdfMargins margins, com.spire.pdf.htmlconverter.LoadHtmlType htmlType) 方法将 HTML 字符串转换为 PDF。
注意:只有内联 CSS 样式和内部 CSS 样式可以在 PDF 上正确呈现。如果您有外部 CSS 样式表,请将其转换为内联或内部 CSS 样式。
- Java
import com.spire.pdf.graphics.PdfMargins;
import com.spire.pdf.htmlconverter.LoadHtmlType;
import com.spire.pdf.htmlconverter.qt.HtmlConverter;
import com.spire.pdf.htmlconverter.qt.Size;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class ConvertHtmlStringToPdf {
public static void main(String[] args) throws IOException {
//调用自定义方法HtmlToString()将HTML文件转换为字符串
String htmlString = HtmlToString("C: \\Users\\Administrator\\Desktop\\Sample.html");
//指定输出文档路径
String outputFile = "output/HtmlToPdf.pdf";
//指定插件路径
String pluginPath = "F: \\Libraries\\plugins-windows-x64\\plugins";
//设置插件路径
HtmlConverter.setPluginPath(pluginPath);
//将HTML字符串转换为PDF
HtmlConverter.convert(htmlString, outputFile, true, 100000, new Size(700, 900), new PdfMargins(0), LoadHtmlType.Source_Code);
}
//将HTML文件转换为字符串
public static String HtmlToString(String filePath) throws IOException {
String path = filePath;
File file = new File(path);
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
StringBuilder stringBuilder = new StringBuilder();
String temp = "";
while ((temp = bufferedReader.readLine()) != null) {
stringBuilder.append(temp + "\n");
}
bufferedReader.close();
String str = stringBuilder.toString();
return str;
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请 该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。 获取有效期 30 天的临时许可证。