跳到主要内容

PDF4me Word模板

本指南涵盖的内容

本指南将引导您完成生成单张发票的步骤。 PDFn8n 使用捆绑的 template.docxdata.json 样品包。Word模板使用 PDF4me <<[fieldName]>> 合并标签(LINQ 报表引擎语法)。您加载 .docx 作为二进制数据,粘贴或加载匹配 JSON/XML/CSV并收到一份成品 PDF 每次运行。

相关博客文章
目前尚无关于此功能的博客文章——敬请期待。
在此期间,您可以浏览 PDF4me 博客,查看适用于各平台的教程和工作流程。
访问博客

开始之前

带有合并标签的 Word 模板
样本 template.docx 是一种发票布局。动态值使用 <<[InvNr]>><<[companyName1]>><<[产品名称]>>以及类似的标签。字段名称区分大小写,并且必须与您的数据键完全匹配。
匹配数据文件
使用 data.json (受到推崇的), 测试.xml, 或者 测试.csv这三张发票的金额相同。请选择 文档数据类型 在节点中匹配您提供的文件格式。
PDF4me 证书 n8n
创建一个 PDF4me 证书 n8n 并粘贴你的 API 密钥。同一个密钥适用于所有设备。 PDF4me 您实例中的节点。

示例文件包

请下载下方全部四个文件。它们设计为协同工作:一个模板文件和三种等效数据格式。

示例文件包含哪些内容

模板布局(template.docx

示例模板为单页模板。 发票 使用固定标签和动态合并字段:

文档部分静态标签(固定在模板中)合并标签(根据数据填充)
标题发票(静止的)
发票元数据发票 #<<[InvNr]>>
发票元数据发票金额<<[invAmt]>>
发票元数据发票日期<<[invDate]>>
发票元数据后 #<<[invPO]>>
发票元数据计费周期<<[from]>><<[to]>>
账单支付给账单<<[companyName1]>><<[companyName2]>><<[addressline1]>><<[addressline2]>><<[country]>>
行项目行描述 / 价格 / 增值税率 / 金额(美元)<<[productName]>><<[price]>><<[vat]>><<[amount]>>

:::提示 合并标签语法

PDF4me Word模板使用 <<[fieldName]>> (双尖括号加方括号)。这与 HTML 胡子语法({{fieldName}})。参见 Word模板语法指南 for 循环、条件语句和格式化字符串。

:::

所有数据文件中的字段映射

模板中的每个动态值都映射到一个键。 data.json, 一个 XML 元素 test.xml或者 CSVtest.csv

Template tagJSON key (data.json)XML element (test.xml)Sample value
<<[companyName1]>>companyName1CompanyName1Muster AG
<<[companyName2]>>companyName2CompanyName2Hans Muster
<<[addressline1]>>addressline1AddressLine1example street
<<[addressline2]>>addressline2AddressLine28000 Zürich
<<[country]>>countryCountrySwitzerland
<<[productName]>>productNameProductNamePDF4me
<<[price]>>pricePrice1000
<<[vat]>>vatVAT8.00
<<[amount]>>amountAmount1000
<<[InvNr]>>InvNrInvoiceNumber202311InV
<<[invAmt]>>invAmtInvoiceAmount1000
<<[invDate]>>invDateInvoiceDate2023-11-24
<<[invPO]>>invPOPurchaseOrder1234567
<<[from]>>fromFromDate2023-10-24
<<[to]>>toToDate2023-10-24

工作流程概览

测试样品包最快的方法是…… n8n

Manual Trigger → Read Binary File (template.docx) → PDF4me Generate Document (Single) → (optional) Write Binary File
n8n 节点目的
1手动扳机按需启动工作流程
2读取二进制文件负载 template.docx 进入二元属性 data
3PDF4me → 生成文档(单个)合并模板和数据,输出一个结果。 PDF
4写入二进制文件 (选修的)保存 generated_document_output.pdf 到磁盘
生成文档(单个)n8n 节点配置了以下模板:PDF4me Word 模板,输出类型 PDF,模板文件输入类型二进制数据,模板二进制属性数据,模板文件名 template.docx,文档数据输入类型文本,文档数据类型 JSON,示例文档数据文本 JSON 有效负载

目标配置:来自二进制文件的 Word 模板 JSON 粘贴 文档数据文本 + PDF 输出


步骤 1:下载并放置示例文件

  1. 下载 template.docxdata.json示例文件包 多于。
  2. 将这两个文件保存到某个位置。 n8n 例如,可以阅读它们。 C:\pdf4me-samples\ 您可以将它们托管在自己的实例上,或者如果您以后更喜欢云端触发器,也可以将它们上传到 Google Drive / Dropbox。
  3. (可选)下载 test.xml 或者 test.csv 如果你想测试 XML 或者 CSV 数据类型而不是 JSON

步骤 2:创建 n8n 工作流程

  1. n8n创建一个新的工作流程。
  2. 添加一个 手动扳机 节点(或您喜欢的任何生产触发器)。
  3. 添加一个 读取二进制文件 触发器之后的节点。
  4. 添加 PDF4me → 生成文档(单个) 读取二进制文件之后。
  5. 按顺序连接节点。

步骤 3:加载 Word 模板(Read Binary File

配置 读取二进制文件 节点:

场地价值
文件路径下载文件的完整路径 template.docx
物业名称data (默认值;这将成为二进制属性) PDF4me 节点读取)

执行此节点一次,并确认输出项显示一个名为“ data 文件名 template.docx


步骤 4:配置 PDF4me 生成文档(单个)

打开 PDF4me 进入节点并设置这些字段。以下值与示例包中的值完全一致。

核心设置

场地价值笔记
用于连接的凭证你的 PDF4me 凭证得到 API 钥匙
资源Generate
生成操作生成文档(单个)
模板文件类型PDF4me Word模板比赛 .docx<<[field]>> 标签
输出类型PDF使用 Word 如果您需要可编辑的合并 .docx 反而

模板输入(来自读取二进制文件)

场地价值
模板文件输入类型二进制数据
模板二进制属性data
模板文件名template.docx

文档数据(粘贴 JSON 数据) data.json

场地价值
文档数据输入类型文本
文档数据类型JSON
文档数据文本粘贴全部内容 data.json (见下方方框)
{
"companyName1": "Muster AG",
"companyName2": "Hans Muster",
"addressline1": "example street",
"addressline2": "8000 Zürich",
"country": "Switzerland",
"productName": "PDF4me",
"price": 1000,
"vat": 8.0,
"amount": 1000,
"InvNr": "202311InV",
"invAmt": 1000,
"invDate": "2023-11-24",
"invPO": "1234567",
"from": "2023-10-24",
"to": "2023-10-24"
}

输出选项

场地价值
保持 PDF 可编辑Off (default)
二进制数据输出名称data (默认)

步骤 5:执行并验证 PDF

  1. 点击 执行工作流程 (或者逃离) PDF4me 节点)。
  2. 打开 PDF4me 节点输出。 二进制以属性模式打开文件 data (文件名 generated_document_output.pdf)。
  3. 确认生成的发票显示:
    • 发票 #202311InV
    • 账单支付给 → Muster AG / Hans Muster / example street / 8000 苏黎世 / 瑞士
    • 项目 → PDF4me,价格 1000,增值税 8.00,金额 1000
    • 计费周期2023-10-242023-10-24

如果某个字段显示为空,请比较标签名称。 template.docxJSON 关键在于它们必须完全匹配(包括大小写): InvNr 不是 invNr)。


步骤 6:保存输出(可选)

添加一个 写入二进制文件 节点之后 PDF4me

场地价值
文件名invoice-output.pdf (或者使用表达式)
数据属性名称data
输出路径文件夹所在位置 n8n 应该写入文件

替代数据格式

相同 template.docx 适用于示例包中的所有三个数据文件。仅限 文档数据类型 有效载荷发生变化。

选项A: JSON 文件为二进制文件(data.json

  1. 再加一个 读取二进制文件 节点 data.json
  2. 使用 合并 节点用于将模板二进制文件和数据二进制文件合并为一个项目(或在单独的分支中运行数据加载)。
  3. PDF4me文档数据输入类型 = 二进制数据文档数据类型 = JSON文档二进制属性 = data文档数据文件名 = data.json

:::注意:二进制属性名称冲突

当模板和数据都使用属性时 data 对于同一个项目,它们会互相覆盖。请使用不同的属性名称(例如: templatedataFile或者合并来自两个“读取二进制文件”节点的条目。

:::

选项B: XMLtest.xml

文档数据类型XML 并粘贴以下内容 test.xml

<?xml version="1.0" encoding="UTF-8"?>
<Invoice>
<CompanyName1>Muster AG</CompanyName1>
<CompanyName2>Hans Muster</CompanyName2>
<AddressLine1>example street</AddressLine1>
<AddressLine2>8000 Zürich</AddressLine2>
<Country>Switzerland</Country>
<ProductName>PDF4me</ProductName>
<Price>1000</Price>
<VAT>8.00</VAT>
<Amount>1000</Amount>
<InvoiceNumber>202311InV</InvoiceNumber>
<InvoiceAmount>1000</InvoiceAmount>
<InvoiceDate>2023-11-24</InvoiceDate>
<PurchaseOrder>1234567</PurchaseOrder>
<FromDate>2023-10-24</FromDate>
<ToDate>2023-10-24</ToDate>
</Invoice>

选项C: CSVtest.csv

文档数据类型CSV 并粘贴 CSV 主体(标题行 + 一行数据):

companyName1,companyName2,addressline1,addressline2,country,productName,price,vat,amount,InvNr,invAmt,invDate,invPO,from,to
"Muster AG","Hans Muster","example street","8000 Zürich","Switzerland","PDF4me",1000,8.00,1000,"202311InV",1000,"2023-11-24","1234567","2023-10-24","2023-10-24"

CSV 列标题与 JSON 直接映射到键 <<[fieldName]>> 模板中的标签。


生产工作流程模式

生产中提供模板和数据的常用方法Once the sample test works, replace the Manual Trigger and Read Binary File nodes with these patterns.
云存储触发器
  1. Google Drive / Dropbox / OneDrive 触发器会在新文件出现时触发。
  2. 下载节点获取 template.docx (或者使用固定的模板路径)。
  3. 建造 JSON代码 或者 来自节点的 CRM/工作表字段。
  4. PDF4me 合并和输出 PDF 发送到电子邮件或存储设备。
具有动态功能的 Webhook JSON
  1. Webhook接收订单/发票有效负载。
  2. 模板已加载一次 URL 或二进制存储。
  3. 将 webhook 正文映射到 文档数据文本 带着表情。
  4. 密钥仍必须匹配 <<[fieldName]>> 模板中的标签。
民众 URLs 用于模板和数据
  1. 主持人 template.docxdata.json 在公共场合 HTTPS URLs
  2. 模板文件输入类型 = URL模板文件 URL = 模板链接。
  3. 文档数据输入类型 = URL文档数据文件 URL = 数据链路。
  4. 无需预先下载节点。

常见问题解答

What placeholder syntax does PDF4me Word Template use?+
Use <<[fieldName]>> inside your .docx file. This is the PDF4me LINQ Reporting Engine syntax, not HTML mustache {{fieldName}}. For loops use <<foreach [item in items]>> ... <</foreach>>, for conditions use <<if [condition]>> ... <</if>>. See the Word Template Syntax guide for the full reference.
Why is a field blank in the generated PDF?+
The data key must match the template tag exactly, including case. InvNr in the template requires "InvNr" in JSON, not "invoiceNumber" or "invnr". Open template.docx and compare each <<[tag]>> with your data file. Empty values also render as blank without an error.
Can I use data.json as a file instead of pasting JSON?+
Yes. Load data.json with Read Binary File, set Document Data Input Type to Binary Data, Document Data Type to JSON, and point Document Binary Property to the binary field. If the template also uses binary property data, rename one property (e.g. template vs dataFile) or merge items from separate nodes.
JSON vs XML vs CSV: which should I use?+
JSON is the simplest for n8n because keys map directly to <<[fieldName]>> tags (as in data.json). XML (test.xml) uses PascalCase element names that PDF4me binds to the same template fields. CSV (test.csv) uses column headers matching the JSON keys, which is useful when data comes from spreadsheets or exports.
PDF or Word output?+
Set Output Type to PDF for sharing, emailing, or archiving. Set Output Type to Word when the recipient needs to edit the merged document after generation. The sample invoice works with both.

相关指南