Lewati ke konten

Merender tabel HTML melalui NextPDF Connect

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).

Terminal window
composer require nextpdf/server

Ikat satu transport. Input harus menyertakan elemen root <table> dengan baris <tr> serta sel <th>/<td>.

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.

AlatPeranTingkat risiko
create_pdfMembuka sesiAman
set_fontMenetapkan fon teks sel (opsional, sebelum add_table)Hati-hati
add_tableMelakukan sanitasi dan menata tabelHati-hati
output_pdfMerender dan mengembalikan PDFPersetujuan Diperlukan / Tinjau (base64)

Katalog alat adalah katalog resmi. Alat yang tersedia bagi Anda bergantung pada tier yang terpasang.

  1. create_pdf (A4 potret, judul) → document_id.
  2. add_table dengan string <table>...</table> yang lengkap (baris header dan baris data).
  3. output_pdf → base64 atau, dengan file_path, penulisan berkas yang dikontrol gerbang.

Kursor berpindah ke bawah baris terakhir yang dirender, menyisakan ruang untuk konten berikutnya.

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.

  • 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.page dalam respons, atau panggil add_page terlebih dahulu.

Tabel kecil dirender sesuai anggaran, dengan keluaran berukuran beberapa KB. Profilnya adalah structural. Sanitasi berjalan dalam satu lintasan pada DOM yang sudah diurai.

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.

PernyataanSpesifikasiKlausulreference_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

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.

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.

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.

TransportTersediaCatatan
MCP (stdio)YaHTML besar memperbesar frame stdio.
RESTYaKirim HTML dalam body permintaan.
gRPCYaUnary; batas ukuran pesan berlaku.

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.

Keluaran base64:

{ "allowed": true }

Keluaran berkas mengembalikan amplop tantangan yang didokumentasikan di output-approval.