跳到主要内容

在 Power Automate 中生成个性化邀请函并将其合并到一个 PDF 文件中:Dropbox 工作流程的 7 个步骤

· 阅读需 26 分钟
SEO and Content Writer

批量邮件发送最痛苦的部分不是写信,而是…… 将个性化副本缝合在一起 这样,财务、人力资源或运营部门就能收到一份简洁的PDF文件,而不是五十个附件。本教程将逐步构建出完全相同的模式。 动力自动化PDF4me 生成文档(多个)合并多个PDF文件Dropbox以及一个“应用到每个”循环。七个流程操作。一个 DOCX 模板。一个收件人 JSON 数组。最终生成一个合并的 PDF 文件,每个收件人一页,自动命名并上传回 Dropbox。

流程概览
1. Manual trigger
Manually trigger a flow. Swap in any business trigger later (HTTP, SharePoint, schedule).
2. Get file content (path)
Dropbox path /blog data/merge blog template/template.docx, Infer Content Type Yes.
3. Generate Documents (Multiple)
PDF4me action. Template DOCX plus JSON array of recipients. Output Type PDF. Returns body/outputDocuments.
4. Initialize variable
Name mergefiles, Type Array. Buffer for the per-recipient PDF binaries.
5. Apply to each
Loop body/outputDocuments. Inside, Append to array variable with base64ToBinary on streamFile.
6. Merge multiple PDFs
PDF4me action. Body/docContent mergefiles, Output File Name Test.pdf. One combined PDF out.
7. Create file
Dropbox /blog data/merge blog template/output, File Name Merged_files.pdf.
简短版

Dropbox 的两个步骤构成了整个流程。PDF4me 的“生成文档(多个)”功能会为每个收件人生成一个个性化的 PDF 文件。“应用到每个”循环会包裹所有操作。 流文件base64ToBinary(...) 并将其添加到数组变量中。PDF4me 的“合并多个 PDF 文件”功能会将该数组拼接成一个合并后的 PDF 文件。Dropbox 创建文件 将其写回。该流程在处理两个收件人的批次时运行时间不到一分钟,并且可以线性扩展。除了一个自定义表达式之外,没有其他自定义表达式。 base64 转二进制 称呼。

基于原因的问答

为什么生成多个文档而不是单个文档? 单次处理模式接收一条记录并生成一个 PDF 文件。要生成 N 个 PDF 文件,需要调用 N 次,每次调用都会添加一个计费事件和一个网络往返次数。(多次处理模式)一次性调用整个 JSON 数组,并将 N 个 PDF 文件一起返回。 正文/输出文档一次通话,一次计费事件,完整批次。

为什么需要数组变量并加上“应用到每个变量”的选项? “生成文档(多个)”会将每个 PDF 文件作为 base64 字符串输出。 流文件合并多个 PDF 文件需要一组二进制文件。“应用到每个”循环连接了这两个过程:将每个 base64 字符串转换为二进制文件。 base64ToBinary(...) 并将其推送到名为 合并文件循环结束后,数组就是合并操作所期望的集合。

为什么选择 DOCX 而不是 PDF 作为模板? DOCX 合并令牌(<<[名字]>><<[HC_WoM_Date]>>PDF4me引擎可以直接读取正文中的字段。PDF模板需要预先设置表单域结构,这对于一封信函来说有点多余。Word、Office 365和Google Docs等软件也支持导出DOCX格式,因此作者无需离开写作工具即可编辑模板。

为什么要合并成一个PDF文件呢? 合规性审查、批量打印、签名审计跟踪和后续归档都更倾向于使用一个合并的 PDF 文件,而不是多个附件。如果您需要恢复单个文件,只需将其删除即可。 按页数拆分 PDF = 1 在步骤 7 之前采取行动,你就可以同时拥有这两个世界,而无需重建其余流程。


您将获得

输入: 一个包含 DOCX 模板 <<[merge_token]>> 占位符 /blog data/merge blog template/template.docx此外,还需要将收件人的 JSON 数组粘贴到“生成文档(多个)”操作中。 输出: 一个名为 Merged_files.pdf 已上传至 /blog data/merge blog template/output每个收件人对应一个个性化页面,顺序与 JSON 数组一致。模板保留在其源文件夹中,因此重复运行是幂等的。


你需要什么

  • 动力自动化打开 Power Automate任何包含高级连接器的套餐(PDF4me Connect 属于高级套餐)。
  • PDF4me API密钥获取您的 API 密钥首次添加 PDF4me 操作时进行连接。
  • Dropbox模板的来源,合并后 PDF 的目标位置。SharePoint、OneDrive 和 Google Drive 使用各自的连接器,工作方式相同。
  • 带有合并标记的 DOCX 模板使用双尖括号语法(<<[字段名]>>)。该攻略使用 template.docx, 你可以 下载本教程中使用的确切模板 然后将其上传到 Dropbox,以镜像每个屏幕截图。
  • 收件人 JSON 数组每个收件人一个对象,键与模板标记完全匹配。 下载示例 JSON

请先获取示例文件。 降低 模板.docx 进入 /博客数据/合并博客模板/ 将 JSON 文件保存在你的 Dropbox 中,并记在草稿本上。下面每个屏幕截图中的值都将与你在自己的流程中看到的内容一致。


流程概览

  1. 手动触发流程 (扳机)。
  2. Dropbox:使用路径获取文件内容阅读 template.docx 来自 Dropbox。
  3. PDF4me:生成文档(多个)输入模板和收件人 JSON 数组,输出个性化 PDF 数组。
  4. 初始化变量 命名 mergefiles (大批)。
  5. 适用于每个body/outputDocuments, 和 追加到数组变量 使用 base64ToBinary(...) 里面。
  6. PDF4me:将多个 PDF 文件合并成一个 PDF 文件输入二进制文件数组,输出一个 PDF 文件。
  7. Dropbox:创建文件. 写 Merged_files.pdf 返回 Dropbox。

完整流程概述

Power Automate 流程画布显示了从上到下堆叠的七个操作:手动触发流程、使用路径获取文件内容、生成文档(多个)、初始化变量、应用于每个包含“追加到数组变量”的内容、将多个 PDF 文件合并为一个 PDF 文件、创建文件

七个操作。每张卡片配置完成后都会显示一个绿色勾号。PDF4me 位于中间位置两次:一次用于生成 PDF,一次用于合并 PDF。


步骤 0:DOCX 模板

在任何流程运行之前,模板需要正确的合并令牌。 <<[FieldName]>> 每个收件人的占位符会被替换一次。拼写和大小写必须与 JSON 键完全一致。

模板预览

template.docx 预览显示了合并标记 DebtorNumber、Salutation、Title、FirstName、LastName、CareOfAddress、Address、POBox、PostalCode、City、Country、HC_Name、SalutationText、HC_WoM_Date、HC_WoM_Time、HC_Street、HC_PostalCodeCity、HC_WoM_RegistrationDeadline、HC_Email 和 HC_Phone,这些标记排列成研讨会邀请函的形式。

DOCX 文件使用双尖括号语法。不包含特殊字符,不包含 XML,只有 PDF4me 引擎直接读取的字面占位符。


步骤 1:手动触发流程

目前为止的流程: 仅触发。

  1. 动力自动化 点击 创造, 选择 瞬间云流
  2. 挑选 手动触发流程 作为触发因素。
  3. 给流程命名(例如: Bulk Invitation Mailout)并点击 创造
  4. 暂时将触发器输入留空。真正的生产触发器(HTTP 请求、SharePoint 列表更新、计划任务)将在流程的其他部分运行正常后在此处添加。

步骤 2:Dropbox:使用路径获取文件内容

目前为止的流程: 触发器 + 获取文件内容。

将 DOCX 模板以原始字节的形式读取到流程中,以便“生成文档”可以直接使用它。

  1. 点击 + 新步骤, 搜索 Dropbox, 挑选 使用路径获取文件内容
  2. 连接 如果你还没有Dropbox的话。
  3. 配置
    • 文件路径/blog data/merge blog template/template.docx
    • 推断内容类型Yes
  4. 节省 执行流程并快速测试。该操作返回一个 File Content 包含模板二进制文件的令牌。

获取文件内容配置

Power Automate 使用路径操作获取 Dropbox 文件内容,该操作配置了文件路径 /blog data/merge blog template/template.docx,高级参数“推断内容类型”为“是”,连接已连接到 Dropbox。

如果选择“推断内容类型为是”,则下游 PDF4me 操作会将文件视为真正的 DOCX 文件,而不是通用流。


步骤 3:PDF4me:生成文档(多个)

目前为止的流程: 触发 + 获取文件内容 + 生成文档(多个)。

在这里,一个 DOCX 文件加上一个 JSON 数组,只需一次操作调用即可生成 N 个个性化 PDF 文件。

  1. 点击 + 新步骤, 搜索 PDF4me, 挑选 生成文档(多个)
  2. 连接 PDF4me 连接时请使用您的 API 密钥(仅限首次连接)。
  3. 配置 动作的上半部分:
    • 模板文件类型Docx
    • 模板文件名Test.docx (仅标签,非路径)
    • 模板文件数据选择 文件内容 第二步的令牌
    • 文档数据类型Json

步骤 3a:行动的开始

Power Automate PDF4me 生成文档(多个)操作已配置,模板文件类型为 Docx,模板文件名为 Test.docx,模板文件数据文件内容来自之前的 Dropbox 步骤,文档数据类型为 JSON。
  1. 粘贴 JSON 数组 进入 文档数据文本该演示使用了两个接收者(John Doe,X AB)。每个对象都有相同的 19 个键,每个键都匹配一个 <<[Token]>> 在 DOCX 模板中。

步骤 3b:JSON 有效负载

Power Automate 生成文档多操作文档数据文本面板显示一个包含两条记录的 JSON 数组,这两条记录均包含 DebtorNumber、Salutation、Title、FirstName、LastName 以及完整的地址字段和主机公司字段,例如 HC_Name、HC_WoM_Date 和 HC_Email。
[
{
"DebtorNumber": "100001",
"Salutation": "Mr",
"Title": "Dr.",
"FirstName": "John",
"LastName": "Doe",
"CareOfAddress": "c/o Accounting Department",
"Address": "123 Main Street",
"POBox": "PO Box 123",
"PostalCode": "10001",
"City": "New York",
"Country": "United States",
"HC_Name": "ABC Business Association",
"SalutationText": "Dear Dr. Doe",
"HC_Email": "[email protected]",
"HC_Phone": "+1-212-555-0100",
"HC_WoM_RegistrationDeadline": "2026-05-22",
"HC_Street": "500 Park Avenue",
"HC_PostalCodeCity": "10022 New York",
"HC_WoM_Date": "2026-05-29",
"HC_WoM_Time": "10:00"
},
{
"DebtorNumber": "100001",
"Salutation": "Mr",
"Title": "Dr.",
"FirstName": "X",
"LastName": "AB",
"CareOfAddress": "c/o Accounting Department",
"Address": "123 Main Street",
"POBox": "PO Box 123",
"PostalCode": "10001",
"City": "New York",
"Country": "United States",
"HC_Name": "ABC Business Association",
"SalutationText": "Dear Dr. Doe",
"HC_Email": "[email protected]",
"HC_Phone": "+1-212-555-0100",
"HC_WoM_RegistrationDeadline": "2026-05-22",
"HC_Street": "500 Park Avenue",
"HC_PostalCodeCity": "10022 New York",
"HC_WoM_Date": "2026-05-29",
"HC_WoM_Time": "10:00"
}
]
  1. 配置 下半部分:
    • 字段元数据:留空(可选,用于货币、日期或数字格式设置)
    • 输出类型PDF
    • 保持PDF模板可编辑No

步骤 3c:输出类型

Power Automate 生成文档(多个)底部显示字段元数据为空,输出类型为 PDF 下拉菜单,保持 PDF 模板可编辑为否,已连接到 PDF4me Connect
  1. 保存并测试操作返回 body/outputDocuments一个对象数组,每个对象对应一个接收者。每个对象携带一个 streamFile 包含个性化 PDF 的 base64 字符串属性。

提示。 缺失的 JSON 键在输出 PDF 中会显示为空字符串,而不是错误信息。这虽然可以容忍部分数据,但也意味着拼写错误会悄无声息地导致失败。上线前,请务必将您的令牌列表与 JSON 键进行比对,因为两者都区分大小写。


步骤 4:初始化变量合并文件

目前为止的流程: 触发器 + 获取文件内容 + 生成文档(多个) + 初始化变量。

合并操作需要一个二进制文件集合。请创建一个空数组来保存这些文件。

  1. 点击 + 新步骤, 挑选 初始化变量
  2. 配置
    • 姓名mergefiles
    • 类型Array
    • 价值:留空

初始化变量配置

Power Automate 初始化变量操作配置为名称“mergefiles”,类型“数组”,值字段为空。

初始化变量始终在第一个需要它的“应用到每个对象”操作之前执行。Power Automate 在设计时强制执行此规则。


步骤 5:应用到每个数组变量并追加

目前为止的流程: 触发器 + 获取文件内容 + 生成文档(多个) + 初始化变量 + 应用于每个。

遍历 PDF 文件,并将每个文件转换为二进制缓冲区。

步骤 5a:应用于每个(选择来源)

  1. 点击 + 新步骤, 挑选 适用于每个
  2. 配置
    • 从之前的步骤中选择一个输出。: 挑选 body/outputDocuments 从“生成文档(多个)”操作
在“生成多个文档”操作中,使用“从先前步骤中选择输出”选项,将“应用到每个操作”设置为“body/outputDocuments”。

步骤 5b:追加到数组变量(在循环内)

  1. 在“应用到每个容器”按钮中 添加操作, 挑选 追加到数组变量
  2. 配置
    • 姓名mergefiles
    • 价值 (表达式,点击) fx): base64ToBinary(items('Apply_to_each')?['streamFile'])
Power Automate 的“追加到数组变量”操作配置了名称为“mergefiles”且值为“base64ToBinary”的表达式,该表达式应用于表达式编辑器中显示的“Apply_to_each streamFile”项。

这是把所有事情联系起来的关键所在。 生成文档(多个)会生成 base64 字符串 流文件合并多个PDF文件需要二进制缓冲区。 base64ToBinary(...) 它是桥梁。如果没有它,合并操作会因“内容无效”而报错。


步骤 6:PDF4me:将多个 PDF 文件合并为一个 PDF 文件

目前为止的流程: 触发 + 获取文件内容 + 生成文档(多个) + 初始化变量 + 应用于每个 + 合并多个 PDF。

现在把所有数据输入进去,然后输出一个PDF文件。

  1. 在“应用到每个循环”下方单击 + 新步骤, 搜索 PDF4me, 挑选 将多个 PDF 文件合并成一个 PDF 文件
  2. 配置
    • 正文/文档内容选择 mergefiles 变量标记
    • 输出文件名Test.pdf

合并操作配置

Power Automate PDF4me 将多个 PDF 文件合并为一个 PDF 文件的操作,将 Body/docContent 设置为 mergefiles 变量,并将输出文件名设置为 Test.pdf,打开表达式选择器,显示变量 mergefiles 并将其应用于每个 body/outputDocuments。
  1. 该操作会将 PDF 文件连接起来。 数组顺序这就是 JSON 的顺序。如果您的下游用户期望特定的排序方式(例如按字母顺序、按债务人编号或按地区),请在步骤 3 之前对 JSON 进行排序,后续流程将保持该顺序。

提示。 每次运行都需要不同的输出文件名?使用动态构建方式 concat('Invitations_', utcNow('yyyy-MM-dd'), '.pdf') 在“输出文件名”字段中输入日期。合并后的 PDF 文件会带有日期戳,并且重复运行不会互相覆盖。


步骤 7:Dropbox:创建文件

目前为止的流程: 触发 + 获取文件内容 + 生成文档(多个) + 初始化变量 + 应用于每个 + 合并多个 PDF + 创建文件。

合并后的PDF文件写回Dropbox。

  1. 点击 + 新步骤, 挑选 Dropbox创建文件
  2. 配置
    • 文件夹路径/blog data/merge blog template/output
    • 文件名Merged_files.pdf
    • 文件内容选择 文件内容 第 6 步(合并多个 PDF)中的令牌
  3. 节省 流动。

创建文件配置

Power Automate Dropbox 创建文件操作配置了文件夹路径 /blog data/merge blog template/output、文件名 Merged_files.pdf 和文件内容,这些内容来自“合并多个 PDF 文件”操作。

运行流程并验证

  1. 点击 测试 在右上角,选择 手动, 点击 测试, 然后 运行流程
  2. 流程执行面板会逐个操作显示绿色。“生成文档(多个)”操作通常每个单页模板的记录需要一秒钟。“合并多个 PDF”操作(针对两个收件人)则需要额外一到两秒钟。
  3. 打开 Dropbox /blog data/merge blog template/output/文件 Merged_files.pdf 有没有。

输出结果并排显示

Merged_files.pdf 第 1 页:已渲染的邀请函,收件人为债务人编号 100001 的 John Doe 博士,地址为美国纽约州纽约市主街 123 号,邮政信箱 123,邮编 10001。研讨会日期为 2026 年 5 月 29 日上午 10:00,地点为纽约州纽约市公园大道 500 号,邮编 10022,报名截止日期为 2026 年 5 月 22 日。
第 1 页,个性化定制 约翰·多伊
Merged_files.pdf 第 2 页:为债务人编号 100001 的 X 博士 AB 先生提供的邀请函,地址相同,工作室详情也相同,证明合并字段替换已在多条记录中端到端生效
第 2 页,个性化定制 X AB

你实际建造了什么? 这是一款零接触批量邮件发送工具,可将单个 DOCX 信函和收件人 JSON 列表合并为一个 PDF 文件,方便打印、签名、存档或作为附件使用。无论收件人数量是两位还是两千位,此模式均无需更改任何字段值。该模式也适用于 Make(迭代器 + PDF4me 合并模块)和 Zapier(Zapier 循环 + PDF4me 合并操作)。


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

触发来自真实来源
代替 手动触发流程当收到 HTTP 请求时您的 CRM、ERP 或后端直接 POST 请求 JSON 数组。其他所有操作均保持不变。
通过电子邮件发送合并后的PDF文件
添加 Outlook 发送电子邮件(V2) 完成步骤 6 后,将合并后的 PDF 文件作为附件上传。 合并文件.pdf 邮件会直接发送到财务、运营或印刷部门,无需经过 Dropbox 的往返传输。
在保存之前进行数字签名
Insert PDF4me 数字签名 PDF 在步骤 6 和步骤 7 之间。合并后的 PDF 使用 X.509 证书进行签名,签名后的二进制文件会发送到 Dropbox。
存档为 PDF/A
Insert PDF4me 创建 PDF/A 在步骤 6 和步骤 7 之间进行合规性检查 PDF/A-2b. Dropbox 副本即可用于存档,并符合 ISO 19005 标准。

故障排除

合并操作错误与“无效内容”

价值 添加到数组中的表达式未包装在 base64ToBinary(...)如果没有进行转换,合并操作将接收 base64 字符串而不是二进制缓冲区。重新打开“追加到数组”操作,切换到表达式编辑器,然后粘贴 base64ToBinary(items('Apply_to_each')?['streamFile']) 逐字。

输出 PDF 中的空白字段

JSON 键与模板标记不匹配。“生成文档(多个)”会将缺失的键替换为空字符串,虽然这种做法容错性较高,但会导致拼写错误时无法正确处理。请将您的 DOCX 标记列表与 JSON 键进行比较,两者都区分大小写。

合并后的PDF文件中只有一页。

“应用到每个”循环正在迭代错误的源。打开循环,确认一下。 从之前的步骤中选择一个输出。 指向 正文/输出文档 (数组),而不是单个记录的单个属性。

合并后的PDF文件页面顺序错误

页面顺序与 JSON 顺序一致。在执行“生成文档(多个)”之前,请使用以下方法对 JSON 数组进行排序: 选择 或者 撰写 采取行动,使收件人按您需要的顺序到达。


后续步骤

在 Power Automate 中,同样的七步模式(触发、获取模板、生成批处理、循环转换为数组、合并、保存)适用于任何批量个性化邮件发送。发送一封邮件后,后续邮件的成本几乎为零。