Lewati ke konten
getnextpdf.com

Pro edisi

Output Pipeline

Output Pipeline menjalankan manifes deklaratif berisi langkah-langkah PDF dalam urutan dependensi, dengan retry per-langkah dan opsi stop-on-error. Beberapa tipe langkah memerlukan kapabilitas Enterprise Pack tambahan.

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

Eksekutor pipeline itu sendiri adalah bagian dari edisi Pro. Tiga tipe langkah tambahan memerlukan kapabilitas Enterprise Pack bernama: langkah penyamaran (redaction) memerlukan kapabilitas Privacy Pack, dan langkah ekstraksi serta OCR-overlay memerlukan kapabilitas Intelligence Pack. Langkah tergerbang yang tidak berlisensi gagal-tertutup saat eksekusi — ia menghasilkan hasil langkah yang gagal dan resolver-nya tidak pernah dipanggil — alih-alih membatalkan seluruh run.

Terminal window
composer require nextpdf/pro:^3

Kode berada di bawah namespace NextPDF\Pro\OutputPipeline.

PipelineExecutor menerima sebuah PipelineManifest, mengurutkan langkah ke dalam urutan topologis, dan mengirimkan setiap langkah ke resolver yang terdaftar di StepResolverRegistry. Keluaran langkah disimpan dalam sebuah PipelineContext untuk langkah-langkah hilir. Eksekutor menegakkan timeout global, mendukung retry per-langkah, dan dapat melanjutkan dari langkah bernama. Ia dirancang untuk berjalan di dalam worker job asinkron, bukan langsung dari handler permintaan.

Tipe langkah bawaan mencakup generate, merge, split, inspect, compress, sign, dan convert. Tipe langkah penyamaran, ekstraksi, dan OCR-overlay bersifat berlisensi-kapabilitas dan dipetakan ke kapabilitas Enterprise Pack.

Eksekutor hanya melakukan orkestrasi. Ia mengurutkan langkah, menegakkan gerbang lisensi, dan mengirimkan masing-masing ke resolver yang terdaftar, tetapi tidak melakukan pekerjaan PDF apa pun sendiri. Pemisahan itu memungkinkan satu manifes berjalan baik melalui jalur PHP sekuensial ini maupun melalui worker out-of-band yang mengirim langkah secara paralel, tanpa perubahan pada kode pemanggil. Desainnya menyasar worker job asinkron alih-alih handler permintaan, karena pipeline multi-langkah lazimnya hidup lebih lama dari anggaran satu permintaan, dan sebuah antrean menskalakan throughput dengan menambah worker. Timeout global diperiksa di antara langkah dengan alasan yang sama: satu langkah utuh adalah unit kerja yang diserahkan ke resolver, dan orkestrator tidak ikut campur dalam run resolver tersebut. Kegagalan muncul sebagai nilai StepResult per-langkah alih-alih exception yang dilempar, sehingga satu langkah yang gagal tidak pernah meruntuhkan PipelineResult agregat yang dilaporkan worker.

Latar belakang desain: Pembuatan dokumen volume-tinggi.

  • execute($manifest, $variables) mengembalikan hasil dengan status keseluruhan, hasil per-langkah, durasi, serta jumlah langkah yang selesai dan gagal.
  • Langkah berjalan dalam urutan topologis; resolver yang hilang untuk suatu tipe langkah menghasilkan langkah yang gagal dengan pesan yang jelas.
  • PipelineOptions::$stopOnError menghentikan eksekusi pada kegagalan pertama; jika tidak, eksekusi berlanjut dan status akhir mencerminkan kegagalan apa pun.
  • Timeout global, ketika disetel, menggagalkan pipeline jika terlampaui sebelum langkah berikutnya dimulai.
  • Retry per-langkah dibatasi oleh maksimum yang dikonfigurasi; hanya kegagalan non-terminal yang di-retry.
  • Resume-from-step melewatkan langkah-langkah sebelumnya hingga langkah bernama tercapai.
  • Tipe langkah tergerbang-kapabilitas gagal-tertutup saat eksekusi dengan kode galat lisensi ketika kapabilitas Pack yang diperlukan tidak ada; resolver tidak pernah dipanggil.

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

use NextPDF\Pro\OutputPipeline\PipelineExecutor;
$result = (new PipelineExecutor($stepResolverRegistry))->execute($manifest);
use NextPDF\Pro\OutputPipeline\PipelineExecutor;
$executor = new PipelineExecutor($stepResolverRegistry);
// Invoke from an async job worker, not a request handler.
$result = $executor->execute($manifest, ['customerName' => 'Acme']);
if ($result->status !== \NextPDF\Pro\OutputPipeline\PipelineStatus::Completed) {
foreach ($result->stepResults as $stepResult) {
// Inspect per-step error detail.
}
}
  • Pipeline dimaksudkan untuk berjalan secara asinkron melalui sistem job. Menjalankannya inline memblokir pemanggil selama durasi penuh pipeline.
  • Tipe langkah tanpa resolver terdaftar menggagalkan langkah tersebut alih-alih membatalkan seluruh pipeline (kecuali stop-on-error disetel).
  • Timeout global diperiksa di antara langkah, bukan di tengah-langkah; langkah yang berjalan lama dapat melampaui anggaran sebelum pemeriksaan terpicu.

Total durasi adalah jumlah durasi langkah ditambah overhead retry. Timeout global membatasi waktu wall-clock kasus terburuk. Tidak ada angka throughput yang dipublikasikan; biaya pipeline didominasi oleh langkah-langkah yang Anda sertakan. Ukur dengan manifes yang representatif.

Eksekutor meneruskan dokumen input dan variabel ke resolver langkah; perlakukan keduanya sebagai tidak tepercaya dan validasi di dalam setiap resolver. Langkah tergerbang-kapabilitas gagal-tertutup ketika tidak berlisensi. Eksekutor tidak mencatat isi dokumen.

Eksekutor sendiri tidak melakukan pekerjaan kesesuaian format apa pun; kesesuaian bergantung pada resolver langkah individual (generate, merge, split, sign, convert). Korpus RAG tidak tersedia saat penulisan, sehingga halaman ini tidak menyatakan pengenal klausa eksternal apa pun.

Enterprise menambahkan kapabilitas Pack yang membuka tipe langkah tergerbang (penyamaran, ekstraksi, OCR overlay) pada tingkat perilaku. Tanpa Pack tersebut, pipeline tetap menjalankan setiap langkah yang tidak tergerbang. Internal Pack berada di luar cakupan di sini.

Tanpa Pro, orkestrasi operasi PDF secara imperatif dengan API NextPDF Core; manifes deklaratif, pengurutan dependensi, dan retry adalah tambahan Pro..

Halaman ini hanya mendokumentasikan 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.