[悬赏 5000] java 中如何将一个 html 文件转换成一个 pdf
我有一个html文件report.html.zip
想将他转换成一个pdf文件
目前试过以下五种方案 都以失败告终
- Flying Saucer
- openhtmltopdf
- openpdf
- aspose-pdf
- pd4ml
有可能是我这个html文件里面许多样式都是生成的并且包含许多js导致解析失败
悬赏5000,大佬们求求了
"我有一个html文件[链接] 想将他转换成一个pdf文件 目前试过以下五种方案 都以失败告终 Flying Saucer openhtmltopdf openpdf aspose-pdf pd4ml 有可能是我这个html文件里面许多样式都是生成的并且包含许多js导致解析失败 悬赏5000,大佬们求 ...."
我有一个html文件report.html.zip
想将他转换成一个pdf文件
目前试过以下五种方案 都以失败告终
有可能是我这个html文件里面许多样式都是生成的并且包含许多js导致解析失败
悬赏5000,大佬们求求了
https://onlineconvertfree.com/zh/convert-format/html-to-pdf/%E7%9B%B4%E6%8E%A5%E8%BD%AC
/**
* 将html转换成pdf
*/
public static File htmlToPdf(String fileName, String html) throws IOException, DocumentException {
File file = new File(fileName);
if (!file.getParentFile().exists()) { //如果文件的目录不存在
file.getParentFile().mkdirs(); //创建目录
}
FileOutputStream outputStream = new FileOutputStream(fileName);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(html);
// 解决中文支持问题
ITextFontResolver fontResolver = renderer.getFontResolver();
//fontResolver.addFont("font/simfang.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
fontResolver.addFont("font/msyh.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
fontResolver.addFont("font/msyhbd.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
renderer.layout();
renderer.createPDF(outputStream);
outputStream.close();
return file;
}
你这个html大量内容是运行时js解析后生成的,所以对于java解析html并且输出pdf来说,是不好做到的,因为java只会用xml形式解析静态html标签,解析不到运行时生成内容。
一个建议是使用chrome无头模式命令行,打印为pdf。
例如:
https://blog.csdn.net/mengting2040/article/details/113108538
网上找的教程,没试过
https://blog.51cto.com/u_15127528/4518228#:~:text=windows%E7%9B%B4%E6%8E%A5%E4%BD%BF%E7%94%A8%EF%BC%9A%E5%8F%AA%E8%A6%81%E5%9C%A8windows%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%AD%E8%BE%93%E5%85%A5c%3Awkhtmltopdf.exe+my.oschina.net%2Fpapio%2Fblog%2F%E2%80%A6+c%3Ablog.pdf+%E5%B0%B1%E5%8F%AF%E4%BB%A5%E6%8A%8A%E8%BF%99%E7%AF%87%E6%96%87%E7%AB%A0%E8%BD%AC%E6%88%90pdf%EF%BC%8C%E5%B9%B6%E4%BF%9D%E5%AD%98%E5%88%B0C%E7%9B%98%E6%A0%B9%E7%9B%AE%E5%BD%95%E3%80%82,java%E8%B0%83%E7%94%A8%EF%BC%9Ajava%E4%B8%AD%E8%B0%83%E7%94%A8wkhtmltopdf%E7%9A%84%E5%91%BD%E4%BB%A4Runtime.getRuntime+%28%29.exec+%28%22c%3Awkhtmltopdf.exe+my.oschina.net%2Fpapio%2Fblog%2F%E2%80%A6+c%3Ablog.pdf%22%29%E5%B0%B1%E5%8F%AF%E4%BB%A5%E5%AE%9E%E7%8E%B0%E8%BD%AC%E6%8D%A2%E3%80%82
如果手转直接Ctrl+P另存为PDF
已经擅自做主将这个功能砍掉