跳到主要内容

使用 Make 从 HTML 模板进行动态开票

4 min read
PDF4me Team

生成动态文档是任何企业运营中不可或缺的一部分。我们处理大量的电子文档,这些文档需要根据每个收件人的实际情况进行动态数据定制。这些文档包括报价单、合同、发票、报告等等,它们可能使用通用模板,但数据是动态的。此外,根据公司规模,我们还需要批量生成这些文档。

在某些情况下,您还需要生成 HTML 格式的文档,以便在浏览器中显示或以链接形式分享。例如,发票、收据等都会生成为 HTML 页面,以便收件人可以在其浏览器中快速查看。PDF4me 允许您使用 HTML 模板和数据源生成此类 HTML 文档。借助_Mustache 渲染或邮件合并功能,_您可以根据需要生成任意数量的文档。

PDF4me 的“生成文档”功能(位于 Make 中)允许您创建场景,使用 HTML 模板生成 HTML 格式的动态文档。

使用 HTML 模板实现动态发票

如果您已准备好模板和动态数据,则可以实现生成过程的自动化。模板需要是一个存储在云存储中的 HTML 文件。数据可以是电子表格、CSV、JSON、XML 或数据列表。

让我们以 Make 场景为例,创建一个如下所示的示例发票。

在这种情况下,示例 HTML 模板应该位于 Dropbox 位置。

添加文件监视触发器以启动场景

创建一个 Dropbox 模块来监听模板文件的到达。一旦新的 HTML 模板文件到达文件夹,该场景就会被触发。

请留意 Dropbox 的文件模块。

添加 Dropbox 的下载文件模块

一旦在源文件夹中检测到模板文件,带有“下载文件”操作的 Dropbox 模块就会将文件从存储设备传递给 PDF4me 操作。我们需要添加两个“下载文件”操作——一个用于下载 HTML 模板。

下载 HTML 模板

另一个用于下载与模板对应的 JSON 数据。

下载 JSON 数据文件

添加 PDF4me 模块以生成文档操作

接下来,我们需要添加 PDF4me 模块及其“生成文档”操作。在这里,您需要将模板类型和输出类型都配置为 HTML,并设置输入数据源。输入数据可以直接在字段中输入,或者像我们这里一样,配置为从 JSON 文件中获取数据。

PDF4me 生成文档操作

对于此用例模板,输入字段的数据应如下所示:

{ "文档": [ { "页眉": { "文档类型": "原件" }, "正文": { "列1": "数量", "列2": "描述", "列3": "单价", "列4": "总计", "发票": { "编号": 14957, "日期": "2022年2月25日", "说明": "发票1说明", "小计": 200150, "税额": "18%", "到期日": "2022年3月25日", "运费": "200" }, "开票人": { "电话": "989797", "传真": "998463", "电子邮件": "[email protected]", "网址": "www.doc1.com", "地址": { "公司": "机构1", "街道": "街道1", "城市": "城市1", "邮编": "123456" } }, "收件人": { "姓名": "收件人 1", "地址": { "街道": "testveien 3 ", "城市": "城市 1", "邮编": "0555", "国家": "国家 1" } }, "产品": [ { "数量": 1, "描述": "商品 1", "单价": 45, "总价": 867 }, { "数量": 2, "描述": "商品 2", "单价": 123, "总价": 3464 }, { "数量": 3, "描述": "商品 3", "单价": 323, "总价": 6564 } ] }, "页脚": { "电话": "phone123", "传真": "fax123", "电子邮件": "[email protected]", "网址": "www.123.com" }

} ] }

添加迭代器来处理多个输出文件

显而易见,PDF4me 操作会根据数据生成多个文件。为了处理这种情况,我们需要一个 Make 迭代器模块来处理每个文件,以便进行下一次操作。

用于处理输出文件的迭代器

添加 Dropbox 上传模块以保存输出文件

创建一个 Dropbox 模块,并添加“上传文件”操作,将所有 HTML 文件保存到指定文件夹。HTML 模板将仅生成 HTML 输出。如果您希望生成 PDF 文件作为输出,可以添加一个“转换为 PDF”操作。

我们的场景输出结果应该与以下文档类似。