正如我们在之前的博客文章中提到的,2025年将对ZUGFeRD和电子发票来说是非常关键的一年。考虑到这一点,我们如何才能保持领先,并确保我们具备创建ZUGFeRD PDF所需要的能力和工具?
全过程请参考为什么选择 Ghostscript 生成 PDF?本文假定你已经熟悉ZUGFeRD格式及其用途,如果需要回顾,请查看理解ZUGFeRD:电子发票的未来
Ghostscript 是一个功能强大的开源工具,用于处理 PDF 和 PostScript 文件。它已经开发了三十多年,并且在这段时间里被移植到多个不同的平台上。它支持 PDF 和 PostScript 文件的渲染、转换以及管理。
许多公司使用Ghostscript作为自动化文档处理流程的一部分,因为可以编写脚本来执行例如文档转换、添加水印或从PDF中提取页面等操作。
Ghostscript在生成符合ZUGFeRD标准的PDF文件(一种电子发票标准)中的作用Ghostscript 在生成符合长期存档和电子发票标准(如 ZUGFeRD 和 Factur-X)要求的合规 PDF/A 文档方面发挥重要作用。这确保企业能够创建符合存档和电子发票标准的 PDF 文档。
Ghostscript的灵活性和多功能性、处理复杂的PDF和PostScript任务的能力及其开源性质,使其成为文档处理中软件行业的重要工具。
指南如何: 第一步:创建符合 PDF/A 标准的 PDF 文件第一步是确保输入的PDF符合PDF/A标准。PDF/A是专门为长期存档的数字文档设计的PDF格式的特殊版本。其主要目的是确保文档在未来能够准确再现,保持其视觉外观和结构。
PDF/A 的关键特性:- 自包含: PDF/A 文件必须是 自包含 的,这意味着所有用于显示文档的元素(如字体、图像和颜色配置文件)都内嵌于 PDF 文件内部。这确保文档在不同的软件、硬件或操作系统中保持一致。
- 无外部依赖: PDF/A 禁止使用可能会使文档依赖于外部资源的某些功能。例如,JavaScript 、音频/视频内容 和 外部链接 不被允许,因为它们会妨碍将来准确再现文档。
- ISO 标准: PDF/A 是一个 ISO 标准化 的格式,其标准在 ISO 19005 下发布。这使得它对于需要严格遵守法规和标准的文档保存行业,比如法律、政府和档案管理领域,非常适用。
Ghostscript 很有用,可以确保你的输入 PDF 符合合规要求,并且可以通过命令行参数生成合规的 PDF。
-dPDFA=3
这指示 Ghostscript 使用 PDF/A 标准的第 3 版——该版本允许在 PDF 中嵌入文件,并且显然我们需要将 XML 发票数据嵌入到 PDF 中,因此这是必要的。有关详细信息,请参阅 Ghostscript 创建 PDF/A 文件的文档。
第二步:准备发票所需的 XML 数据Ghostscript本身并不会验证ZUGFeRD格式的XML模式,而是会假设你提供的发票XML文件是符合规范的。因此,你应该确保你提供的XML文件格式正确无误。
ZUGFeRD XML 有一个结构,将数据组织成表示关键信息的元素,例如:等等。
- 发票抬头信息: 包含发票的一般信息,如发票号码、日期、币种及相关文件。
- 涉及方: 交易中卖方、买方及任何中间人的详细信息,包括地址、联系方式及税务登记号码。
- 明细项: 列出所提供的商品或服务的详细信息,包括描述、数量、单价及适用的税费。
- 税费明细: 指明税额及类型(如增值税),提供应付总额明细。
- 付款说明: 如何结清发票的说明,包括银行账户详情和付款条款。
一个简单的 XML 结构片段可能看起来像这样:
<rsm:crossindustryinvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100">
<rsm:exchangeddocumentcontext>
<ram:guidelinespecifieddocumentcontextparameter>
<ram:id>ZUGFeRD</ram:id>
</ram:guidelinespecifieddocumentcontextparameter>
</rsm:exchangeddocumentcontext>
<rsm:exchangeddocument>
<ram:id>INV-12345</ram:id>
<ram:issuedatetime>
<udt:datetimestring format="102">20231003</udt:datetimestring>
</ram:issuedatetime>
</rsm:exchangeddocument>
<rsm:supplychaintradetransaction>
<!-- Line item details go here -->
</rsm:supplychaintradetransaction>
</rsm:crossindustryinvoice>
参考:https://www.mustangproject.org/zugferd/,这里有示例 PDF,其 XML 内容如下:https://www.mustangproject.org/files/ZUGFeRD-invoice.xml。本文不会深入讨论这里的 XML 电子发票细节。
所以假设你已经拥有符合规范的XML文件,并准备将其嵌入到你的PDF文档中,然后继续下一步操作。
步骤 3:将 XML 数据嵌入并生成 ZUGFeRD PDF 文件这里就是多年来您对Ghostscript开发投入的知识、开源贡献和时间发挥作用的地方。我们准备了一个命令行工具,该工具引用了一个准备好的PostScript文件(zugferd.ps),帮你完成了繁重的任务,并确保一切都准备好了,尽可能简化了整个过程。
💡 请注意一下:请确保使用 Ghostscript 版本 10.03.01 或者使用仓库中的最新版本,因为 Ghostscript 10.04.0 中的 zugferd.ps 文件有 bug。因此,请务必遵循此建议。
假设你将以下文件放入 /usr/home/me/zugferd/
,这些文件:
zugferd.ps,(这个方便的PostScript文件可以用来处理命令)
default_rgb.icc (一个 ICC 颜色配置)
invoice.xml
(你上一阶段创建或获取的文件)
接下来我们执行这条命令。
gs
--permit-file-read=/usr/home/me/zugferd/
-sDEVICE=pdfwrite
-dPDFA=3
-sColorConversionStrategy=RGB
-sZUGFeRDXMLFile=/usr/home/me/zugferd/invoice.xml
-sZUGFeRDProfile=/usr/home/me/zugferd/default_rgb.icc
-o /usr/home/me/zugferd/output.pdf
/usr/home/me/zugferd/zugferd.ps
/usr/home/me/zugferd/input.pdf
让我们快速看看这里都在说什么:
运行 Ghostscript:
gs
[^1]
[^1]: gs
通常指的是“好东西”(good stuff)。
给需要读取的文件夹授予权限。
--permit-file-read=/usr/home/me/zugferd/
选择一个设备生成PDF。
-sDEVICE=pdfwrite
(PDF写入设备)
设定 PDF 的 A 版本:
-dPDFA=3
# 这是一个命令或参数,通常用于技术上下文中,表示生成符合PDF/A-3标准的PDF文档。
设定颜色转换:
-sColorConversionStrategy=RGB
设置发票XML文件的路径:
-sZUGFeRDXMLFile=/usr/home/me/zugferd/invoice.xml # 这里是ZUGFeRD XML文件路径
设置ICC配置文件路径:
-sZUGFeRDProfile=/usr/home/me/default_rgb.icc
指定输出文件:
-o /usr/home/me/zugferd/output.pdf
定义到zugferd.ps PostScript 文件的路径为:
路径:/usr/home/me/zugferd/zugferd.ps
设置PDF文件路径:
/usr/home/me/zugferd/input.pdf
(此处为文件路径示例:/usr/home/me/zugferd/input.pdf
)
注意,对于 -sZUGFeRDVersion
和 -sZUGFeRDConformanceLevel
还有更多的选项,这些选项有合理的默认设置,但你可以在 Ghostscript ZUGFeRD 文档 中了解更多详细信息。
一旦运行命令,一切顺利,你将会有个名为“output.pdf”的ZUGFeRD PDF文件(ZUGFeRD是一种电子发票标准)准备就绪!
验证一下您的 ZUGFeRD PDF有几种方便用户的验证选项可供寻求基于服务解决方案的企业使用,不过需要先注册。用户可以上传PDF/A-3文件或XML格式,直接验证ZUGFeRD发票内容。
- Truugo(ZUGFeRD验证工具)
- Invoice-Portal(PEPPOL BIS X-Rechnung验证工具)
或者你可以使用Artifex的命令行工具mutool(或简称mutool)对ZUGFeRD进行基本验证:
运行命令:mutool info -Z
(例如:input.pdf
)
ZUGFeRD:统一的跨境发票参考数据模型,Ghostscript:一个开源的PostScript和PDF处理工具。
使用 Ghostscript 作为您解决方案的一部分可以带来以下好处:
- ZUGFeRD 和 Ghostscript 帮助企业符合欧盟和国际的电子发票标准。
- 减少在与政府和大型企业客户合作时的合规风险。
- 该解决方案灵活,既适合需要简单方案的小型企业,也适合需要处理大量发票的大型企业。
如果你需要建立一个面向未来的电子发票系统,那么Ghostscript提供的功能提供了一个强大且符合规定的现代电子发票解决方案,总之。
希望这篇“如何”系列博客能介绍如何用Ghostscript生成电子发票,如果有任何问题,请随时在Ghostscript Discord频道联系我们。
共同学习,写下你的评论
评论加载中...
作者其他优质文章