HTML templat
Apa yang dibahas dalam panduan ini?
Panduan ini akan memandu Anda melalui proses rendering satu gambar. HTML faktur di dalam n8n menggunakan invoice_sample_1.html Dan invoice_sample_data_1.jsonTemplat ini menggunakan... sintaks kumis ({{recipient.name}}, {{#setiap subInfo}}). HTML adalah hanya tipe templat yang mendukung penempelan markup mentah di HTML KodeOutputnya adalah HTML hanya (ideal untuk isi email atau pratinjau web).
Sebelum Anda Mulai
invoice_sample_1.html adalah tata letak faktur lengkap dengan jalur bersarang ({{recipient.postalAddress.street1}}) dan perulangan item baris ({{#setiap subInfo}}). Jalur harus sama persis dengan struktur JSON Anda.invoice_sample_data_1.json (direkomendasikan), test.xml, atau test.csv. JSON menggunakan objek bersarang dan sebuah subInfo susunan. CSV Meratakan kolom dan menggunakan satu baris per item baris.Paket File Sampel
Unduh keempat file di bawah ini. Satu HTML template ditambah tiga format data dengan konten faktur yang sama.
Apa Isi File Sampel Tersebut?
Tata letak templat (invoice_sample_1.html)
Sampel ini ditata HTML faktur (tabel, logo, PDF4me (blok penjual). Bagian dinamis:
| Bagian dokumen | Konten statis (tetap dalam templat) | Tempat penampung kumis (diisi dari data) |
|---|---|---|
| Alamat penerima | (hanya tata letak) | {{recipient.name}}, {{coText}}, {{recipient.postalAddress.*}} |
| Blok penjual | PDF4meZurich, dev.pdf4me.com | (statis) |
| Pembeli / pengiriman | Label pembeli | {{buyer.name}}, {{coTextDelivery}}, {{buyer.postalAddress.*}} |
| Meta faktur | Tanggal Jatuh Tempo, Nomor Faktur, Diterbitkan Pada label | {{dueDate}}, {{invoiceNumber}}, {{issuedOn}} |
| Tabel item baris | Header Produk, Periode, Kuantitas, Harga, PPN, Total | {{#each subInfo}} … {{plan}}, {{quantity}}, {{vat}}, {{totalPrice}} |
| Kolom periode | (satu rentang per faktur) | {{periodStart}} - {{periodEnd}} |
| Jumlah baris | Label saldo total | {{totalAmount}} |
HTML templat yang digunakan {{fieldName}} Dan {{object.nestedKey}}Ulangi item baris dengan {{#each subInfo}} … {{/each}}Ini berbeda dengan templat Word, yang menggunakan <<[fieldName]>>Lihat HTML panduan pengaturan templat untuk pola lainnya.
:::catatan HTML Unggahan kode vs unggahan file HTML Kode hanya berlaku jika Jenis File Templat adalah HTMLUntuk Word, Formulir PDF, Mail Merge, atau Google Docs, gunakan Data Biner. Base64, atau URL alih-alih. :::
Pemetaan bidang di seluruh berkas data
| 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 |
Sampel JSON termasuk dua objek di dalam subInfo (PDF4me (paket dasar 1000 dan Paket Panggilan 2000). {{#each subInfo}} blok di dalam HTML Tampilkan satu baris sel tabel untuk setiap item.
Alur Kerja Secara Singkat
Tes tercepat: tempel HTML Dan JSON langsung di dalam PDF4me node (tidak memerlukan node file).
Manual Trigger → PDF4me Generate Document (Single) → (optional) Send Email / Write Binary File
| Melangkah | n8n simpul | Tujuan |
|---|---|---|
| 1 | Pemicu Manual | Mulai alur kerja sesuai permintaan |
| 2 | PDF4me → Buat Dokumen (Tunggal) | Tempel HTML Kode + JSON Teks, hasil yang ditampilkan HTML |
| 3 | Kirim Email atau Tulis File Biner (opsional) | Kirim atau simpan generated_document_output.html |
/generate-document-single-full-html.png)
Konfigurasi target: disalin HTML Kode + JSON di dalam Teks Data Dokumen + HTML keluaran
Langkah 1: Unduh File Contoh
- Unduh
invoice_sample_1.htmlDaninvoice_sample_data_1.jsondari Paket File Sampel di atas. - Buka kedua file tersebut di editor teks agar Anda dapat menyalin seluruh isinya ke dalam n8n simpul.
- Unduh secara opsional
test.xmlatautest.csvuntuk menguji XML atau CSV tipe data nanti.
Langkah 2: Buat n8n Alur kerja
- Di dalam n8n, buat alur kerja baru.
- Tambahkan Pemicu Manual simpul.
- Menambahkan PDF4me → Buat Dokumen (Tunggal) setelah pemicunya.
- Hubungkan milik Anda PDF4me kredensial.
Untuk produksi, Anda dapat menambahkan Baca File Biner simpul sebagai pengganti HTML Kode (lihat Masukan templat alternatif di bawah).
Langkah 3: Konfigurasi HTML Templat (HTML Kode)
Buka PDF4me node dan atur kolom template:
| Bidang | Nilai |
|---|---|
| Jenis File Templat | HTML |
| Jenis Keluaran | HTML (satu-satunya pilihan untuk HTML templat) |
| Tipe Input File Templat | HTML Kode |
| Nama File Templat | invoice_sample_1.html |
| HTML Kode | Tempelkan seluruh isi dari invoice_sample_1.html |
Jika cuplikan Anda menghilangkan... <html> atau <head>, node tersebut membungkusnya dalam bentuk dasar. HTML shell secara otomatis. File contoh adalah dokumen lengkap, jadi tempelkan apa adanya.
Langkah 4: Konfigurasi Data Dokumen (JSON)
| Bidang | Nilai |
|---|---|
| Jenis Input Data Dokumen | Teks |
| Jenis Data Dokumen | JSON |
| Teks Data Dokumen | Salin seluruh isi dari invoice_sample_data_1.json (lihat blok di bawah) |
{
"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"
}
Pengaturan node inti (ringkasan)
| Bidang | Nilai | Catatan |
|---|---|---|
| Kredensial untuk terhubung dengan | Milikmu PDF4me kredensial | Mendapatkan API kunci |
| Sumber | Generate | |
| Menghasilkan Operasi | Buat Dokumen (Tunggal) | |
| Nama Keluaran Data Biner | data (bawaan) | Outputnya adalah HTML dalam properti biner ini |
Langkah 5: Jalankan dan Verifikasi HTML
- Klik Jalankan alur kerja.
- Buka PDF4me keluaran node. Di bawah Binerproperti terbuka
data(generated_document_output.html). - Konfirmasikan bahwa faktur yang diterbitkan menunjukkan:
- Penerima → Test AG, cotext, Test Street 1/2, 8000 Zurich, Swiss
- Pembeli → nama pembeli, Teks pengiriman, Jalan Uji 1/2
- Meta faktur → Tanggal Jatuh Tempo 2025-04-30, Nomor Faktur 123456, Diterbitkan Pada 2025-04-01
- Item baris → PDF4me basis 1000 dan Paket Panggilan 2000 dengan kuantitas dan PPN
- Saldo total → 124.31
Jika placeholder kosong, periksa jalur kumis terhadap milik Anda. JSON. recipient.postalAddress.street1 Dalam templat tersebut, diperlukan struktur bersarang yang sama pada data.
Langkah 6: Kirim atau Simpan Output (Opsional)
Kirim Email: petakan PDF4me biner data sebagai HTML tubuh (aktifkan) HTML email).
Tulis File Biner:
| Bidang | Nilai |
|---|---|
| Nama File | invoice-output.html |
| Nama Properti Data | data |
| Jalur Keluaran | Folder tempat n8n harus menulis file |
Input Templat Alternatif: Muat HTML dari File
Jika Anda lebih suka tidak menempelkan HTML ke dalam simpul:
- Menambahkan Baca File Biner sebelum PDF4me dan arahkan ke
invoice_sample_1.html. - Di dalam PDF4me mengatur Tipe Input File Templat ke Data Biner, Properti Biner Templat ke
data, Nama File Templat keinvoice_sample_1.html. - Menyimpan Jenis Input Data Dokumen sebagai Teks dan tempelkan JSON seperti pada Langkah 4.
Anda juga dapat menjadi tuan rumah .html di tempat umum URL dan menggunakan Tipe Input File Templat: URL dengan File Templat URL.
Format Data Alternatif
Opsi A: JSON berkas sebagai biner (invoice_sample_data_1.json)
- Menambahkan Baca File Biner untuk JSON berkas (atau gunakan Menggabungkan node jika templatnya juga biner).
- Mengatur Jenis Input Data Dokumen ke Data Biner, Jenis Data Dokumen ke JSON, Properti Biner Dokumen ke kolom data Anda, Nama File Data Dokumen ke
invoice_sample_data_1.json.
Opsi B: XML (test.xml)
Mengatur Jenis Data Dokumen ke XML lalu tempelkan isi dari 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>
Opsi C: CSV (test.csv)
Mengatur Jenis Data Dokumen ke CSV dan tempelkan CSV tubuh. Sampel tersebut memiliki dua baris data (satu per subInfo item baris); kolom header menggunakan nama yang diratakan seperti recipient_name Dan 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
Pola Alur Kerja Produksi
Cara umum untuk menyediakan template HTML dan data dalam produksiOnce the sample test works, replace the Manual Trigger with these patterns.
- Webhook menerima muatan data penagihan.
- PDF4me berjalan dengan tetap HTML Kode templat.
- Webhook peta JSON ke Teks Data Dokumen.
- Kirim Email menggunakan output HTML sebagai isi pesan.
- Google Drive / Penyimpanan S3
invoice_sample_1.html. - Unduh beban node HTML sebagai biner.
- PDF4me: Tipe Input File Templat = Data Biner.
- Data yang dibuat dari Spreadsheet atau CRM sebagai JSON.
- Tuan rumah
.htmlDan.jsondi depan umum HTTPS URLs. - Mengatur Tipe Input File Templat = URL Dan Jenis Input Data Dokumen = URL.
- Tidak diperlukan node Read Binary File.
Pertanyaan yang Sering Diajukan
Panduan Terkait
- Gambaran umum pembuatan dokumen (tunggal): semua parameter, kolom keluaran, dan tipe templat
- PDF4me Templat Word: Kata
.docxdengan<<[field]>>tag dan PDF keluaran - Menghasilkan HTML dari templat di Make: pola yang sama pada Make