XRechnung可视化转换器PDF生成失败问题求助
生成的PDF无法打开问题排查及解决
问题概况
已安装Java和Ant,进入xrechnung-visualization目录执行以下命令后,生成的PDF无法被Adobe Acrobat打开,提示Adobe Acrobat无法打开myFile.pdf,因为它不是支持的文件类型或文件已损坏...,但生成HTML功能正常。执行的命令如下:
cd xrechnung-visualization ant
java -jar lib/saxon-he-10.6.jar -s:path/to/Rechnung.xml -xsl:src/xsl/ubl-invoice-xr.xsl -o:out/Rechnung.xr
java -jar lib/saxon-he-10.6.jar -s:out/Rechnung.xr -xsl:src/xsl/xr-pdf.xsl -o:out/Rechnung.pdf
排查方向及解决步骤
1. 检查中间文件Rechnung.xr的有效性
HTML生成正常说明前一步XML转XR的流程没问题,但仍建议打开out/Rechnung.xr文件,确认其是完整的XML结构,无语法错误或内容截断。如果XR文件损坏,后续转PDF必然失败。
2. 确认Saxon HE的PDF生成限制
Saxon HE版本本身不支持直接输出PDF,它仅能处理XSLT生成XSL-FO格式文件。如果xr-pdf.xsl的作用是生成XSL-FO而非直接输出PDF,那当前得到的Rechnung.pdf其实是FO文件,并非真正的PDF,所以Adobe无法识别。
解决方法是引入Apache FOP(FO处理器)完成FO到PDF的转换:
# 先生成XSL-FO文件 java -jar lib/saxon-he-10.6.jar -s:out/Rechnung.xr -xsl:src/xsl/xr-pdf.xsl -o:out/Rechnung.fo # 再用FOP转换为PDF java -jar lib/fop.jar -fo out/Rechnung.fo -pdf out/Rechnung.pdf
注意需确保xrechnung-visualization/lib目录下有fop.jar,若没有需自行下载对应版本放入。
3. 检查命令执行的报错信息
重新执行转PDF的命令,仔细查看控制台输出是否有错误提示(比如XSLT语法错误、依赖缺失、文件路径不存在等),这些细节往往能直接定位问题。
4. 验证文件路径与权限
- 确认
path/to/Rechnung.xml是正确的相对或绝对路径,避免因源文件找不到导致生成的XR或PDF不完整。 - 确保
out目录存在且有写入权限,防止文件因权限问题无法完整生成。
5. 尝试用其他工具测试PDF
先用Chrome、Edge等浏览器或Foxit Reader尝试打开生成的文件,如果能正常打开,说明文件本身是有效的PDF,只是Adobe Acrobat的兼容问题,建议更新Adobe到最新版本,或重置其偏好设置。
内容的提问来源于stack exchange,提问作者mensur
相关产品推荐
相关产品推荐

