使用Integromat和PDF4me生成动态发票

By Nishanth Asokan | 文件自动化

使用Integromat和PDF4me生成动态发票

动态文件生成是自动创建一批文件的过程,这些文件是用来源的动态数据进行个性化处理。例如,一张发票可能是个性化的,按名字称呼每个收件人。用动态数据创建文档需要一个数据源,如列表、电子表格、数据库、JSON或数组。合并字段是预定义模板中的占位符,以后将使用来自上述之一或任何其他支持的数据源的数据进行替换。

用动态数据创建发票需要应用邮件合并或使用合并字段等技术。最流行的动态文档生成方法之一涉及到使用mustache渲染,这在设计模板时要容易得多。自定义发票是基于使用Word或其他具有合并字段功能的表格创建者创建的文档模板。这里我们讨论使用mustache语法创建的模板–{{placeholder field}}–后来被动态数据所取代。

PDF4me 在Integromat中生成文档动作可以让你创建场景来生成动态文档,并使其自动化。如果你准备好了模板和动态数据,生成过程就可以自动化。模板可以是一个Word文件或HTML,或任何其他支持的格式。数据可以是Spreadsheet、CSV、JSON、XML或数据列表。

生成动态发票

使用Integromat生成带有动态数据的发票需要将模板和数据存储在云存储平台上。至少,模板应该在云存储中,如Dropbox,但数据可以直接传递到输入数据字段。

让我们看看使用Integromat方案创建一个像下面这样的发票样本。

用于动态开票的小胡子模板

在我们的用例中,预计在Dropbox的位置会有以下样本。

添加一个观察文件的触发器来启动场景

创建一个Dropbox模块来观察模板的到来。一旦新的模板文件到达文件夹中,就会触发该场景。

为Dropbox模块观察文件的行动

添加一个下载文件的Dropbox动作

一旦在源文件夹中检测到模板文件,带有下载文件动作的Dropbox模块将把文件从存储器中传到PDF4me动作中。我们需要添加2个下载文件的动作。

一个用于下载模板。

为Dropbox模块下载文件的动作

另一个用于下载JSON数据

从Dropbox下载JSON数据

添加PDF4me模块用于生成文档动作

接下来在方案中,我们必须添加PDF4me模块与生成文档的动作。在这里,你需要配置模板类型,输出类型,和输入数据。输入数据可以直接输入到字段中,或者在我们的案例中,配置为从JSON文件中获取数据。

用于Integromat的PDF4me生成文档模块

对于用例中的模板,输入字段的数据应该如下所示。

{
    "Documents": [
        {
            "header": {
                "docType": "Original Copy"
            },
            "body": {
                "Column1": "Quantity",
                "Column2": "Description",
                "Column3": "Unit Price",
                "Column4": "Total",
                "Invoice": {
                    "number": 14957,
                    "date": "25-02-2022",
                    "instructions": "Instruction Invoice 1",
                    "subTotal": 200150,
                    "tax": "18%",
                    "dueDate": "25-03-2022",
                    "shipping": "200"
                },
                "Biller": {
                    "phone": "989797",
                    "fax": "998463",
                    "email": "[email protected]",
                    "web": "www.doc1.com",
                    "address": {
                        "company": "Organization 1",
                        "street": "Street 1",
                        "city": "City 1",
                        "zip": "123456"
                    }
                },
                "Recepient": {
                    "name": "recepeint 1",
                    "address": {
                        "street": "testveien 3 ",
                        "city": "City 1",
                        "zipcode": "0555",
                        "country": "Country 1"
                    }
                },
                "Product": [
                    {
                        "quantity": 1,
                        "description": "item 1",
                        "unitPrice": 45,
                        "totalPrice": 867
                    },
                    {
                        "quantity": 2,
                        "description": "item 2",
                        "unitPrice": 123,
                        "totalPrice": 3464
                    },
                    {
                        "quantity": 3,
                        "description": "item 3",
                        "unitPrice": 323,
                        "totalPrice": 6564
                    }
                ]
            },
            "footer": {
                "phone": "phone123",
                "fax": "fax123",
                "email": "[email protected]",
                "web": "www.123.com"
            }
        
        }
    ]
}

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

很明显,PDF4me动作将根据数据生成多个文件。为了处理这个问题,我们需要一个Integromat Iterator模块来处理下一个动作的每个文件。

输出文件的流量控制迭代器

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

用上传文件的动作创建一个Dropbox模块,将所有文件保存到所需的文件夹中。

为Dropbox模块上传文件的动作

我们方案的输出应该与下面的文件类似。

最终合并的模板

通过PDF4me 开发者订阅,你可以在Integromat中创建场景,能够以低成本自动生成具有动态数据的大量文档。该订阅确保你的自动化永远不会因为API调用数量的短缺而停止。

Related Blog Posts