Dynamische Rechnungen mit Make und PDF4me generieren

By Nishanth Asokan | Automatisierung

Dynamische Rechnungen mit Make und PDF4me generieren

Unter dynamischer Dokumentenerstellung versteht man die automatische Erstellung eines Stapels von Dokumenten, die mit dynamischen Daten aus einer Quelle personalisiert sind. Zum Beispiel könnte eine Rechnung so personalisiert werden, dass jeder Empfänger mit seinem Namen angesprochen wird. Für die Erstellung von Dokumenten mit dynamischen Daten ist eine Datenquelle erforderlich, z. B. eine Liste, eine Tabellenkalkulation, eine Datenbank, JSON oder Arrays. Seriendruckfelder sind Platzhalter in vordefinierten Vorlagen, die später durch Daten aus einer der oben genannten oder anderen unterstützten Datenquellen ersetzt werden.

Die Erstellung einer Rechnung mit dynamischen Daten erfordert die Anwendung von Techniken wie Seriendruck oder die Verwendung von Seriendruckfeldern. Eine der populärsten Methoden der dynamischen Dokumentenerstellung ist das Mustache-Rendering, das bei der Gestaltung von Vorlagen wesentlich einfacher ist. Benutzerdefinierte Rechnungen basieren auf Dokumentvorlagen, die mit Word oder anderen Formularerstellungsprogrammen erstellt wurden, die über Seriendruckfeldfunktionen verfügen. Hier geht es um die Verwendung von Vorlagen, die mit der Mustache-Syntax - {{Platzhalterfeld}} - erstellt werden, die später durch die dynamischen Daten ersetzt wird.

Mit PDF4me Dokumentenerzeugungsaktion in Make können Sie Szenarien zur Erzeugung dynamischer Dokumente erstellen und diese automatisieren. Der Generierungsprozess kann automatisiert werden, wenn Sie die Vorlage und die dynamischen Daten bereithalten. Bei der Vorlage kann es sich um eine Word-Datei, HTML oder ein anderes unterstütztes Format handeln. Bei den Daten kann es sich um eine Tabellenkalkulation, CSV, JSON, XML oder eine Datenliste handeln.

Erzeugen einer dynamischen Rechnung

Für die Erstellung einer Rechnung mit dynamischen Daten mit Make müssen die Vorlage und die Daten in einer Cloud-Speicherplattform gespeichert werden. Zumindest die Vorlage sollte in einem Cloud-Speicher wie Dropbox liegen, aber die Daten können direkt an ein Eingabedatenfeld übergeben werden.

Lassen Sie uns eine Beispielrechnung wie unten mit einem Make-Szenario erstellen.

Mustache-Vorlage für die dynamische Rechnungsstellung

In unserem Anwendungsfall wird erwartet, dass das folgende Beispiel an einem Dropbox-Standort verfügbar ist.

Hinzufügen eines Auslösers für die Überwachung von Dateien zum Starten des Szenarios

Erstellen Sie ein Dropbox-Modul, das auf das Eintreffen der Vorlagen wartet. Sobald die neue Vorlagendatei im Ordner eintrifft, wird das Szenario ausgelöst.

Aktion 'Dateien beobachten' für das Dropbox-Modul

Hinzufügen einer Dropbox-Aktion zum Herunterladen von Dateien

Sobald die Vorlagendatei im Quellordner erkannt wird, übergibt das Dropbox-Modul mit der Aktion Datei herunterladen die Datei aus dem Speicher an die PDF4me-Aktion. Wir müssen 2 Aktionen zum Herunterladen von Dateien hinzufügen.

Eine zum Herunterladen der Vorlage.

Aktion zum Herunterladen von Dateien für das Dropbox-Modul

Ein weiterer für das Herunterladen der JSON-Daten

JSON-Daten von Dropbox herunterladen

PDF4me-Modul für die Aktion “Dokument generieren” hinzufügen

Als Nächstes müssen wir im Szenario das PDF4me-Modul mit der Aktion Dokument generieren hinzufügen. Hier müssen Sie den Vorlagentyp, den Ausgabetyp und die Eingabedaten konfigurieren. Die Eingabedaten können entweder direkt in das Feld eingegeben werden oder in unserem Fall so konfiguriert werden, dass die Daten aus der JSON-Datei abgerufen werden.

PDF4me Modul zur Dokumentenerzeugung für Make

Die Daten für das Eingabefeld sollten für die Vorlage im Anwendungsfall wie unten dargestellt aussehen:

{
    "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"
            }
        
        }
    ]
}

Hinzufügen eines Iterators zur Verarbeitung mehrerer Ausgabedateien

Es ist offensichtlich, dass die PDF4me-Aktion mehrere Dateien auf der Grundlage der Daten erzeugt. Um dies zu bewältigen, benötigen wir ein Make-Iterator-Modul, das jede Datei für die nächste Aktion verarbeitet.

Iterator zur Flusskontrolle für Ausgabedateien

Dropbox-Upload-Modul zum Speichern der Ausgabedateien hinzufügen

Erstellen Sie ein Dropbox-Modul mit der Aktion Dateien hochladen, um alle Dateien im gewünschten Ordner zu speichern.

Aktion zum Hochladen von Dateien für das Dropbox-Modul

Die Ausgabe unseres Szenarios sollte ähnlich wie das folgende Dokument aussehen.

Endgültig zusammengeführte Vorlage

Mit einem PDF4me Developer Subscription können Sie in Make Szenarien erstellen, die die Massengenerierung von Dokumenten mit dynamischen Daten zu geringen Kosten automatisieren können. Das Abonnement stellt sicher, dass Ihre Automatisierung niemals aufgrund eines Mangels an API-Aufrufen unterbrochen wird.

Related Blog Posts