【问题标题】:Using ghostscript and facturx library in python to create factur-x PDF/A-3 compliant (Zugferd)在 python 中使用 ghostscript 和 facturx 库创建符合 factur-x PDF/A-3 的 (Zugferd)
【发布时间】:2021-06-13 21:20:39
【问题描述】:

首先我在这里阅读了Creating a ZUGFeRD pdf 的文档,以获得符合 Zugferd PDF/A-3 pdf 的文档:

  1. 创建了一个自定义 .ps,您可以在此处查看它 PDFA_def.ps,如 Zugferd 文档中所述,并使用此颜色配置文件 sRGB.icc
  2. 我想将此 pdf 发票(示例)RE.__2021_0002.pdf 转换为符合 PDF/A-3 的格式
  3. 为了将此示例发票转换为符合 Zugferd PDF/A-3 标准,我使用了 ghostscript gs -dBATCH -dNOSAFER --permit-file-read=${PWD} -sDEVICE=pdfwrite -dPDFA=3 -sColorConversionStrategy=RGB -sPDFACompatibilityPolicy=1 -sZUGFeRDXMLFile=${PWD}/factur-x.xml -sOutputICCProfile=${PWD}/sRGB.icc -sOutputFile=${PWD}/RE.__2021_0002_pdf3a.pdf ${PWD}/PDFA_def.ps ${PWD}/RE.__2021_0002.pdf 中的此命令
  4. 我使用veraPDF 检查生成的 pdf 文件是否符合 PDF/A-3,但它表明它不符合 PDF/A-3

然后我在 python 中使用 facturx 库来生成包含内嵌factur-x.xml的RE.__2021_0002_factur-x_embedded.pdf发票,然后我使用ghostscript中的这个命令将其转换为符合PDF/A-3的gs -dPDFA=3 -dBATCH -dNOPAUSE -dNOOUTERSAVE -dUseCIEColor -sProcessColorModel=DeviceCMYK -sDEVICE=pdfwrite -sPDFACompatibilityPolicy=1 -sOutputFile=RE.__2021_0002_factur-x_embedded_pdf3a.pdf RE.__2021_0002_factur-x_embedded.pdf

但不幸的是,生成的 pdf 不符合 PDF/A-3 并且在此命令之后它还丢失了嵌入的 factur-x.xml。

我在 StackOverflow 中检查了有关此主题的大部分问题,例如 here,并尝试了命令并阅读了 cmets,但它也不起作用。

更新: 生成的 pdf 与 PDF/A-3a 和 PDF/A-3b 都不兼容。

我需要知道如何正确使 pdf 发票符合 PDF/A-3 标准?

谢谢。

【问题讨论】:

  • 您已使用 Vera PDF 针对 PDF/A-3a 验证了 Ghostscript 生成的 PDF 文件。 Ghostscript 将不会生成“a”变体文件,只会生成“b”。因此,您需要对照 PDF/A-3b 进行验证。我无法评论 factur-x 库。
  • @KenS 感谢您的回复,它既不符合 PDF/A-3a 也不符合 PDF/A-3b
  • 你的命令行有一些问题;你已经指定了 -dNOSAFER 和 --permit-file-read,你不需要两者,我建议你不要使用 -dNOSAFER。您说您使用了-sPDFACompatibilityPolicy=1,但这会产生错误,因为它应该是-d 而不是-s。您的 pdfa_def.ps 文件显然没有给出它应该提供的 srgb.icc 的完全限定路径。您使用的是什么版本的 Ghostscript?我会先从 PDF/A3b 文件开始,然后担心 zugferd。如果我解决了上述问题,我会得到一个由 VeraPDF 验证的有效 PDF/A-3b 文件。
  • 哦,你也不应该指定 -sOutputICCProfile。使用 d:/temp 中的 srgb.icc,修改 pdfa_def.ps 以包含 srgb.icc 的路径和我的命令行:-sDEVICE=pdfwrite -o out.pdf -dPDFA=3 --permit-file-read=d: /temp/ -sColorConversionStrategy=RGB -dPDFACompatibilityPolicy=1 pdfa_def.ps "RE.__2021_0002 (1).pdf" 我得到一个有效文件。
  • @KenS 谢谢你,我想在你得到一个有效文件后问你,该文件是否包含内嵌的 factur-x.xml 文件?

标签: python ghostscript pdfa zugferd


【解决方案1】:

在阅读我的答案之前,还请考虑查看来自@KenS 的关于我的问题的 cmets。 感谢@KenS 的贡献! 我可以使用该命令将常规 pdf 转换为 PDF/A-3b,并且可以正常工作:

gs -dPDFA=3 -dBATCH -dNOPAUSE -dNOSAFER -sColorConversionStrategy=UseDeviceIndependentColor -sDEVICE=pdfwrite -dPDFACompatibilityPolicy=3 -sOutputFile=<outputfile> <inputfile>

根据@exa 的here 答案,我使用了-dPDFACompatibilityPolicy=3 所以对我来说,问题是通过使用选项 -sColorConversionStrategy=UseDeviceIndependentColor

解决的

【讨论】:

    猜你喜欢
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    相关资源
    最近更新 更多