Merender tabel HTML melalui NextPDF Connect
Sekilas
Bagian berjudul “Sekilas”Render data tabular terstruktur dari string tabel HTML. add_table melakukan sanitasi input dengan allowlist DOMDocument yang ketat sebelum proses tata letak, sehingga keluaran tetap konsisten meskipun markup sumber bervariasi. Gunakan alat Core create_pdf, add_table, dan output_pdf. Tabel ditata sebagai grid row/column (CSS Tables 3 §3.1).
Pemasangan
Bagian berjudul “Pemasangan”composer require nextpdf/serverIkat satu transport. Input harus menyertakan elemen root <table> dengan baris <tr> serta sel <th>/<td>.
Gambaran konseptual
Bagian berjudul “Gambaran konseptual”add_table menerapkan allowlist elemen tetap (table, thead, tbody, tfoot, tr, th, td, caption, b, i, u, strong, em, br, p, span). Semua atribut dihapus dari setiap elemen — style, class, width, colspan, rowspan, id, dan lainnya. Setiap tag di luar allowlist diganti dengan konten teksnya. Teks sel menggunakan status fon aktif pada dokumen, yang Anda tetapkan dengan set_font sebelum add_table. Teks dihasilkan oleh operator penampil teks dalam urutan content-stream (ISO 32000-2 §9.4). Mesin tata letak, bukan CSS inline, yang menentukan lebar kolom.
Permukaan API
Bagian berjudul “Permukaan API”| Alat | Peran | Tingkat risiko |
|---|---|---|
create_pdf | Membuka sesi | Aman |
set_font | Menetapkan fon teks sel (opsional, sebelum add_table) | Hati-hati |
add_table | Melakukan sanitasi dan menata tabel | Hati-hati |
output_pdf | Merender dan mengembalikan PDF | Persetujuan Diperlukan / Tinjau (base64) |
Katalog alat adalah katalog resmi. Alat yang tersedia bagi Anda bergantung pada tier yang terpasang.
Contoh kode — Mulai cepat
Bagian berjudul “Contoh kode — Mulai cepat”create_pdf(A4 potret, judul) →document_id.add_tabledengan string<table>...</table>yang lengkap (baris header dan baris data).output_pdf→ base64 atau, denganfile_path, penulisan berkas yang dikontrol gerbang.
Kursor berpindah ke bawah baris terakhir yang dirender, menyisakan ruang untuk konten berikutnya.
Contoh kode — Produksi
Bagian berjudul “Contoh kode — Produksi”Validasi HyperText Markup Language (HTML) sebelum Anda mengirimnya. Tetapkan fon sel dengan set_font untuk tipografi yang deterministik. Jika Anda mengandalkan nilai baku, fon keluaran bergantung pada implementasi. Untuk mengontrol alat mana yang boleh dipanggil host, batasi registry melalui kebijakan keamanan.
Kasus tepi & jebakan
Bagian berjudul “Kasus tepi & jebakan”- HTML kosong atau bukan tabel. Input tanpa
<table>mengembalikan galat tidak-ada-tabel-yang-dapat-dirender. - Markup yang cacat. Tag yang tidak seimbang mengembalikan galat penguraian, jadi validasi strukturnya terlebih dahulu.
- Tabel lebih lebar dari halaman. Kurangi kolom, perpendek konten, atau beralih ke orientasi lanskap.
- Luapan. Tabel yang tinggi mengalir ke halaman baru. Periksa
position.pagedalam respons, atau panggiladd_pageterlebih dahulu.
Kinerja
Bagian berjudul “Kinerja”Tabel kecil dirender sesuai anggaran, dengan keluaran berukuran beberapa KB. Profilnya adalah structural. Sanitasi berjalan dalam satu lintasan pada DOM yang sudah diurai.
Catatan keamanan
Bagian berjudul “Catatan keamanan”Penghapusan atribut bersifat tanpa syarat dan tidak dapat dilewati. Ini melindungi dari injeksi style dan script melalui markup sel. Tidak ada CSS inline, event handler, atau URL javascript: yang bertahan. Allowlist adalah batas kepercayaan, jadi jangan perlakukan keluaran yang dirender sebagai reproduksi setia atas penggayaan sumber arbitrer.
Kesesuaian
Bagian berjudul “Kesesuaian”| Pernyataan | Spesifikasi | Klausul | reference_id |
|---|---|---|---|
| Tabel ditata sebagai grid sel row/column. | CSS Tables 3 | §3.1 | |
| Teks ditampilkan oleh operator teks dalam urutan stream. | ISO 32000-2 | §9.4 |
Konteks komersial
Bagian berjudul “Konteks komersial”Tidak berlaku — setiap alat di sini adalah Core.
Cuplikan matriks dukungan CSS (hanya yang terverifikasi)
Bagian berjudul “Cuplikan matriks dukungan CSS (hanya yang terverifikasi)”add_table tidak menjalankan mesin CSS umum. Satu-satunya perilaku “CSS” adalah model grid tabel tetap: baris dan kolom berasal dari struktur tabel, lalu mesin tata letak memilih lebarnya. Penggayaan inline tidak didukung secara desain karena atribut dihapus. Untuk cakupan CSS tingkat mesin (non-Connect), lihat matriks dukungan CSS proyek.
Batasan streaming satu-lintasan
Bagian berjudul “Batasan streaming satu-lintasan”add_table mengurai markup yang diberikan menjadi DOM sekali dan menatanya dalam satu lintasan. Alat ini tidak melakukan reflow terhadap stylesheet eksternal. Tabel yang melampaui halaman berlanjut ke halaman berikutnya, bukan melakukan reflow secara surut.
Anggaran memori untuk tabel besar
Bagian berjudul “Anggaran memori untuk tabel besar”Tabel yang sangat besar menyimpan DOM yang diurai dan sel yang telah ditata di memori selama keseluruhan pemanggilan. Pecah set data besar menjadi beberapa pemanggilan add_table agar tetap dalam anggaran memori puncak.
Ketersediaan transport
Bagian berjudul “Ketersediaan transport”| Transport | Tersedia | Catatan |
|---|---|---|
| MCP (stdio) | Ya | HTML besar memperbesar frame stdio. |
| REST | Ya | Kirim HTML dalam body permintaan. |
| gRPC | Ya | Unary; batas ukuran pesan berlaku. |
Tingkat risiko HITL
Bagian berjudul “Tingkat risiko HITL”create_pdf bersifat Aman; set_font dan add_table bersifat Hati-hati; output_pdf bersifat Persetujuan Diperlukan, diturunkan menjadi Tinjau dalam mode base64. Keluaran berkas tetap Persetujuan Diperlukan. Lihat output-approval.
Amplop JSON gerbang konfirmasi
Bagian berjudul “Amplop JSON gerbang konfirmasi”Keluaran base64:
{ "allowed": true }Keluaran berkas mengembalikan amplop tantangan yang didokumentasikan di output-approval.