Tiga pustaka. Tiga pekerjaan yang berbeda. Memilih yang salah menghabiskan berminggu-minggu solusi sementara, dan memilih ketiganya padahal hanya butuh satu menambah overhead pemeliharaan yang tidak dianggarkan. Berikut adalah penjelasan langsung tentang apa yang sebenarnya dilakukan setiap pustaka PDF losLab, di mana ia cocok, dan di mana ia menyerahkan tugasnya kepada saudaranya
HotPDF: menulis PDF dari awal di Delphi
HotPDF adalah komponen VCL native untuk menghasilkan dokumen PDF. Modelnya bersifat imperatif dan berpusat pada halaman: Anda membangun instance THotPDF, menetapkan properti dokumen, memanggil BeginDoc, menggambar ke CurrentPage, menambahkan halaman sesuai kebutuhan, dan menutup dengan EndDoc. Urutan ini penting karena BeginDoc mengunci kamus enkripsi dan pengaturan kompresi pada saat dijalankan; apa pun yang ditetapkan setelah titik itu diabaikan secara diam-diam alih-alih diterapkan secara retroaktif
Permukaan gambar mencakup set operator PDF penuh di level Delphi: TextOut untuk teks Unicode yang diposisikan, SetFont dengan penyematan TrueType, primitif vektor (garis, kurva Bezier, elips, persegi panjang), penempatan gambar dari file atau memori, dan pembuatan barcode. Koordinat dalam poin dari sudut kiri bawah dengan Y tumbuh ke atas, yang menjebak semua orang setidaknya sekali. Status font tidak bertahan setelah AddPage, sehingga pemanggilan SetFont diperlukan setelah setiap jeda halaman
Field AcroForm adalah warga kelas satu. Anda dapat menambahkan field teks, kotak centang, tombol radio, kotak kombo, kotak daftar, dan tombol tekan langsung ke objek halaman dengan satu pemanggilan masing-masing. HotPDF juga dapat memuat PDF yang sudah ada melalui LoadFromFile dan mengisi atau membaca nilai field, yang membuatnya berguna dalam dua alur kerja terpisah: membangun formulir dan mengotomatiskan pengisiannya
Enkripsi juga ditangani di tingkat dokumen. CryptKeyLength memilih skema (40-bit RC4 hingga AES-256), ActivateProtection mengaktifkannya, dan ProtectOptions menetapkan flag izin ISO. Dua mode revisi AES-256 (R5 dan R6, dikontrol oleh UseAES256R6) ada karena revisi 6 memperbaiki kelemahan yang diketahui dalam revisi 5 tetapi memerlukan penampil yang mampu PDF 2.0; memilih di antara keduanya adalah keputusan kompatibilitas, bukan kemudahan
Dukungan tanda tangan digital di HotPDF mencakup profil dasar PAdES, sehingga cocok untuk alur kerja di mana tanda tangan harus memenuhi persyaratan ETSI EN 319 142. Jika kebutuhan Anda hanya menghasilkan keluaran, HotPDF adalah pustaka yang harus dipilih pertama kali
PDFium Component: merender, melihat, dan membaca PDF yang ada
PDFium Component membungkus mesin PDFium Google sebagai komponen VCL, yang memberikannya peran yang secara fundamental berbeda dari HotPDF. Di mana HotPDF menulis, PDFium Component membaca dan merender. Objek inti adalah TPdf, manajer dokumen yang membuka file dengan menetapkan FileName lalu Active := True. Kegagalan memuat tidak dimunculkan sebagai pengecualian; Active hanya tetap False, sehingga memeriksanya setelah penugasan bukan opsional
Rendering berjalan melalui TPdfView, komponen visual yang Anda letakkan di form dan hubungkan ke instance TPdf melalui PdfView.Pdf := Pdf. Zoom dan mode fit berada di tampilan, bukan di dokumen. Satu kehalusan yang sering menjebak orang: Pdf.PageNumber dan PdfView.PageNumber adalah properti independen. Menetapkan satu tidak memperbarui yang lain, dan API ekstraksi berbasis tampilan (kotak kata, unit baca) menggunakan halaman tampilan saat ini, bukan halaman dokumen
Ekstraksi teks adalah tempat PDFium Component tidak memiliki pesaing langsung dalam jajaran losLab. ReadablePageContent mengembalikan teks terstruktur dengan kesadaran urutan baca, PageWordBoxes memberikan persegi panjang pembatas tingkat kata, dan DocumentReadingUnits menelusuri seluruh dokumen. Untuk pekerjaan aksesibilitas, IsTagged memberi tahu Anda apakah pohon struktur ada dan ValidatePdfUa menjalankan pemeriksaan kesesuaian UA. API ini menjadikan PDFium Component pilihan alami untuk alur kerja apa pun yang perlu memahami apa yang ada di dalam PDF yang ada alih-alih menghasilkan yang baru
Pengisian formulir juga berfungsi di sisi PDFium, melalui layer AcroForm yang sama yang diekspos mesin yang mendasarinya. Ini tepat ketika dokumen sumber sudah ada dan Anda mengotomatiskan penyelesaiannya alih-alih membangun field formulir sendiri
PDFlibPas: manipulasi, penandatanganan kepatuhan, dan akses file langsung
PDFlibPas (versi 3.73.0) berada di ujung lain spektrum kompleksitas. Ia mengekspos tiga layer API di atas model dokumen yang sama: fasad berbasis handle datar (TPDFlib) yang kompatibel dengan konvensi pemanggilan Quick-PDF, layer pohon objek penuh (TPDFDocument), dan parser streaming (TSmartPDFReader / TSmartPDFWriter) yang beroperasi langsung pada byte file tanpa memuat grafik objek lengkap
Layer streaming itulah yang menjadikan PDFlibPas pilihan tepat untuk dokumen besar. TSmartPDFWriter dapat menambahkan pembaruan inkremental ke file di disk tanpa merekonstruksi seluruh tabel referensi silang, yang merupakan mekanisme yang mendasari penyimpanan ulang yang efisien dan stempel validasi jangka panjang PAdES. Untuk alur kerja penandatanganan tingkat kepatuhan di mana hash yang ditandatangani harus mencakup rentang byte tertentu dan tanda tangan diterapkan tanpa menulis ulang dokumen, layer ini adalah satu-satunya jalur yang layak
Manipulasi dokumen di tingkat TPDFDocument mencakup penggabungan dengan Merge, penyalinan halaman selektif melalui CopyPagesFromDoc dengan string rentang, dan tata kelola versi melalui SetMinimumVersion dan LockSaveVersion. Kunci versi memunculkan error 602 jika Anda mencoba menyimpan fitur yang akan mendorong keluaran melampaui versi yang dikunci, yang berguna ketika Anda perlu menjamin bahwa keluaran tetap dalam revisi PDF tertentu untuk kepatuhan arsip
Dukungan PDF/A (ISO 19005) berada dalam workbench kepatuhan PDFlibPas. Perhatikan bahwa enkripsi dan PDF/A saling eksklusif menurut spesifikasi: Anda tidak dapat memiliki keduanya dalam satu file. Alur kerja yang memerlukan salinan distribusi terenkripsi dan salinan arsip PDF/A harus menghasilkan dua artefak terpisah
Memilih di antara mereka
Pohon keputusan yang khas singkat. Jika Anda menghasilkan dokumen baru dari data, gunakan HotPDF. Jika Anda merender atau mengekstrak teks dari dokumen yang ada dalam aplikasi Delphi VCL, gunakan PDFium Component. Jika Anda memanipulasi, menggabungkan, atau menandatangani PDF yang ada secara kepatuhan dalam skala besar atau dengan semantik inkremental-simpan, gunakan PDFlibPas. Banyak sistem produksi menggunakan dua dari tiga: HotPDF untuk menghasilkan keluaran dan PDFlibPas untuk menerapkan stempel validasi jangka panjang ke dalamnya sebelum pengarsipan, misalnya, atau PDFium Component untuk melihat pratinjau apa yang dihasilkan HotPDF sebelum mengirimnya ke hilir
Ketiganya dikirim sebagai sumber Pascal native untuk Delphi dan C++Builder, tanpa dependensi runtime selain VCL. PDFium Component selain itu menyertakan PDFium DLL, yang mencakup pekerjaan rendering dan parsing mesin. Halaman produk masing-masing pustaka memuat referensi API lengkap dan riwayat versi terkini
Detail tentang pustaka individual: HotPDF Component, PDFium Component, dan PDFlibPas