微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 python 中使用 ghostscript 和 facturx 库创建符合 factur-x PDF/A-3 (Zugferd)

如何解决在 python 中使用 ghostscript 和 facturx 库创建符合 factur-x PDF/A-3 (Zugferd)

首先,我阅读了此处的文档 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

    enter image description here

然后我在 python 中使用 facturx 库来生成 RE.__2021_0002_factur-x_embedded.pdf 发票,其中嵌入了 factur-x.xml 然后我使用了 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

enter image description here

并且在执行此命令后它也丢失了嵌入的 factur-x.xml。

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

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

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

谢谢。

解决方法

在阅读我的回答之前,还请考虑查看@KenS 对我的问题的评论。 感谢@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

解决的

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?