跳到主要内容

使用 Power Automate 从 Dropbox PDF + XML 创建 ZUGFeRD 发票:5 个步骤的工作流程

· 阅读需 21 分钟
SEO and Content Writer

德国的 《增长机会法案》 将 ZUGFeRD 式混合电子发票从“锦上添花”变成了 B2B 的必备功能。 2025年1月1日 所有德国企业都必须能够接收结构化的电子发票,完整的发送义务将分阶段实施。 2028对于任何 Microsoft 365 团队来说,最快的路径是包含五个步骤的 Power Automate 流程: 手动触发 → Dropbox 获取文件内容(PDF) → Dropbox 获取文件内容(XML) → PDF4me 创建 ZUGFeRD 发票 → Dropbox 创建文件XML有效负载嵌入在 PDF/A-3 归档外壳,生成一个供人打开并由会计系统解析的文件。本教程使用画布中捕获的原始屏幕截图: /pdf4metest/sample/10 page.pdf 对于视觉载体和 /pdf4metest/zugfred invoice/version2.xml 对于结构化数据,混合输出结果将落在 /pdf4meoutput 使用唯一的 GUID 前缀名称。10 分钟内即可投入生产环境。

流程概览
1. Manually trigger a flow
Manual trigger for testing. Swap for SharePoint When a file is created, Dropbox When a file is created, or any storage trigger in production.
2. Dropbox Get file content (PDF)
Reads the visual carrier from /pdf4metest/sample/10 page.pdf with Infer Content Type Yes. This is the PDF the recipient sees.
3. Dropbox Get file content (XML)
Reads the structured ZUGFeRD XML from /pdf4metest/zugfred invoice/version2.xml with Infer Content Type Yes. This is what accounting systems parse.
4. PDF4me Create ZUGFeRD Invoice
Combines both inputs as 2.0-XML format, XmlWithPdf output mode, BASIC conformance, Render Invoice on PDF Yes, Language de. Embeds the XML inside a PDF/A-3.
5. Dropbox Create file
Writes the hybrid file to /pdf4meoutput with guid()+headers/FileName so reruns never collide.
简短版

两个 Dropbox 获取文件步骤,一个 PDF4me 操作,一个 Dropbox 创建文件步骤。PDF 文件是人类可读的载体;XML 文件是机器可读的数据。PDF4me 将两者封装成一个 PDF/A-3 混合文件,满足 2025 年德国 B2B 电子发票的要求。无需编写代码,无需桌面工具,也无需 Java SDK。

基于“为什么”的问答

为什么是 ZUGFeRD? 因为欧盟范围内的电子发票规则和德国的 《增长机会法案》 强制要求B2B企业使用结构化发票。ZUGFeRD是一种混合格式,可以同时满足双方的需求:用户可以获得普通的PDF文件,而应付账款系统和ERP系统则可以在同一文件中读取嵌入的结构化XML文件。一份文件,两种阅读方式。

为什么需要两个获取文件内容的步骤? 一个函数获取作为载体外壳(收件人打开的页面)的可视化 PDF 文件;另一个函数获取作为嵌入载体内部的附件的结构化 ZUGFeRD XML 文件。这两个函数都以 PDF 格式创建 ZUGFeRD 发票。 PDF 文件内容,XML格式 发票 XML 数据

为什么组合下拉菜单中会显示“2.0-XML”? 根据德国 2025 年的强制性要求,必须使用 ZUGFeRD 2.0 或更高版本(旧版 1.0 不符合要求)。“-XML”后缀告知连接器您的发票有效负载已采用 ZUGFeRD XML 格式。选择 2.0-JSON 或者 2.0-CSV 对于结构化数据源;连接器在嵌入之前将其转换为模式。

为什么 XmlWithPdf 而不是 XmlOnly XmlWithPdf 返回标准的 ZUGFeRD 混合格式:一个 PDF/A-3 文件,其中包含 XML 文件。 XmlOnly 仅返回 XML 文件。大多数出站发票场景都会发送混合文件,因为客户希望打开 PDF 文件;XmlOnly 用于 ERP 系统之间的直接数据传输。


您将获得

输入: 一份 10 页的发票 PDF 文件(视觉载体)和一个 ZUGFeRD XML 文件(结构化数据)。 输出: 生成一个包含嵌入 XML 的 PDF/A-3 文件,符合 EN 16931 标准,满足 BASIC 合规性要求,可直接通过电子邮件发送给客户、存档到 SharePoint 或发布到您的 ERP 系统。Dropbox 创建文件步骤会将文件写回。 /pdf4meoutput 独特的 guid() + headers/FileName 命名是为了避免并发运行发生冲突。


你需要什么

  • 动力自动化打开 Power Automate创建新的云流(即时或自动)。
  • PDF4me API密钥获取您的 API 密钥添加“创建 ZUGFeRD 发票”时,请将其连接。首次使用?请参阅 将 PDF4me 连接到 Power Automate
  • Dropbox (或 SharePoint、OneDrive)。用于存放源 PDF 文件、ZUGFeRD XML 文件和输出文件夹。本教程全程使用 Dropbox。
  • ZUGFeRD XML 文件符合 EN 16931 标准。该仓库包含一个入门示例。 ZUGFeRD-invoice-sample-2.0.xml重命名为 version2.xml 如果你想完全复制屏幕截图。

流程概览

  1. 手动触发流程 (或者 创建文件时 (在 Dropbox 中用于自动化)。
  2. Dropbox 获取文件内容 载体 PDF(/pdf4metest/sample/10 page.pdf)。
  3. Dropbox 获取文件内容 对于 ZUGFeRD XML(/pdf4metest/zugfred invoice/version2.xml)。
  4. PDF4me 创建 ZUGFeRD 发票2.0-XMLXmlWithPdfBASIC,渲染开启,语言 de
  5. Dropbox 创建文件/pdf4meoutputguid() + headers/FileName 为了生成无冲突的输出名称。

完整流程概述

Power Automate 画布展示了包含五个操作的 ZUGFeRD 流程:手动触发流程、获取文件内容(PDF)、获取文件内容 1(XML)、创建 ZUGFeRD 发票、创建文件——所有操作均垂直连接,并带有 Dropbox 和 PDF4me 图标。

从上到下共五个步骤。每个 Dropbox 操作都会显示蓝色的文件内容图标;PDF4me 的“创建 ZUGFeRD 发票”操作位于中间。两个“获取文件”输出都指向同一个 PDF4me 操作;PDF4me 的“文件内容”输出则指向“创建文件”操作。


步骤 1:触发流程

  1. 动力自动化, 点击 + 创建, 挑选 瞬间云流
  2. 给它起个名字 Create ZUGFeRD Invoice from Dropbox, 选择 手动触发流程, 点击 创造
  3. 一旦你把活动部件的线路连接好,你就可以更换扳机了。 创建文件时 在 Dropbox 中(/pdf4metest/zugfred invoice/因此,每个新的 XML 文件都会自动触发运行。后续操作相同,无需重新构建。

步骤 2:从 Dropbox 获取运营商 PDF 文件

目前为止的流程: 触发器 → 获取文件内容(PDF)。

  1. 点击 + 新步骤搜索 Dropbox, 挑选 使用路径获取文件内容如果系统提示,请登录您的 Dropbox 帐户。
  2. 文件/pdf4metest/sample/10 page.pdf这是您的客户打开的电子发票。
  3. 高级参数推断内容类型是的 (Power Automate 使用文件扩展名和字节数来标记内容类型,以便 PDF4me 知道它是 PDF 数据)。
  4. 保存。输出 文件内容 在步骤 4 中成为 ZUGFeRD 嵌入的源 PDF。

获取文件内容(PDF):配置

获取文件内容操作,文件设置为 /pdf4metest/sample/10 page.pdf,高级参数中的“推断内容类型”设置为“是”,已连接到 Dropbox。

运营商 PDF /pdf4metest/sample/10页.pdf.推断内容类型是返回干净的 PDF 字节,PDF4me 可以将其包装成 PDF/A-3。


步骤 3:从 Dropbox 获取 ZUGFeRD XML 文件

目前为止的流程: 获取文件内容(PDF)→ 获取文件内容(XML)。

  1. 点击 + 新步骤再添加一个 Dropbox → 使用路径获取文件内容将其重命名为 获取文件内容 1 (Power Automate 会自动执行此操作),因此这两个 Dropbox 操作是可以区分的。
  2. 文件/pdf4metest/zugfred invoice/version2.xml这是符合 EN 16931 标准的 ZUGFeRD XML 有效负载。
  3. 高级参数推断内容类型是的
  4. 保存。输出 文件内容 成为结构化的发票数据,PDF4me 将将其嵌入到 PDF/A-3 混合格式中。

获取文件内容(XML):配置

获取文件内容 1 操作,文件设置为 /pdf4metest/zugfred invoice/version2.xml,高级参数中的“推断内容类型”设置为“是”,已连接到 Dropbox

ZUGFeRD XML 有效负载 /pdf4metest/zugfred invoice/version2.xml该文件位于 ZUGFeRD 2.0 EN 16931 标准下;选择 2.0-XML 在下一个动作中与之匹配。

给个小费。 嵌入前需要验证 XML?请添加 撰写 步骤 3 和步骤 4 之间的操作并进行检查 文件内容 在运行历史记录中。ZUGFeRD XML 始终以 <?xml version="1.0" 并且包含一个 跨行业发票 2.x 有效载荷的根目录。


步骤 4:创建 ZUGFeRD 发票

目前为止的流程: 触发器 → PDF → XML → 创建 ZUGFeRD 发票。

  1. 点击 + 新步骤, 搜索 PDF4me, 挑选 创建 ZUGFeRD 发票如果您之前没有连接过,请使用您的 PDF4me API 密钥登录。
  2. ZUGFeRD 版本和输入格式2.0-XML组合下拉菜单可以一次性选择规范版本(2.0)和数据格式(XML)。“2.0”前缀符合2025年德国B2B规范的要求。
  3. 输出模式XmlWithPdf返回包含 XML 附件的规范 PDF/A-3 混合文件。
  4. 发票 XML 数据文件内容获取文件内容 1 (XML 步骤)。仅映射此步骤。不要填充 JSON 或 CSV 字段。
  5. 符合性级别BASIC入门级套餐,包含明细项目和税费明细,兼容最广泛的接收器。只有在接收器确认支持后,才能升级到舒适版或扩展版。
  6. 以 PDF 格式渲染发票YesPDF4me 会使用您的数据在承运商 PDF 上重新绘制发票内容,以便可见页面和嵌入的 XML 保持同步。
  7. 文件内容文件内容获取文件内容 (PDF步骤)。这是载体外壳。
  8. 文件名abc.pdf (或您的实际源文件名)。用于跟踪上下文。
  9. 高级参数语言de (德国标签)。其他可接受的代码: en, fr, it, es, nl, pl, pt, cs
  10. 节省。

创建 ZUGFeRD 发票:配置

必填核心字段
  • ZUGFeRD 版本和输入格式2.0-XML
  • 输出模式XmlWithPdf
  • 发票 XML 数据:从 XML 步骤获取文件内容
  • 符合性级别基本的
  • 以 PDF 格式渲染发票是的
  • 文件内容:从 PDF 步骤获取文件内容
  • 文件名abc.pdf
高级参数
  • 语言 (德语,默认)
  • 已接受: of, in, fr, it, es, nl, pl, pt, cs
  • XML 保持语言中立;只有 PDF 上绘制的标签才使用此区域设置。

你会实际用到的三种组合。 2.0-XML 当您的上游系统已经发出 ZUGFeRD XML 时。 2.0-JSON 当您的计费平台使用 JSON 格式,并且您希望 PDF4me 将其转换为 ZUGFeRD 模式时。 2.0-CSV 用于从电子表格和会计工具中批量导出数据。这三种方法都会生成相同的混合输出;区别仅在于您提供的数据格式。


步骤 5:将混合 PDF 文件保存回 Dropbox

目前为止的流程: PDF → XML → 创建 ZUGFeRD 发票 → 创建文件。

  1. 点击 + 新步骤。 搜索 Dropbox, 挑选 创建文件
  2. 文件夹路径/pdf4meoutput
  3. 文件名guid() + headers/FileName (来自“创建 ZUGFeRD 发票”)。有两种填写方式:
    • 表达concat(guid(), '_', outputs('Create_ZUGFeRD_Invoice')?['headers']?['FileName'])或者更简单地说:
    • 动态内容: 类型 guid() 首先(表达式选项卡),然后添加 headers/FileName 来自 PDF4me 操作输出。
  4. 文件内容文件内容创建 ZUGFeRD 发票
  5. 节省流量。

创建文件(Dropbox):配置

创建 Dropbox 文件操作,文件夹路径为 /pdf4meoutput,文件名设置为 guid() 表达式,后跟来自 PDF4me 操作的 headers/FileName 动态内容,文件内容映射自 PDF4me 输出,并已连接到 Dropbox。

输出已写入 /pdf4me输出 使用以 GUID 为前缀的名称。GUID 可确保并行运行无冲突; 标头/文件名 部分保留了人类可读的后缀。


运行流程并验证

  1. 点击 测试 在右上角,选择 手动, 点击 测试, 然后 运行流程
  2. 几秒钟后,每个操作都会显示一个绿色对勾。
  3. 打开 Dropbox /pdf4meoutput新文件匹配 <guid>_<filename>.pdf
  4. 下载该文件。使用任何 PDF 查看器打开即可查看发票。使用任何支持 ZUGFeRD 的应付账款工具打开(或使用支持 ZIP 的工具解压缩)即可查看嵌入内容。 factur-x.xml / zugferd.xml 依恋。

你实际生产了什么? A PDF/A-3 带有存档 PDF 的 嵌入式 ZUGFeRD 2.0 EN 16931 XML 文件。PDF 的页数和视觉内容与原始的 10 页发票一致(因为 以 PDF 格式渲染发票 答案是“是”。其中的 XML 符合德国 B2B 规范的结构化数据要求。一个文件,两个读取器。


ZUGFeRD vs Factur-X vs XRechnung 30 秒对比

格式它的使用场景输出类型
ZUGFeRDGermany B2B, EU buyersHybrid PDF/A-3 + embedded XML (this blog)
Factur-XFrance, sister format technically identical to ZUGFeRD 2.xHybrid PDF/A-3 + embedded XML
XRechnungGerman public sector (federal, state, municipal)Strict pure-XML profile

您刚刚构建的流程生成的是 ZUGFeRD;切换到 Factur-X 工作流,无需任何更改(同一个混合文件在莱茵河两岸均可使用)。对于德国公共部门的发票,如果接收方要求纯 XML,请将一致性级别替换为与 XRechnung 一致的配置文件。


无需重建即可添加的常见变体

使用 JSON 或 CSV 源,而不是 XML
交换步骤 3 以获取 a .json 或者 .csv 文件。将组合下拉菜单更改为 2.0-JSON 或者 2.0-CSV映射匹配项 发票 JSON 数据 或者 发票 CSV 数据 字段。PDF4me 在嵌入之前将其转换为 ZUGFeRD 模式。
SharePoint 而不是 Dropbox
用以下方式替换 Dropbox 连接器 SharePoint 使用路径获取文件内容SharePoint 创建文件字段映射相同;仅连接器权限发生变化。同样适用于 OneDrive for Business 或 Azure Blob 存储。
Outlook 发送文件(而不是创建文件之后)
添加 Outlook 发送电子邮件(V2) 包含客户地址。地图 文件内容 作为附件内容和 concat('Invoice-', utcNow(), '.pdf') 作为附件名称。客户将直接收到混合发票。
存档前请验证 PDF/A 文件
PDF4me 验证 PDF/A 步骤 4 之后,如果验证通过,则写入长期存档;如果验证失败,则跳转到 Teams 警报。为对合规性要求较高的工作流程提供双重保障。

解决实际错误

选择了 1.0-XML,强制执行失败的输出

ZUGFeRD 1.0 不符合 2025 年德国 B2B 指令的要求。如果您的输出必须符合指令,请始终选择…… 2.0-* 在组合下拉菜单中选择组合选项。

发票 XML 数据和发票 JSON 数据均已填充

仅映射与下拉列表选项匹配的那个。Power Automate 不会阻止您同时填写两个,但操作运行时会抛出验证错误。其他格式字段留空即可。

关闭“渲染发票(PDF)”选项,且不显示预渲染图像。

以 PDF 格式渲染发票 关闭后,PDF4me 会嵌入 XML,但不会重新绘制发票内容。您发送的承运商 PDF 文件 文件内容 保持不变。仅当您的承运商 PDF 文件已显示发票内容时才关闭此功能。

扩展请求被接收方拒绝

EXTENDED 标准在 EN 16931 标准的基础上增加了行业特定字段,但会被针对基线标准调谐的接收器拒收。从以下标准开始: 基本的 用于兼容性测试;只有在买方或 ERP 确认支持后才能升级。


后续步骤

在 Power Automate 中,任何文档自动化都适用相同的五步模式:触发、获取输入、运行 PDF4me 操作、写入结果。一旦完成一次部署,后续部署的成本几乎为零。