Lewati ke konten utama

Membuat templat lanjutan untuk pembuatan dokumen

12 min read
SEO and Content Writer

Pembuatan dokumen dengan mail merge adalah proses membaca nilai dari sumber data dan menaruh setiap nilai ke placeholder yang cocok di sebuah templat. Anda menyimpan dua hal: sebuah templat yang berisi bidang gabungan (variabel yang menunggu diisi) dan sebuah sumber data yang menyediakan nilai-nilai serta segala hal yang tetap sama di setiap salinan. Mesin pelaporan PDF4me mengambil kedua berkas itu dan mengembalikan dokumen yang sudah jadi.

PDF4me menerima templat Word, HTML, dan PDF, dan yang terkaya di antara ketiganya adalah Word. Dengan sintaks yang ringkas dan mudah dibaca, Anda dapat merancang satu templat Word yang mencakup faktur, tanda terima, kontrak, penawaran, atau dokumen personalisasi apa pun, lalu menghasilkan ribuan dari data. Panduan ini menelusuri seluruh sintaks — bidang gabungan, kondisi, pemformatan, tabel, gambar, dan HTML sebaris — dengan contoh siap salin dan templat contoh yang bisa Anda unduh dan jalankan. Setiap tautan sintaks mengarah ke halaman yang tepat di dokumentasi sintaks templat Word.

Komponen dalam sekilas
Bidang gabungan
Placeholder inti. Tulis <<[FieldName]>> di Word dan mesin menggantinya dengan nilai yang cocok dari data Anda.
Kondisi
Tampilkan atau sembunyikan konten dengan <<if>>, <<elseif>>, dan <<else>> sehingga satu templat mencakup setiap kasus.
Pemformatan
Bentuk sebuah nilai secara sebaris dengan <<[token]:"format">> untuk tanggal, format angka, dan huruf besar/kecil.
Tabel dan perulangan
Ulangi satu baris atau seluruh bagian untuk setiap item dalam daftar dengan <<foreach>>.
Gambar
Taruh logo, foto, atau tanda tangan ke dalam kotak teks dengan <<image [imageUrl]>> dari URL atau Base64.
HTML sebaris
Render HTML yang sudah terformat langsung ke dokumen dengan sakelar <<[token] -html>>.
Versi singkat

Tulis placeholder sebagai <<[FieldName]>> di dokumen Word. Tambahkan kondisi, pemformatan, perulangan, gambar, dan HTML dengan beberapa token tambahan. Kirim templat itu bersama berkas data JSON (atau XML) ke aksi Generate Document PDF4me, dan Anda menerima dokumen personalisasi yang sudah jadi — sekali, atau ribuan kali.

Bagaimana cara merancang templat Word?​

Semuanya dimulai dari satu placeholder. Di mana pun Anda ingin sebuah nilai disisipkan, ketik nama bidang yang dibungkus tanda kurung sudut ganda dan tanda kurung siku:

<<[FieldName]>>

Nama di dalam kurung harus cocok dengan properti di sumber data Anda. Jaga nama tetap deskriptif, patuhi satu konvensi (camelCase atau PascalCase), dan hindari karakter khusus. Berikut templat minimal dan data yang mengisinya:

Dear <<[CustomerName]>>,

Thank you for your order #<<[OrderNumber]>>.
{
"CustomerName": "John Smith",
"OrderNumber": "12345"
}

Mesin mengembalikan:

Dear John Smith,

Thank you for your order #12345.

Itulah keseluruhan idenya. Semua yang di bawah ini adalah variasi dari prinsip yang sama — kondisi, perulangan, dan pemformatan selalu membungkus bidang gabungan biasa. Detail lengkap ada di Ikhtisar Sintaks.

Bagaimana cara menambahkan kondisi ke templat?​

Aksi Generate Document dapat bercabang berdasarkan data Anda. Bergantung apakah suatu kondisi benar, ia menyisipkan satu blok konten atau blok lain. Struktur dasar if / elseif / else terbaca seperti ini:

<<if [condition1]>> Add the first block
<<elseif [condition2]>> Add the second block
<<else>> Add the fallback block
<</if>>

Kondisi dapat menguji sebuah nilai secara langsung atau bersandar pada metode enumerasi (lihat di bawah), misalnya <<if [employees.Any(p => p.Age > 50)]>>. Kumpulan lengkap operator perbandingan dan logika ada di Logika Kondisional.

Bagaimana cara memformat nilai di templat?​

Sering kali nilai mentah perlu dirapikan sebelum disisipkan — tanggal dengan gaya tertentu, angka yang dibulatkan, teks huruf besar. Tambahkan spesifikasi format setelah nama bidang, dipisahkan titik dua dan diapit tanda kutip:

<<[token]:"format">>

Tanggal memakai pola gaya .NET:

Invoice Date: <<[invoiceDate]:"dd.MM.yyyy">>
Due Date: <<[dueDate]:"MMMM dd, yyyy">>

Huruf besar/kecil punya sakelar pendek sendiri — :upper, :caps (mengapitalkan setiap kata), dan :firstCap:

Customer: <<[customerName]:upper>>
Product: <<[productName]:caps>>

Angka memakai format numerik standar, sehingga <<[price]:"F2">> menetapkan nilai ke dua desimal. Daftar lengkap pola tanggal, teks, dan angka ada di Pemformatan di Templat.

Bagaimana cara membangun tabel dari sebuah daftar?​

Di tabel-lah pembuatan dokumen menunjukkan nilainya — satu baris templat mengembang menjadi sebanyak baris yang dimiliki data Anda. Buat tabel Word biasa, buka perulangan <<foreach>> di sel pertama, tambahkan bidang gabungan di setiap sel berikutnya, dan tutup perulangan di sel terakhir:

Column 1: <<foreach [product in products]>><<[product.productName]>>
Column 2: <<[product.manufactured]:"yyyy.MM.dd">>
Column 3: <<[product.price]>><</foreach>>

Setiap objek dalam array products menjadi satu baris, dan Anda bisa memformat sel secara sebaris seperti di tempat lain. Pola tabel lainnya, termasuk baris yang difilter dan diagregasi, dibahas di Tabel di Templat.

Bagaimana cara mengulang paragraf dan bagian?​

Perulangan <<foreach>> yang sama juga bekerja di luar tabel. Bungkus blok konten apa pun — sebuah paragraf, judul beserta isinya, satu bagian utuh — dan ia akan berulang sekali per item dalam koleksi:

<<foreach [item in collection]>>
Content with <<[item.property]>>
<</foreach>>

Perulangan bisa bersarang (satu bagian per departemen, satu baris per karyawan di dalamnya) dan bisa memfilter atau mengurutkan koleksi sambil berjalan. Lihat Mengulang Paragraf & Bagian untuk contoh bersarang dan kondisional.

Bagaimana cara menambahkan gambar ke templat?​

PDF4me dapat menarik gambar ke dokumen yang dihasilkan dari URL publik atau string Base64. Satu aturan penting: bidang gambar harus berada di dalam Kotak Teks Word. Buat kotak teks di tempat yang Anda inginkan untuk gambar, lalu tambahkan bidangnya.

Dari URL publik:

<<image [imageUrl]>>

Dari string berenkode Base64:

<<image [imageBase64]>>

Anda mengontrol ukuran dengan sakelar seperti -keepRatio, -fitHeight, -fitWidth, dan -fitSize, mis. <<image [companyLogo] -keepRatio>>. Referensi ukuran lengkap dan contoh gambar per baris ada di Menyisipkan Gambar.

Bagaimana cara menyisipkan HTML ke templat?​

Jika data Anda sudah berisi HTML terformat, render di tempat dengan sakelar -html alih-alih meng-escape-nya sebagai teks biasa:

<<[token] -html>>

Mesin mem-parse nilai bidang sebagai HTML dan menerapkan pemformatannya — tebal, miring, daftar, judul, span berwarna, dan lainnya — di dalam dokumen yang dihasilkan. Tag dan gaya yang didukung tercantum di Menyisipkan HTML.

Olah data Anda dengan metode enumerasi​

Selain bidang sederhana, mesin menyediakan metode bergaya IEnumerable yang bisa Anda panggil langsung di dalam sebuah token — memfilter, mengurutkan, menghitung, merata-ratakan, dan lainnya. Beberapa contoh:

Total products: <<[products.Count()]>>
Average price: $<<[products.Average(p => p.price)]:"F2">>
Top items: <<foreach [p in products.OrderByDescending(x => x.price).Take(5)]>><<[p.name]>><</foreach>>

Metode-metode ini berpadu alami dengan kondisi dan perulangan. Daftar metode lengkap — Where, OrderBy, GroupBy, Sum, Any, First, dan lainnya — ada di Enumerasi di Templat.

Templat contoh untuk dicoba
Unduh templat Word siap pakai beserta data JSON-nya, lalu jalankan melalui aksi Generate Document untuk melihat semuanya bekerja dari awal sampai akhir.

Data contoh terlihat seperti ini — seorang vendor, seorang pelanggan, dan daftar produk yang diiterasi oleh templat:

{
"VendorName": "PDF4me",
"VendorCity": "Zurich",
"VendorCountry": "Switzerland",
"VendorZip": "8630",
"VendorContact": "123456",
"InvoiceDate": "22-08-2022",
"CustomerName": "John Doe",
"CustomerCity": "Start City",
"CustomerCountry": "US",
"CustomerZip": "3214",
"products": [
{ "productName": "PDF Converter", "value": 2000, "expires": "01/08/2025" },
{ "productName": "PDF API", "value": 1250, "expires": "18/02/2029" },
{ "productName": "PDF Editor", "value": 1999, "expires": "12/12/2027" }
],
"comments": "This document is <b>computer generated</b> and does not require a signature."
}

Perhatikan comments membawa HTML — pasangkan dengan sakelar <<[comments] -html>> dan tag <b> akan dirender tebal pada keluaran.

Tautan cepat untuk merancang templat Anda​


Pertanyaan umum​

Bagaimana cara membuat bidang gabungan di templat Word?​

Ketik nama bidang di dalam tanda kurung sudut ganda dan kurung siku, seperti <<[CustomerName]>>, di mana pun Anda ingin menyisipkan nilai. Nama harus cocok dengan properti di sumber data JSON atau XML Anda. Anda bisa menambahkan bidang secara manual di mana saja — judul, paragraf, sel tabel, atau kotak teks.

Format templat apa saja yang didukung PDF4me?​

Word (.docx, .doc), HTML, dan PDF. Ketiganya memakai sintaks bidang gabungan yang sama, jadi apa yang Anda pelajari untuk templat Word bisa dipindahkan. Word memberi kontrol paling lengkap atas tata letak, kondisi, tabel, dan gambar.

Bisakah saya menambahkan kondisi if/else ke templat Word?​

Bisa. Bungkus konten dengan <<if [condition]>> ... <<elseif [condition]>> ... <<else>> ... <</if>>. Sebuah kondisi dapat membandingkan bidang secara langsung atau memanggil metode enumerasi seperti Any() atau Count(). Dengan begitu satu templat menangani setiap variasi data Anda alih-alih memelihara satu berkas per kasus.

Bagaimana cara memformat tanggal dan angka di templat?​

Letakkan format setelah nama bidang dalam tanda kutip: <<[invoiceDate]:"dd.MM.yyyy">> untuk tanggal, <<[price]:"F2">> untuk angka dengan dua desimal. Huruf besar/kecil punya sakelar pendek — :upper, :caps, dan :firstCap.

Bagaimana cara menghasilkan tabel yang bertambah seiring data saya?​

Buat tabel Word, buka <<foreach [item in collection]>> di sel pertama, taruh bidang gabungan di setiap sel sisanya, dan tutup dengan <</foreach>> di sel terakhir. Setiap item dalam koleksi otomatis menjadi satu baris.


Pemecahan masalah​

Sebuah bidang tercetak sebagai teks harfiah alih-alih nilai
Nama bidang tidak cocok dengan data, atau tidak dibungkus dengan benar. Periksa ejaan dan huruf besar/kecil, dan pastikan tertulis <<[FieldName]>> dengan kedua pasang kurung.
Sebuah gambar tidak muncul
Bidang gambar harus berada di dalam Kotak Teks Word, dan sumber via URL harus dapat diakses publik. Pindahkan bidang <<image ...>> ke kotak teks lalu jalankan ulang.
Sebuah tanggal atau angka tampil dengan gaya yang salah
String format keliru, atau nilai tiba dengan tipe yang salah. Konfirmasi pola dalam tanda kutip, misalnya "dd.MM.yyyy" untuk tanggal atau "F2" untuk angka.
Sebuah tabel mengulang baris yang salah atau rusak
<<foreach>> harus dibuka di sel pertama baris dan ditutup di sel terakhir. Jika dibuka dan ditutup di sel yang sama, baris tidak akan mengembang.

Langkah berikutnya​

Rancang templat sekali, hubungkan ke data Anda, dan PDF4me menghasilkan faktur, kontrak, serta laporan personalisasi sesuai permintaan — dari satu panggilan API atau automasi yang memproses ribuan sekaligus.

Referensi​