Lewati ke konten
getnextpdf.com

Pro edisi

Optimizer

Optimizer menganalisis sebuah PDF untuk objek duplikat dan potensi rekompresi citra, lalu melaporkan estimasi pengurangan ukuran. Tiga tingkat menukar fidelitas keluaran dengan ukuran berkas.

Kapabilitas ini hadir dalam NextPDF Pro (nextpdf/pro) dan aktif dengan sebuah envelope lisensi tier Pro. Deployment tanpa entitlement tersebut tidak memuat kelas-kelas kapabilitas ini. Bandingkan edisi dan dapatkan lisensi.

Tidak ada flag lisensi per-fitur yang terpisah. Tingkat optimasi (lossless, balanced, aggressive) adalah parameter runtime, bukan saklar lisensi.

Terminal window
composer require nextpdf/pro:^3

Kode berada di bawah namespace NextPDF\Pro\Optimizer.

PdfOptimizer mengoordinasikan sebuah deduplikator objek dan sebuah perekompres citra. Diberi byte PDF mentah, ia menemukan grup objek duplikat (ketika tingkat mengizinkannya), menganalisis citra, dan mengestimasi kompresi untuk setiap citra pada kualitas target tingkat tersebut. Ia mengagregasi temuan menjadi sebuah OptimizationResult yang melaporkan ukuran asli, estimasi ukuran teroptimasi, objek yang dihapus, serta jumlah citra sebelum dan sesudah.

OptimizationLevel mendefinisikan trade-off: lossless mempertahankan kualitas citra dan melewatkan deduplikasi untuk keluaran byte-stabil; balanced melakukan deduplikasi dan menargetkan kualitas citra 75 persen; aggressive melakukan deduplikasi, downsampling, dan menargetkan kualitas 50 persen.

Optimizer menganalisis alih-alih menulis ulang. analyze() mengestimasi potensi penghematan dan mengembalikan sebuah OptimizationResult tanpa memutasi input. Itu menjaga proses tetap non-destruktif dan membiarkan Anda memutuskan apakah akan menerapkannya melalui Writer. Abstraksi tingkat menyimpan trade-off di satu tempat: lossless mengembalikan false dari deduplicateStreams() sehingga keluaran dapat tetap byte-identik, sedangkan balanced dan aggressive merekompres stream citra pada target kualitas yang lebih rendah. Penghematan yang dapat dicapai bergantung pada bagaimana sebuah dokumen telah mengenkode stream dan citranya, sehingga modul melaporkan estimasi dari objek yang benar-benar ada alih-alih angka utama yang tetap. Latar belakang desain: Streams and filters.

  • analyze($pdfData) mengembalikan sebuah OptimizationResult; ia tidak memutasi input.
  • Tingkat lossless melewatkan deduplikasi stream sehingga keluaran dapat tetap byte-stabil; balanced dan aggressive mengaktifkan deduplikasi.
  • Target kualitas citra adalah 100, 75, dan 50 persen masing-masing untuk lossless, balanced, dan aggressive.
  • Estimasi ukuran teroptimasi tidak pernah turun di bawah nol dan tidak pernah melebihi ukuran asli.
  • withLevel($level) mengembalikan optimizer baru pada tingkat yang diminta; instans tidak dimutasi.

Berikut ini mencerminkan API publik yang terdokumentasi. Repositori tidak mengirimkan contoh yang dapat dijalankan untuk modul ini.

use NextPDF\Pro\Optimizer\PdfOptimizer;
$result = (new PdfOptimizer())->analyze($pdfBytes);
use NextPDF\Pro\Optimizer\PdfOptimizer;
use NextPDF\Pro\Optimizer\OptimizationLevel;
$optimizer = new PdfOptimizer(OptimizationLevel::Aggressive);
$result = $optimizer->analyze($pdfBytes);
$savings = $result->originalSize > 0
? (1 - $result->optimizedSize / $result->originalSize) * 100
: 0.0;
  • analyze() mengestimasi potensi; pasangkan dengan modul Writer untuk menghasilkan dokumen yang teroptimasi.
  • Tingkat lossless secara sengaja menghasilkan sedikit pengurangan ukuran karena ia mempertahankan kualitas dan melewatkan deduplikasi.
  • Jumlah citra-sesudah mencerminkan citra yang dihapus melalui deduplikasi, bukan citra yang dibuang.

Analisis bersifat linear terhadap ukuran input ditambah biaya pemindaian struktur objek dan citra. Tingkat mengendalikan seberapa agresif estimasi deduplikasi dan rekompresi. Tidak ada angka pengurangan-ukuran tetap yang dipublikasikan; hasil sepenuhnya bergantung pada dokumen. Ukur dengan dokumen yang representatif.

Perlakukan input sebagai tidak tepercaya. Analisis tetap hanya-baca dan tidak mengeksekusi konten tertanam. Modul ini tidak mencatat isi dokumen apa pun.

Optimasi beroperasi pada model objek dan citra PDF yang didefinisikan oleh ISO 32000-2; sumber memberi anotasi pada klausa yang relevan. Korpus RAG tidak tersedia saat penulisan, sehingga halaman ini tidak menyatakan pengenal klausa eksternal apa pun dan membatasi pernyataan kesesuaian pada perilaku yang diverifikasi oleh tes modul.

Enterprise tidak mengubah perilaku Optimizer. Enterprise menambahkan fitur kepatuhan dan pengarsipan tingkat lebih tinggi yang didokumentasikan secara terpisah; fitur tersebut tidak diperlukan untuk menganalisis potensi optimasi.

Tanpa Pro, gunakan optimasi dasar NextPDF Core; deduplikasi objek dan analisis rekompresi citra yang dapat disetel adalah tambahan Pro..

Halaman ini mendokumentasikan hanya perilaku yang dapat diamati secara eksternal dan permukaan API publik yang didukung. Path namespace internal, kelas pembantu, tabel mekanisme, nama berkas runbook, dan prefiks tiket berada di luar cakupan.