使用Ghostscript生成Factur-X格式PDF时XML文件无法嵌入
解决Ghostscript嵌入XML生成Factur-X PDF失败的问题
检查PDFA_def.ps的嵌入配置
要在
PDFA_def.ps里正确定义XML附件参数,关键代码得包含:/FacturXMetadata << /Type /Metadata /Subtype /XML /AFRelationship /Data /F (factur-x.xml) /UF (factur-x.xml) /Desc (Factur-X Invoice Metadata) >> def /PDFXMetadata FacturXMetadata def注意
/F和/UF得指向XML文件的绝对路径,别用相对路径,不然Ghostscript可能找不到文件。确认在
pdfa_def.ps的/OutputIntents配置之后,加上附件调用的逻辑:/DOCINFO pdfmark [ /Subtype /XML /Name (Factur-X) /AFRelationship /Data /F (factur-x.xml) /UF (factur-x.xml) pdfmark
验证Ghostscript命令参数
- 调用Ghostscript时,得明确指定
pdfa_def.ps的路径,同时启用PDF/A-3相关参数:
重点:gs -dPDFA=3 -dPDFACompatibilityPolicy=1 -sOutputFile=output_facturx.pdf -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sColorConversionStrategy=UseDeviceIndependentColor -sPDFA_def=/path/to/PDFA_def.ps input.pdf-dPDFA=3是强制生成PDF/A-3,-sPDFA_def必须指向正确的配置文件路径。
对比元数据差异
- 用pdftk或qpdf这类工具提取合规Factur-X PDF和自己生成的PDF的元数据做对比:
pdftk compliant.pdf dump_data output compliant_metadata.txt pdftk your_output.pdf dump_data output your_metadata.txt - 重点查这几个元数据项:
InfoKey: Metadata有没有XML附件的引用InfoKey: AF(附件关联)里是否存在Factur-X条目InfoKey: UF是否正确指向XML文件名
确认XML文件合规性
- 要保证XML文件符合Factur-X的EN 16931 schema规范,别因为文件格式错了导致Ghostscript跳过嵌入。
- 可以用Factur-X验证工具检查XML的有效性,排除语法或结构错误。
内容的提问来源于stack exchange,提问作者oliver
相关产品推荐
相关产品推荐

