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

德国的 《增长机会法案》 将 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 分钟内即可投入生产环境。
两个 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如果你想完全复制屏幕截图。
流程概览
- 手动触发流程 (或者 创建文件时 (在 Dropbox 中用于自动化)。
- Dropbox 获取文件内容 载体 PDF(
/pdf4metest/sample/10 page.pdf)。 - Dropbox 获取文件内容 对于 ZUGFeRD XML(
/pdf4metest/zugfred invoice/version2.xml)。 - PDF4me 创建 ZUGFeRD 发票 和
2.0-XML,XmlWithPdf,BASIC,渲染开启,语言de。 - Dropbox 创建文件 到
/pdf4meoutput和guid() + headers/FileName为了生成无冲突的输出名称。
完整流程概述

从上到下共五个步骤。每个 Dropbox 操作都会显示蓝色的文件内容图标;PDF4me 的“创建 ZUGFeRD 发票”操作位于中间。两个“获取文件”输出都指向同一个 PDF4me 操作;PDF4me 的“文件内容”输出则指向“创建文件”操作。
步骤 1:触发流程
- 在 动力自动化, 点击 + 创建, 挑选 瞬间云流。
- 给它起个名字
Create ZUGFeRD Invoice from Dropbox, 选择 手动触发流程, 点击 创造。 - 一旦你把活动部件的线路连接好,你就可以更换扳机了。 创建文件时 在 Dropbox 中(
/pdf4metest/zugfred invoice/因此,每个新的 XML 文件都会自动触发运行。后续操作相同,无需重新构建。
步骤 2:从 Dropbox 获取运营商 PDF 文件
目前为止的流程: 触发器 → 获取文件内容(PDF)。
- 点击 + 新步骤搜索 Dropbox, 挑选 使用路径获取文件内容如果系统提示,请登录您的 Dropbox 帐户。
- 文件。
/pdf4metest/sample/10 page.pdf这是您的客户打开的电子发票。 - 高级参数 → 推断内容类型。 是的 (Power Automate 使用文件扩展名和字节数来标记内容类型,以便 PDF4me 知道它是 PDF 数据)。
- 保存。输出 文件内容 在步骤 4 中成为 ZUGFeRD 嵌入的源 PDF。
获取文件内容(PDF):配置

运营商 PDF /pdf4metest/sample/10页.pdf.推断内容类型是返回干净的 PDF 字节,PDF4me 可以将其包装成 PDF/A-3。
步骤 3:从 Dropbox 获取 ZUGFeRD XML 文件
目前为止的流程: 获取文件内容(PDF)→ 获取文件内容(XML)。
- 点击 + 新步骤再添加一个 Dropbox → 使用路径获取文件内容将其重命名为 获取文件内容 1 (Power Automate 会自动执行此操作),因此这两个 Dropbox 操作是可以区分的。
- 文件。
/pdf4metest/zugfred invoice/version2.xml这是符合 EN 16931 标准的 ZUGFeRD XML 有效负载。 - 高级参数 → 推断内容类型。 是的。
- 保存。输出 文件内容 成为结构化的发票数据,PDF4me 将将其嵌入到 PDF/A-3 混合格式中。
获取文件内容(XML):配置

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 发票。
- 点击 + 新步骤, 搜索 PDF4me, 挑选 创建 ZUGFeRD 发票如果您之前没有连接过,请使用您的 PDF4me API 密钥登录。
- ZUGFeRD 版本和输入格式。
2.0-XML组合下拉菜单可以一次性选择规范版本(2.0)和数据格式(XML)。“2.0”前缀符合2025年德国B2B规范的要求。 - 输出模式。
XmlWithPdf返回包含 XML 附件的规范 PDF/A-3 混合文件。 - 发票 XML 数据。 文件内容 从 获取文件内容 1 (XML 步骤)。仅映射此步骤。不要填充 JSON 或 CSV 字段。
- 符合性级别。
BASIC入门级套餐,包含明细项目和税费明细,兼容最广泛的接收器。只有在接收器确认支持后,才能升级到舒适版或扩展版。 - 以 PDF 格式渲染发票。
YesPDF4me 会使用您的数据在承运商 PDF 上重新绘制发票内容,以便可见页面和嵌入的 XML 保持同步。 - 文件内容。 文件内容 从 获取文件内容 (PDF步骤)。这是载体外壳。
- 文件名。
abc.pdf(或您的实际源文件名)。用于跟踪上下文。 - 高级参数 → 语言。
de(德国标签)。其他可接受的代码:en, fr, it, es, nl, pl, pt, cs。 - 节省。
创建 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 发票 → 创建文件。
- 点击 + 新步骤。 搜索 Dropbox, 挑选 创建文件。
- 文件夹路径。
/pdf4meoutput。 - 文件名。
guid()+headers/FileName(来自“创建 ZUGFeRD 发票”)。有两种填写方式:- 表达:
concat(guid(), '_', outputs('Create_ZUGFeRD_Invoice')?['headers']?['FileName'])或者更简单地说: - 动态内容: 类型
guid()首先(表达式选项卡),然后添加headers/FileName来自 PDF4me 操作输出。
- 表达:
- 文件内容。 文件内容 从 创建 ZUGFeRD 发票。
- 节省流量。
创建文件(Dropbox):配置

输出已写入 /pdf4me输出 使用以 GUID 为前缀的名称。GUID 可确保并行运行无冲突; 标头/文件名 部分保留了人类可读的后缀。
运行流程并验证
- 点击 测试 在右上角,选择 手动, 点击 测试, 然后 运行流程。
- 几秒钟后,每个操作都会显示一个绿色对勾。
- 打开 Dropbox
/pdf4meoutput新文件匹配<guid>_<filename>.pdf。 - 下载该文件。使用任何 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 秒对比
| 格式 | 它的使用场景 | 输出类型 |
|---|---|---|
| ZUGFeRD | Germany B2B, EU buyers | Hybrid PDF/A-3 + embedded XML (this blog) |
| Factur-X | France, sister format technically identical to ZUGFeRD 2.x | Hybrid PDF/A-3 + embedded XML |
| XRechnung | German public sector (federal, state, municipal) | Strict pure-XML profile |
您刚刚构建的流程生成的是 ZUGFeRD;切换到 Factur-X 工作流,无需任何更改(同一个混合文件在莱茵河两岸均可使用)。对于德国公共部门的发票,如果接收方要求纯 XML,请将一致性级别替换为与 XRechnung 一致的配置文件。
无需重建即可添加的常见变体
.json 或者 .csv 文件。将组合下拉菜单更改为 2.0-JSON 或者 2.0-CSV映射匹配项 发票 JSON 数据 或者 发票 CSV 数据 字段。PDF4me 在嵌入之前将其转换为 ZUGFeRD 模式。concat('Invoice-', utcNow(), '.pdf') 作为附件名称。客户将直接收到混合发票。解决实际错误
ZUGFeRD 1.0 不符合 2025 年德国 B2B 指令的要求。如果您的输出必须符合指令,请始终选择…… 2.0-* 在组合下拉菜单中选择组合选项。
仅映射与下拉列表选项匹配的那个。Power Automate 不会阻止您同时填写两个,但操作运行时会抛出验证错误。其他格式字段留空即可。
和 以 PDF 格式渲染发票 关闭后,PDF4me 会嵌入 XML,但不会重新绘制发票内容。您发送的承运商 PDF 文件 文件内容 保持不变。仅当您的承运商 PDF 文件已显示发票内容时才关闭此功能。
EXTENDED 标准在 EN 16931 标准的基础上增加了行业特定字段,但会被针对基线标准调谐的接收器拒收。从以下标准开始: 基本的 用于兼容性测试;只有在买方或 ERP 确认支持后才能升级。
后续步骤
在 Power Automate 中,任何文档自动化都适用相同的五步模式:触发、获取输入、运行 PDF4me 操作、写入结果。一旦完成一次部署,后续部署的成本几乎为零。