Fill a PDF Form 是这样一个 Power Automate 操作:它接受一个可填写的 PDF 模板和一段 JSON 负载,然后返回每个字段都已填好的同一个 PDF。将它与 PDF - Sign 以及一个 SharePoint When an item is created 触发器搭配,发票生成便可自行运转:有人添加一行,Power Automate 组装出已签署的 PDF,Dropbox 则以带时间戳的名称将其归档。
发票类工作流的瓶颈从来都不是 PDF 本身,而是卡在中间的那个手动步骤。有人打开模板,从电子表格的一行里重新键入八个值,打印出来,签字,再扫描回去,最后上传结果。这些字段中的每一个,都是又一次拼错客户姓名或漏掉合计中一位数字的机会。本指南用七个 Power Automate 操作替换掉整套流程:SharePoint 发起触发,Dropbox 交出模板和签名图片,PDF4me 填写表单并应用签名,Dropbox 保存完成的文件。每一张截图都是真实的,Compose 表达式已完整写出,SharePoint 架构已列出,示例签署发票也任您下载。
每当有新的发票行,SharePoint 列表触发器就会触发。Dropbox 提供可填写的 PDF 模板和一张 PNG 签名。Compose 把该行变成一段 JSON 负载。PDF4me Fill a PDF Form 把这些数据写入模板,PDF4me PDF - Sign 加上签名,Dropbox 则以一个同时带有时间戳和发票编号的文件名保存结果。
为什么每个步骤都在这里,都是有意为之
你最终会得到什么
一个单一的 Power Automate 流程,它盯着一个 SharePoint 列表,对于每一行到来的数据,都在你的 Dropbox 输出文件夹中生成一份名为 Signed_INV-YYYY-NNN_<ticks>.pdf 的已填写并签署的 PDF 发票。签名位于第 1 页的右下角,模板中的其余一切都完全保持你的设计师所排布的样子。
你首先需要准备什么
- 一个 SharePoint 网站,其中有一个名为
New Customer Invoices的列表(按你的喜好重命名),包含以下列:Title、CustomerName、Email、Phone(都是 Single line of text)InvoiceNumber(Single line of text,例如INV-2026-207)InvoiceDate(Date)、Address(Single line of text)、Amount(Number)
- 一个 PDF 模板,其命名的表单字段与 JSON 键一一对应(
customerName、email、phone、invoiceNumber、invoiceDate、address、amount)。 - 一张透明背景上的 PNG 签名。
- Power Automate 内的一个 PDF4me 连接。第一个流程?获取一个 API 密钥来完成配置。
- Power Automate 中的一个 Dropbox 连接 — SharePoint、OneDrive 或任何其他存储都能同样干净地接入。
七个操作,从头到尾
七个 Power Automate 操作排成一条直线 — 没有并行分支,没有 Apply to each,没有变量。一个步骤的输出直接喂给下一个。

SharePoint 列表在这里就是那份契约。每一行到来的数据都恰好变成一份已签署的 PDF。

当出现新的 SharePoint 行时,如何启动流程?
目前的流程: 仅有触发器。
- 新建一个 Automated cloud flow,搜索 SharePoint,并选择 When an item is created。
- 将 Site Address 指向你的 SharePoint 网站(截图中使用的是
https://ynoox1.sharepoint.com/sites/PDF4meSupport上的PDF4me Support)。 - 将 List Name 设为
New Customer Invoices。 - 让 Advanced parameters 保持原样。行一落地,触发器就会触发,无需摆弄任何轮询间隔。

提示。 在可能的地方,把 SharePoint 列重命名为与 PDF 字段名一致(
customerName、
如何把 PDF 模板和签名送入流程?
目前的流程: 触发器 → Get file content → Get file content 1。
两次 Dropbox 读取:一次读 PDF 模板,一次读 PNG 签名。把两者放在同一个文件夹里,意味着日后无人需要去到处翻找它们。
- 添加 Dropbox - Get file content using path,将 File 设为
/blog data/fill a pdf/sample_fill_form.pdf。 - 打开 Advanced parameters,把 Infer Content Type 切换为 Yes,否则 PDF 二进制数据可能在传输途中损坏。

- 放入第二个 Dropbox - Get file content using path;Power Automate 会自动把它重命名为
Get file content 1。 - 将 File 设为
/blog data/fill a pdf/signature.png。 - 把同一个 Infer Content Type 开关切换为 Yes。

如何把 SharePoint 行变成一段 JSON 负载?
目前的流程: 触发器 → 取模板 → 取签名 → Compose。
Compose 就是那个"构建 JSON"的步骤。它把触发器字段作为动态内容取进来,并将它们排布进一个 PDF4me Fill a PDF Form 能读取的单一 JSON 对象。
- 添加一个 Compose 操作。
- 点击 Inputs,粘贴下面的 JSON 骨架,并把每个右侧的值换成动态内容选择器中对应的 SharePoint 列,让每个胶囊都保持在引号之间:
{
"customerName": "CustomerName",
"email": "Email",
"phone": "Phone",
"invoiceNumber": "InvoiceNumber",
"invoiceDate": "InvoiceDate",
"address": "Address",
"amount": "Amount"
}

负载参考:
| JSON 键 | 来源(SharePoint 列) | 类型 | 备注 |
|---|---|---|---|
customerName | CustomerName | 文本 | 原样传递。 |
email | Email | 文本 | 任意字符串;此处不校验格式。 |
phone | Phone | 文本 | 保留为文本 — 不要转换为 Number,因为分机号和连字符很重要。 |
invoiceNumber | InvoiceNumber | 文本 | 稍后也会在输出文件名中被重复使用。 |
invoiceDate | InvoiceDate | 日期 | 胶囊在引号内时,Compose 会把它作为文本发送,而不是 ISO 日期对象。 |
address | Address | 文本 | 单行。 |
amount | Amount | 数字 | 在引号内,因此 JSON 以带引号的值来承载它。 |
提示。 始终把动态内容胶囊放在每个值的两个引号之间。放在引号外面时,胶囊会输出一个裸数字或日期,而字符串中间一个未加引号的数字后面跟着一个
,,会毫无预警地破坏负载。
如何根据 JSON 填写 PDF 表单?
目前的流程: 触发器 → 取模板 → 取签名 → Compose → Fill a PDF Form。
这是第一个 PDF4me 操作。它接收模板 PDF 加上 JSON 负载,并把每个值写入同名的表单字段。
- 添加 PDF4me PDF 连接器,并选择 Fill a PDF Form 操作。
- Template File Data:动态内容,Get file content → File Content(模板 PDF 二进制数据)。
- Template File Name:
sample_fill_form.pdf(或你自己的文件名)。 - JSON Data:动态内容,即 Compose 步骤的 Outputs。
- Keep PDF template Editable:No — 这会在填写后把表单压平,使收件人无法清除字段。

提示。 想让收件人日后仍能编辑某些字段(比如添加一条备注)?把 Keep PDF template Editable 设为 Yes。你填好的值会保留;改变的只是字段锁定。
如何用 PDF - Sign 盖上签名?
目前的流程: 触发器 → 取模板 → 取签名 → Compose → Fill a PDF Form → PDF - Sign。
PDF - Sign 把你的 PNG 签名以固定位置和你设定的不透明度覆盖到已填写的 PDF 上。
- 添加 PDF4me PDF 连接器,操作为 PDF - Sign。
- PDF File content:动态内容,Fill a PDF Form → Body(已填写的 PDF 二进制数据)。
- PDF File Name:表达式
concat(triggerBody()?['InvoiceNumber'], '.pdf'),它会得到INV-2026-207.pdf,好让发票编号出现在后续日志中。 - Sign File Content:动态内容,Get file content 1 → Body(PNG 签名)。
- Sign Image File Name:
signature.png。 - Align Horizontal:right。Align Vertical:bottom。
- Pages:
1(仅第 1 页 — 用1,3表示第 1 页和第 3 页,或留空以签署每一页)。 - Height:
20。Width:50。Margin Horizontal:15。Margin Vertical:15。Opacity:100。

定位参考:
| 字段 | 它控制什么 | 示例 |
|---|---|---|
| Align Horizontal | 从左到右的哪条边 | left、center、right |
| Align Vertical | 顶部、中部或底部带 | top、center、bottom |
| Pages | 哪些页会被盖章 | 1(仅首页)、1,3(第一和第三页)、留空(每一页) |
| Height / Width | 以 PDF 单位表示的签名框大小 | 与你的 signature.png 比例匹配,否则会被拉伸 |
| Margin Horizontal / Vertical | 距对齐边的距离 | 当 Align 为 right 时,15 = 距右边缘向内 15 个单位 |
| Opacity | 0 到 100 | 100 为完全不透明;降到 70 可获得水印效果 |
如何把已签署的 PDF 写回 Dropbox?
目前的流程: 触发器 → 取模板 → 取签名 → Compose → Fill a PDF Form → PDF - Sign → Create file。
最后一步。完成的 PDF 落入一个专用的输出文件夹,其文件名经过精心设计,让两次运行绝不可能相撞。
- 添加 Dropbox - Create file。
- Folder Path:
/blog data/fill a pdf/output。 - File Name:表达式
concat('Signed_', string(triggerBody()?['InvoiceNumber']), '_', string(ticks(utcNow())), '.pdf'),它会生成诸如Signed_INV-2026-207_639235162128009339.pdf这样的名称。 - File Content:动态内容,PDF - Sign → Body(已签署的 PDF 二进制数据)。

提示。 把 Dropbox 换成 SharePoint - Create file 或 OneDrive - Create file,流程中的其他一切都不用动。PDF 二进制数据完全相同;不同的只是存储适配器。
运行它并检查结果
Signed_INV-2026-207_639235162128009339.pdf 就会出现在 Dropbox 的 /blog data/fill a pdf/output 中。打开它,你会看到八个字段都已填好,签名在第 1 页右下角 — 正是本文顶部所链接的那个文件。无需重建即可加装的变体
常见问题
如何用 Power Automate 填写 PDF 表单?
把 PDF4me Fill a PDF Form 操作放在一个读取你的 PDF 模板的步骤(一个 Dropbox、SharePoint 或 OneDrive 的 Get file content)以及一个根据触发器字段构建 JSON 负载的 Compose 步骤之后。把 Template File Data 映射到 PDF 二进制数据,把 JSON Data 映射到 Compose 输出。JSON 键必须与模板的表单字段名完全一致。
Power Automate 能填写 PDF 表单吗?
能 — 只需一个连接器操作,前提是已安装 PDF 连接器。Power Automate 本身无法写入可填写的 PDF,但 PDF4me Fill a PDF Form 操作能在单个步骤中完成整个填写与压平,由你用 Compose 或直接从 SharePoint 或 Excel 行组装的 JSON 负载来驱动。
如何自动填充 PDF 表单字段?
在你的数据源(一个 SharePoint 列表、一个 Excel 行、一次表单提交)上触发,构建一个键与 PDF 字段名相匹配的 JSON 对象,然后把该 JSON 和模板 PDF 交给 PDF4me Fill a PDF Form。它会返回每个命名字段都已填好的同一个 PDF。把 Keep PDF template Editable 设为 No 来锁定这些值,使收件人无法清除它们。
如何用 Power Automate 从 SharePoint 列表项创建 PDF?
用 When an item is created 作为触发器,添加一个 Get file content 步骤来加载 PDF 模板,一个 Compose 步骤把该行整形为 JSON,再用 PDF4me Fill a PDF Form 把它们合并。你会得到一份填好的 PDF,可以用邮件发送、推送到 SharePoint、OneDrive 或 Dropbox,或送入审批流程。本文正是搭建这样一套,并在其上加盖签名。
如何在 Power Automate 中自动签署 PDF?
在任何产出 PDF 二进制数据的步骤之后添加 PDF4me PDF - Sign。把 PDF File content 映射到已填写的 PDF,把 Sign File Content 映射到一张 PNG 签名,然后设置对齐(right / bottom)、大小(Height / Width)、边距和不透明度。PDF - Sign 会把图片盖到你所列出的页面上;把 Pages 留空即可签署全部页面。
疑难排查
后续步骤
这是从一行 SharePoint 数据到一份已签署并已存储的 PDF 之间最短的、无需动手的路径 — 而中间那两个 PDF4me 操作,正是你无法单靠 Microsoft 自身获得的部分。
参考资料
- SharePoint When an item is created 触发器参考,位于 Microsoft Learn
- Power Automate Compose 操作与表达式函数,位于 Microsoft Learn
- PDF 表单字段命名指南,位于 Adobe Acrobat 帮助
- Dropbox Create file 连接器,位于 Microsoft Learn
