Langsung ke konten
Tutorial

Hasilkan PDF dari HTML dan Markdown dengan REST API

| 6 min read

Dua permintaan POST mengubah HTML atau Markdown menjadi PDF yang dapat diunduh. Tanpa Dalang, tanpa Chromium, tanpa ketergantungan 500MB. Faktur, laporan, dan tanda terima dalam waktu kurang dari 1 detik.

Printed document pages on a desk
Photo by Bank Phrom on Unsplash

Aplikasi Anda menghasilkan faktur. Anda memiliki templat HTML. Sekarang Anda perlu mengubahnya menjadi a PDF yang dapat diunduh. Pendekatan standar: instal Puppeteer, luncurkan instance Chromium tanpa kepala, panggilan page.pdf(). Itu berarti ketergantungan 300-500 MB untuk fungsi pencetakan.

Ini menjadi lebih buruk dalam produksi. Chromium membocorkan memori saat dimuat. Gambar Docker membengkak melebihi 1 GB. Start dingin membutuhkan waktu 3-8 detik. Anda akhirnya memelihara kumpulan proses browser untuk sesuatu itu seharusnya merupakan panggilan fungsi tunggal.

Ada jalan yang lebih pendek. Kirim HTML Anda ke API, dapatkan PDF kembali.

HTML ke PDF dalam satu permintaan POST

Itu /v1/pdf/from-html titik akhir menerima string HTML dan mengembalikan PDF. Tanpa biner browser, tanpa ketergantungan, tanpa konfigurasi.

curl -X POST https://api.botoi.com/v1/pdf/from-html \\
  -H "Content-Type: application/json" \\
  -d '{
    "html": "<h1>Invoice #1042</h1><p>Amount due: $2,450.00</p>"
  }'

Tanggapan:

{
  "success": true,
  "data": {
    "url": "https://api.botoi.com/pdfs/f7a2c1e8.pdf",
    "size_bytes": 24576,
    "pages": 1
  }
}

Itu url bidang menunjuk ke PDF yang dihasilkan. Unduh, arahkan pengguna Anda ke sana, atau simpan di bucket S3 Anda sendiri. API menangani rendering, penomoran halaman, dan penyematan font.

Penurunan harga ke PDF dalam satu permintaan POST

Tidak semua dokumen dimulai sebagai HTML. Laporan, log perubahan, dan dokumentasi sering kali berfungsi sebagai Penurunan Harga. Itu /v1/pdf/from-markdown titik akhir mengonversi penurunan harga menjadi PDF bergaya secara langsung.

Tanggapan:

Tabel, judul, teks tebal, blok kode, dan daftar semuanya ditampilkan dengan benar. API berlaku bersih default tipografi sehingga hasilnya terlihat rapi tanpa CSS khusus.

Contoh praktis: pembuatan faktur

Faktur yang realistis memerlukan header perusahaan, alamat penagihan, tabel item baris, perhitungan pajak, dan ketentuan pembayaran. Berikut faktur lengkap yang dikirim sebagai satu panggilan API:

Permintaan tunggal itu menghasilkan PDF faktur profesional dengan kop surat Cascade Software, empat item baris dengan total $2,257.00, pajak penjualan 8,5% sebesar $191,85, dan total keseluruhan $2,448.85. CSS di <style> tag mengontrol font, spasi, batas tabel, dan baris total yang dicetak tebal. Anda dapat menggunakan CSS apa pun yang didukung browser, termasuk flexbox, grid, dan @page aturan untuk margin dan ukuran halaman.

Contoh praktis: laporan triwulanan dari Markdown

Laporan secara alami cocok untuk penurunan harga. Manajer produk, analis, dan tim operasi sudah menulis dalam penurunan harga. Mengonversi ke PDF untuk distribusi atau pengarsipan email adalah salah satu panggilan API:

API merender tabel, judul, teks tebal, dan daftar bernomor menjadi PDF yang bersih. Tidak langkah HTML perantara di sisi Anda. Berikan string Markdown dari database Anda, sebuah Git repositori, atau ekspor Notion.

Contoh praktis: pembuatan tanda terima di Express

Berikut adalah rute Ekspres yang menghasilkan tanda terima PDF sesuai permintaan ketika pengguna memintanya untuk pesanan sebelumnya:

Itu buildReceiptHtml fungsi mengambil data pesanan dari database Anda dan menghasilkan string HTML bergaya. Rute mengirimkannya ke botoi API dan mengembalikan URL PDF ke klien. Tidak ada Dalang. Tidak ada operasi sistem file. Tidak ada direktori sementara.

Pola yang sama di Hono

Jika Anda menggunakan Cloudflare Workers atau Bun, versi Hono hampir sama:

Perbedaan utamanya: Hono mengakses variabel lingkungan melalui c.env alih-alih process.env. Segala sesuatu yang lain tetap sama. Satu panggilan pengambilan, satu respons JSON, satu URL PDF.

Perbandingan: API vs Puppeteer vs wkhtmltopdf vs Prince

Empat pendekatan umum untuk konversi HTML-ke-PDF, dibandingkan berdasarkan hal-hal penting dalam produksi:

Dalang memberi Anda kontrol browser penuh tetapi menimbulkan biaya operasional yang besar. Anda menjalankan Chromium di server Anda, mengelola batas memori, dan melakukan patch keamanan kerentanan dalam biner browser. Berfungsi dengan baik jika Anda memerlukan eksekusi JavaScript, cookie injeksi, atau rendering halaman yang diautentikasi.

wkhtmltopdf lebih ringan dari Puppeteer tetapi menggunakan QtWebKit yang sudah tidak digunakan lagi mesin. Dukungan CSS terhenti pada level 2015. Flexbox dan grid tidak berfungsi. Proyeknya adalah diarsipkan di GitHub tanpa pengelola aktif.

Pangeran XML menghasilkan hasil cetak dengan kualitas terbaik dengan Media Paged CSS lengkap dukungan. Pengorbanannya: biaya lisensi $3.800 per server. Itu masuk akal untuk penerbitan alur kerja, bukan untuk membuat faktur di aplikasi SaaS.

Pendekatan API menang ketika Anda membutuhkan PDF dari templat yang Anda kendalikan (faktur, kuitansi, laporan, kontrak) dan tidak perlu merender halaman terotentikasi secara sewenang-wenang. Nol penyiapan, tanpa pemeliharaan, latensi yang dapat diprediksi.

Poin-poin penting

  • Dua titik akhir, dua format masukan. /v1/pdf/from-html untuk HTML lengkap dengan CSS. /v1/pdf/from-markdown untuk konten penurunan harga.
  • Tidak ada ketergantungan sisi server. Tanpa Dalang, tanpa Chromium, tanpa wkhtmltopdf biner. Satu panggilan HTTP dari bahasa apa pun.
  • Dukungan CSS penuh. Gaya sebaris, tag gaya, flexbox, kisi, Google Font, dan @page pertanyaan media semuanya berfungsi.
  • Tersedia tingkat gratis. 5 permintaan per menit tanpa kunci API. Paket berbayar mulai dari $9/bulan untuk beban kerja produksi.
  • Kasus penggunaan umum. Faktur, kwitansi, laporan, kontrak, dokumentasi ekspor, dan lampiran email.

Periksa API dokumen untuk referensi parameter lengkap, termasuk ukuran halaman, margin, dan header/footer konfigurasi.

FAQ

Bagaimana cara menghasilkan PDF dari HTML secara terprogram?
Kirim permintaan POST ke https://api.botoi.com/v1/pdf/from-html dengan isi JSON yang berisi string HTML Anda. API mengembalikan PDF berkode base64 atau URL unduhan. Tidak diperlukan biner browser, instance tanpa kepala, atau ketergantungan sisi server.
Bisakah saya mengonversi Markdown ke PDF dengan API ini?
Ya. Kirim permintaan POST ke https://api.botoi.com/v1/pdf/from-markdown dengan string Markdown Anda. API merender Penurunan Harga menjadi HTML bergaya secara internal dan mengembalikan PDF. Mendukung judul, tabel, blok kode, dan daftar.
Apakah API mendukung gaya CSS pada masukan HTML?
Ya. Anda dapat memasukkan gaya sebaris, tag gaya, dan CSS lengkap dalam HTML Anda. Mesin rendering mendukung flexbox, grid, font khusus melalui link Google Fonts, dan kueri media khusus cetak seperti @page untuk margin dan ukuran halaman.
Apakah API pembuatan PDF gratis?
Akses anonim memungkinkan 5 permintaan per menit dengan pembatasan kecepatan berbasis IP. Tidak diperlukan kunci API atau pendaftaran. Paket berbayar mulai dari $9/bulan dan menghapus batas tarif untuk beban kerja produksi seperti pembuatan faktur atau pelaporan batch.
Bagaimana API dibandingkan dengan Puppeteer untuk pembuatan PDF?
Dalang memerlukan instalasi Chromium (300-500MB), mengelola instance browser, menangani kebocoran memori, dan menjaga kompatibilitas versi. Botoi API adalah panggilan HTTP tunggal tanpa infrastruktur. Penyiapan membutuhkan waktu beberapa detik, bukan jam. Untuk sebagian besar kasus penggunaan PDF (faktur, laporan, tanda terima), API mencakup apa yang Anda perlukan tanpa biaya operasional.

Mulai membangun dengan botoi

150+ endpoint API untuk pencarian, pemrosesan teks, pembuatan gambar, dan utilitas developer. Paket gratis, tanpa kartu kredit.