HTML modèle
Ce guide couvre
Ce guide vous accompagne dans le rendu d'un seul HTML facture dans n8n en utilisant exemple_de_facture_1.html et invoice_sample_data_1.jsonLe modèle utilise syntaxe de Mustache ({{nom du destinataire}}, {{#cha sous-info}}). HTML est le seulement type de modèle qui prend en charge le collage de code HTML brut dans HTML CodeLe résultat est HTML seulement (Idéal pour les corps de courriels ou les aperçus Web).
Avant de commencer
exemple_de_facture_1.html est une mise en page de facture complète avec des chemins imbriqués ({{recipient.postalAddress.street1}}) et une boucle d'élément de ligne ({{#cha sous-info}}Les chemins d'accès doivent correspondre exactement à votre structure JSON.invoice_sample_data_1.json (recommandé), test.xml, ou test.csv. JSON utilise des objets imbriqués et un sous-info tableau. CSV aplatit les champs et utilise une ligne par élément de ligne.Pack de fichiers d'exemple
Téléchargez les quatre fichiers ci-dessous. Un HTML modèle plus trois formats de données avec le même contenu de facture.
Que contiennent les fichiers d'exemple ?
Modèle de mise en page (invoice_sample_1.html)
L'échantillon est stylisé HTML facture (tableaux, logo, PDF4me bloc vendeur). Sections dynamiques :
| Section Documents | Contenu statique (fixé dans le modèle) | Espace réservé à la moustache (rempli à partir des données) |
|---|---|---|
| Adresse du destinataire | (mise en page uniquement) | {{recipient.name}}, {{coText}}, {{recipient.postalAddress.*}} |
| Blocage du vendeur | PDF4meZurich, dev.pdf4me.com | (statique) |
| Acheteur / livraison | Étiquette de l'acheteur | {{buyer.name}}, {{coTextDelivery}}, {{buyer.postalAddress.*}} |
| Métadonnées de la facture | Date d'échéance, numéro de facture, étiquette d'émission | {{dueDate}}, {{invoiceNumber}}, {{issuedOn}} |
| Tableau des articles | En-têtes : Produit, Période, Quantité, Prix, TVA, Total | {{#each subInfo}} … {{plan}}, {{quantity}}, {{vat}}, {{totalPrice}} |
| Colonne de période | (une seule plage par facture) | {{periodStart}} - {{periodEnd}} |
| Ligne totale | Étiquette de solde total | {{totalAmount}} |
HTML Les modèles utilisent {{fieldName}} et {{object.nestedKey}}. Répétez les éléments de ligne avec {{#each subInfo}} … {{/each}}Cela diffère des modèles Word, qui utilisent <<[fieldName]>>Voir le HTML guide de configuration du modèle Pour plus de modèles.
HTML Code n'est valable que lorsque Type de fichier modèle est HTMLPour Word, les formulaires PDF, le publipostage ou Google Docs, utilisez des données binaires. Base64, ou URL plutôt.
Cartographie des champs dans tous les fichiers de données
| HTML placeholder | JSON path (invoice_sample_data_1.json) | XML element (test.xml) | CSV column (test.csv) | Sample value |
|---|---|---|---|---|
{{recipient.name}} | recipient.name | Recipient/Name | recipient_name | Test AG |
{{coText}} | coText | CoText | coText | cotext |
{{recipient.postalAddress.street1}} | recipient.postalAddress.street1 | Recipient/PostalAddress/Street1 | recipient_street1 | Test Street1 |
{{recipient.postalAddress.street2}} | recipient.postalAddress.street2 | Recipient/PostalAddress/Street2 | recipient_street2 | Test Street2 |
{{recipient.postalAddress.zipCode}} {{city}} | recipient.postalAddress.zipCode, .city | Recipient/PostalAddress/ZipCode, City | recipient_zipCode, recipient_city | 8000 Zurich |
{{recipient.postalAddress.country}} | recipient.postalAddress.country | Recipient/PostalAddress/Country | recipient_country | Switzerland |
{{buyer.name}} | buyer.name | Buyer/Name | buyer_name | buyer name |
{{coTextDelivery}} | coTextDelivery | CoTextDelivery | coTextDelivery | Delivery text |
{{buyer.postalAddress.street1}} | buyer.postalAddress.street1 | Buyer/PostalAddress/Street1 | buyer_street1 | Test Street1 |
{{buyer.postalAddress.street2}} | buyer.postalAddress.street2 | Buyer/PostalAddress/Street2 | buyer_street2 | Test Street2 |
{{dueDate}} | dueDate | DueDate | dueDate | 2025-04-30 |
{{invoiceNumber}} | invoiceNumber | InvoiceNumber | invoiceNumber | 123456 |
{{issuedOn}} | issuedOn | IssuedOn | issuedOn | 2025-04-01 |
{{periodStart}} - {{periodEnd}} | periodStart, periodEnd | PeriodStart, PeriodEnd | periodStart, periodEnd | 2025-03-01 to 2025-03-31 |
{{#each subInfo}} {{plan}} | subInfo[].plan | SubInfo/Item/Plan | plan | PDF4me base 1000 |
{{quantity}} | subInfo[].quantity | SubInfo/Item/Quantity | quantity | 1 |
{{vat}} | subInfo[].vat | SubInfo/Item/Vat | vat | 2.83 |
{{totalPrice}} | subInfo[].totalPrice | SubInfo/Item/TotalPrice | totalPrice | 37.83 |
{{totalAmount}} | totalAmount | TotalAmount | totalAmount | 124.31 |
L'échantillon JSON comprend deux objets dans subInfo (PDF4me base 1000 et forfait d'appel 2000). {{#each subInfo}} blocs dans le HTML Afficher une ligne de tableau par élément.
Aperçu du flux de travail
Test le plus rapide : coller HTML et JSON directement dans le PDF4me nœud (aucun nœud de fichier requis).
Manual Trigger → PDF4me Generate Document (Single) → (optional) Send Email / Write Binary File
| Étape | n8n nœud | But |
|---|---|---|
| 1 | Déclencheur manuel | Démarrer le flux de travail à la demande |
| 2 | PDF4me → Générer un document (unique) | Pâte HTML Code + JSON Texte, rendu HTML |
| 3 | Envoyer un e-mail ou Écrire un fichier binaire (facultatif) | Livrer ou économiser generated_document_output.html |
/generate-document-single-full-html.png)
Configuration cible : collée HTML Code + JSON dans Texte des données du document + HTML sortir
Étape 1 : Télécharger les fichiers d’exemple
- Télécharger
invoice_sample_1.htmletinvoice_sample_data_1.jsonde la Pack de fichiers d'exemple au-dessus de. - Ouvrez les deux fichiers dans un éditeur de texte afin de pouvoir copier l'intégralité de leur contenu dans le n8n nœud.
- Téléchargement facultatif
test.xmloutest.csvtester XML ou CSV types de données plus tard.
Étape 2 : Créer le n8n Flux de travail
- Dans n8n, créez un nouveau flux de travail.
- Ajouter un Déclencheur manuel nœud.
- Ajouter PDF4me → Générer un document (unique) après le déclencheur.
- Connectez votre PDF4me titre.
Pour la production, vous pouvez ajouter un Lire le fichier binaire nœud au lieu de HTML Code (voir Modèle d'entrée alternatif ci-dessous).
Étape 3 : Configurer HTML Modèle (HTML Code)
Ouvrez le PDF4me nœud et définir les champs du modèle :
| Champ | Valeur |
|---|---|
| Type de fichier modèle | HTML |
| Type de sortie | HTML (seule option pour HTML modèles) |
| Type de fichier modèle | HTML Code |
| Nom du fichier modèle | invoice_sample_1.html |
| HTML Code | Collez le entier contenu de invoice_sample_1.html |
:::conseil partiel HTML est OK
Si votre extrait omet <html> ou <head>, le nœud l'encapsule dans un nœud de base HTML Le script s'ouvre automatiquement. Le fichier d'exemple est un document complet ; collez-le tel quel.
:::
Étape 4 : Configurer les données du document (JSON)
| Champ | Valeur |
|---|---|
| Type de saisie de données du document | Texte |
| Type de données du document | JSON |
| Texte des données du document | Collez l'intégralité du contenu de invoice_sample_data_1.json (voir bloc ci-dessous) |
{
"recipient": {
"name": "Test AG",
"postalAddress": {
"street1": "Test Street1",
"street2": "Test Street2",
"zipCode": "8000",
"city": "Zurich",
"country": "Switzerland"
}
},
"coText": "cotext",
"buyer": {
"name": "buyer name",
"postalAddress": {
"street1": "Test Street1",
"street2": "Test Street2"
}
},
"coTextDelivery": "Delivery text",
"dueDate": "2025-04-30",
"invoiceNumber": "123456",
"issuedOn": "2025-04-01",
"subInfo": [
{
"plan": "PDF4me base 1000",
"quantity": 1,
"price": 35,
"vat": 2.83,
"totalPrice": 37.83
},
{
"plan": "Call Package 2000",
"quantity": 1,
"price": 80,
"vat": 6.48,
"totalPrice": 86.48
}
],
"totalAmount": 124.31,
"periodStart": "2025-03-01",
"periodEnd": "2025-03-31"
}
Paramètres du nœud principal (résumé)
| Champ | Valeur | Notes |
|---|---|---|
| Identifiant pour se connecter avec | Ton PDF4me titre | Obtenir API clé |
| Ressource | Generate | |
| Générer des opérations | Générer un document (unique) | |
| Nom de la sortie de données binaires | data (défaut) | Le résultat est HTML dans cette propriété binaire |
Étape 5 : Exécuter et vérifier HTML
- Cliquez Exécuter le flux de travail.
- Ouvrez le PDF4me Sortie du nœud. Sous Binaire, propriété ouverte
data(generated_document_output.html). - Veuillez vérifier que la facture rendue indique :
- Destinataire → Test AG, cotext, Test Street 1/2, 8000 Zurich, Suisse
- Acheteur → Nom de l'acheteur, Texte de livraison, Rue de test 1/2
- Métadonnées de la facture → Date d'échéance : 30/04/2025, Numéro de facture : 123456, Date d'émission : 01/04/2025
- Ligne de commande → PDF4me Base 1000 et forfait d'appel 2000 avec quantités et TVA
- Solde total → 124,31
Si un espace réservé s'affiche vide, vérifiez le chemin Mustache par rapport à votre JSON. recipient.postalAddress.street1 Le modèle exige la même structure imbriquée dans les données.
Étape 6 : Envoyer ou enregistrer le résultat (facultatif)
Envoyer un courriel : cartographier PDF4me binaire data comme le HTML corps (activer) HTML e-mail).
Écrire un fichier binaire :
| Champ | Valeur |
|---|---|
| Nom de fichier | invoice-output.html |
| Nom de la propriété de données | data |
| Chemin de sortie | Dossier où n8n devrait écrire le fichier |
Modèle d'entrée alternatif : Charger HTML à partir du fichier
Si vous préférez ne pas coller HTML dans le nœud :
- Ajouter Lire le fichier binaire avant PDF4me et le diriger vers
invoice_sample_1.html. - Dans PDF4me ensemble Type de fichier modèle à Données binaires, Propriété binaire du modèle à
data, Nom du fichier modèle àinvoice_sample_1.html. - Garder Type de saisie de données du document comme Texte et collez le JSON comme à l'étape 4.
Vous pouvez également héberger le .html dans un public URL et utiliser Type d'entrée de fichier modèle : URL avec Fichier modèle URL.
Formats de données alternatifs
Option A : JSON fichier en tant que binaire (invoice_sample_data_1.json)
- Ajouter Lire le fichier binaire pour le JSON fichier (ou utilisez un Fusionner nœud si le modèle est également binaire).
- Ensemble Type de saisie de données du document à Données binaires, Type de données du document à JSON, Propriété binaire du document à votre champ de données, Nom du fichier de données du document à
invoice_sample_data_1.json.
Option B : XML (test.xml)
Ensemble Type de données du document à XML et collez le contenu de test.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Invoice>
<Recipient>
<Name>Test AG</Name>
<PostalAddress>
<Street1>Test Street1</Street1>
<Street2>Test Street2</Street2>
<ZipCode>8000</ZipCode>
<City>Zurich</City>
<Country>Switzerland</Country>
</PostalAddress>
</Recipient>
<CoText>cotext</CoText>
<Buyer>
<Name>buyer name</Name>
<PostalAddress>
<Street1>Test Street1</Street1>
<Street2>Test Street2</Street2>
</PostalAddress>
</Buyer>
<CoTextDelivery>Delivery text</CoTextDelivery>
<DueDate>2025-04-30</DueDate>
<InvoiceNumber>123456</InvoiceNumber>
<IssuedOn>2025-04-01</IssuedOn>
<SubInfo>
<Item>
<Plan>PDF4me base 1000</Plan>
<Quantity>1</Quantity>
<Price>35</Price>
<Vat>2.83</Vat>
<TotalPrice>37.83</TotalPrice>
</Item>
<Item>
<Plan>Call Package 2000</Plan>
<Quantity>1</Quantity>
<Price>80</Price>
<Vat>6.48</Vat>
<TotalPrice>86.48</TotalPrice>
</Item>
</SubInfo>
<TotalAmount>124.31</TotalAmount>
<PeriodStart>2025-03-01</PeriodStart>
<PeriodEnd>2025-03-31</PeriodEnd>
</Invoice>
Option C : CSV (test.csv)
Ensemble Type de données du document à CSV et collez le CSV corps. L'échantillon a deux lignes de données (un par subInfo élément de ligne) ; les colonnes d'en-tête utilisent des noms aplatis comme recipient_name et plan:
recipient_name,recipient_street1,recipient_street2,recipient_zipCode,recipient_city,recipient_country,coText,buyer_name,buyer_street1,buyer_street2,coTextDelivery,dueDate,invoiceNumber,issuedOn,periodStart,periodEnd,totalAmount,plan,quantity,price,vat,totalPrice
"Test AG","Test Street1","Test Street2","8000","Zurich","Switzerland","cotext","buyer name","Test Street1","Test Street2","Delivery text","2025-04-30","123456","2025-04-01","2025-03-01","2025-03-31",124.31,"PDF4me base 1000",1,35,2.83,37.83
"Test AG","Test Street1","Test Street2","8000","Zurich","Switzerland","cotext","buyer name","Test Street1","Test Street2","Delivery text","2025-04-30","123456","2025-04-01","2025-03-01","2025-03-31",124.31,"Call Package 2000",1,80,6.48,86.48
Modèles de flux de production
Méthodes courantes de fourniture de modèles HTML et de données en productionOnce the sample test works, replace the Manual Trigger with these patterns.
- Le webhook reçoit les données de facturation.
- PDF4me s'exécute avec des exécutions fixes HTML Code modèle.
- Webhook de carte JSON à Texte des données du document.
- Envoyer un e-mail utilise la sortie HTML comme corps du message.
- Google Drive / Magasins S3
exemple_de_facture_1.html. - Chargement des nœuds de téléchargement HTML en binaire.
- PDF4me: Type de fichier modèle = Données binaires.
- Données issues de Sheets ou CRM comme JSON.
- Hôte
.htmlet.jsonen public HTTPS URLs. - Ensemble Type de fichier modèle = URL et Type de saisie de données du document = URL.
- Aucun nœud de lecture de fichier binaire requis.
Foire aux questions
Guides associés
- Aperçu de la génération de documents (unique): tous les paramètres, champs de sortie et types de modèles
- PDF4me Modèle Word: Mot
.docxavec<<[field]>>étiquettes et PDF sortir - Générer HTML à partir du modèle dans Make: même modèle dans Make