Enterprise edisi
Document E-Filing — Referensi Mendalam
Sekilas
Bagian berjudul “Sekilas”EFilingOptimizermenyiapkan PDF untuk electronic court filing dalam satu lintasan berurutan tetap: sanitize, linearize, size-split.EFilingProfilemengodekan batasan yurisdiksi. Factory bawaan mencakup US PACER, EU e-Justice, dan Taiwan Judicial Yuan.SizeAwareSplittermenegakkan batas byte per segmen dengan re-split verify-then-correct.- Output adalah artefak pengiriman. Output tidak boleh masuk kembali ke pipeline penandatanganan atau pengarsipan.
- Modul tidak melakukan operasi kriptografis dan tidak melakukan panggilan jaringan keluar.
Ketersediaan & lisensi
Bagian berjudul “Ketersediaan & lisensi”Kapabilitas ini disertakan dalam NextPDF Enterprise (nextpdf/enterprise) dan diaktifkan dengan license envelope tingkat Enterprise. Deployment tanpa entitlement tersebut tidak memuat kelas-kelas kapabilitas ini. Bandingkan edisi dan dapatkan lisensi.
Batas paket nextpdf/enterprise menggerbangi permukaan ini; tidak ada kode kapabilitas per-fitur yang terpisah. Tidak ada edisi Core atau Pro yang menyediakan optimizer e-filing.
Permukaan API publik
Bagian berjudul “Permukaan API publik”composer require nextpdf/enterprise:^3| Simbol | Parameter | Perilaku default | Mengembalikan | Melempar atau gagal dengan | Catatan |
|---|---|---|---|---|---|
EFilingOptimizer::optimize() | string $pdfData, ?EFilingProfile $profile = null | Profil default ke EFilingProfile::pacer(); menjalankan sanitize, linearize, size-split dalam urutan tetap | EFilingResult | InvalidArgumentException dari langkah split saat input yang melebihi batas bukan PDF valid; kegagalan sanitasi dan linearisasi menurun menjadi peringatan | Output adalah artefak pengiriman |
EFilingProfile::__construct() | $name, $maxFileSizeBytes = 26_214_400, $flattenForms = true, $removeJavaScript = true, $imageQuality = 75, $linearize = true, $compressObjectStreams = true | Profil yurisdiksi yang immutable | EFilingProfile | Tidak melempar | Batas kustom untuk portal tanpa factory bawaan |
EFilingProfile::pacer() | tidak ada | batas 25 MiB, kualitas gambar 75 | EFilingProfile | Tidak melempar | US PACER |
EFilingProfile::euJustice() | tidak ada | batas 10 MiB, kualitas gambar 70 | EFilingProfile | Tidak melempar | EU e-Justice Portal |
EFilingProfile::taiwan() | tidak ada | batas 10 MiB, kualitas gambar 70 | EFilingProfile | Tidak melempar | Taiwan Judicial Yuan |
SizeAwareSplitter::splitByMaxSize() | string $pdfData, int $maxBytes | Segmen tunggal saat input muat; jika tidak, estimasi, verifikasi, re-split | list<EFilingSegment> | InvalidArgumentException saat input yang melebihi batas tidak memiliki header %PDF | Input di bawah batas dikembalikan sebagai satu segmen tanpa validasi |
EFilingResult::isSplit() | tidak ada | true saat terdapat lebih dari satu segmen | bool | Tidak melempar | — |
EFilingResult::segmentCount() | tidak ada | Jumlah total segmen | int | Tidak melempar | — |
EFilingResult::compressionRatio() | tidak ada | optimizedTotalSize / originalSize | float | Tidak melempar; 0.0 untuk input asli kosong | Lebih rendah lebih baik |
EFilingSegment | $pdfData, $pageRange, $sizeBytes, $segmentIndex | Segmen output yang immutable | value object | Tidak melempar | String rentang halaman seperti 1-25 atau all |
public function optimize(string $pdfData, ?EFilingProfile $profile = null): EFilingResultpublic function __construct( public string $name, public int $maxFileSizeBytes = 26_214_400, public bool $flattenForms = true, public bool $removeJavaScript = true, public int $imageQuality = 75, public bool $linearize = true, public bool $compressObjectStreams = true,) {}
public static function pacer(): selfpublic static function euJustice(): selfpublic static function taiwan(): selfpublic function splitByMaxSize(string $pdfData, int $maxBytes): arraypublic function __construct( public array $segments, public int $originalSize, public int $optimizedTotalSize, public array $optimizations = [], public array $warnings = [],) {}
public function isSplit(): boolpublic function segmentCount(): intpublic function compressionRatio(): floatKontrak perilaku
Bagian berjudul “Kontrak perilaku”EFilingOptimizer::optimize() menjalankan pipeline berurutan tetap terhadap byte input. Langkah pertama menghapus konten aktif saat removeJavaScript diaktifkan. Langkah ini mendelegasikan ke content-disarm-and-reconstruction engine dengan kebijakan spesifik-filing: JavaScript, named JavaScript, launch action, form submission, dan data-import action dihapus; URI action dipertahankan (allowUriActions) karena filing dapat membawa tautan yang sah; incremental update diratakan menjadi satu revisi (flattenIncrementalUpdates). Langkah kedua melinearisasi byte yang telah disanitasi melalui NextPDF\Writer\Linearizer Core saat linearize diaktifkan. Langkah ketiga menegakkan maxFileSizeBytes profil melalui SizeAwareSplitter.
Splitter mengestimasi jumlah halaman per segmen dari ukuran halaman rata-rata, memecah, lalu memverifikasi setiap segmen yang dihasilkan terhadap batas. Segmen mana pun yang melebihi batas dan masih mencakup lebih dari satu halaman akan di-re-split secara rekursif, memangkas separuh rentang halamannya setiap lintasan, hingga setiap turunan muat atau menjadi satu halaman. Kedalaman re-split yang dibatasi menjaga terhadap non-konvergensi patologis. Indeks output dinormalisasi ulang agar tetap kontigu dan berbasis nol.
optimize() mengonsumsi tiga field profil: maxFileSizeBytes, removeJavaScript, dan linearize. Field flattenForms, imageQuality, dan compressObjectStreams adalah batasan profil yang dideklarasikan yang tidak ditindaklanjuti oleh optimize() pada 3.1.0.
Output e-filing adalah artefak pengiriman, bukan state siklus-hidup dokumen. PDF yang telah dioptimasi atau dipecah bersifat final untuk transmisi dan tidak boleh masuk kembali ke pipeline penandatanganan atau pengarsipan; pemrosesan ulang akan merusak hash chain dan integritas bukti.
Modul ini menyiapkan format untuk pengajuan e-court / pemerintah sesuai konfigurasi. Modul ini tidak menjamin penerimaan oleh pengadilan, registri, tribunal, atau filing portal mana pun. Batas profil bawaan mengodekan batasan yang umum dipublikasikan sebagai kemudahan, bukan umpan langsung dari setiap portal; aturan portal bervariasi menurut yurisdiksi dan berubah. Memverifikasinya terhadap aturan terkini registri tujuan adalah tanggung jawab pihak pengaju.
Pemrosesan bersifat in-process dan lokal. Transport ke pengadilan, registri, atau filing portal berada di luar modul ini.
Kasus tepi & mode kegagalan
Bagian berjudul “Kasus tepi & mode kegagalan”- Input pada atau di bawah batas: satu segmen dengan rentang halaman
all; langkah split membiarkan byte tidak berubah. - Penolakan sanitasi (misalnya input yang tidak dapat diurai): peringatan
CDR sanitization rejected: <reason>dicatat dan pipeline melanjutkan dengan byte asli. - Lintasan sanitasi tanpa ancaman ditemukan: byte tetap digantikan oleh PDF yang dibangun ulang, dan sebuah entri optimasi mencatat lintasan bersih tersebut.
- Kegagalan linearisasi: peringatan
Linearization skipped: <message>dicatat dan pipeline melanjutkan dengan byte yang tidak dilinearisasi. - Satu halaman melebihi batas: benar-benar tak terbagi, dikembalikan tanpa perubahan sebagai satu segmen yang melebihi batas. Tidak ada peringatan yang dicatat untuk kasus ini; bandingkan
sizeBytessetiap segmen terhadap batas profil sebelum pengajuan. - Batas kedalaman re-split tercapai: segmen yang melebihi batas diteruskan tanpa perubahan alih-alih berulang.
compressionRatio()mengembalikan0.0saat input asli kosong.- Modul tidak melakukan operasi kriptografis; mode FIPS tidak berlaku.
Konformansi
Bagian berjudul “Konformansi”| Perilaku | Referensi | Status |
|---|---|---|
| Organisasi output terlinearisasi (data halaman pertama di awal file) | ISO 32000-2:2020 Annex F / Annex G | Dibangun terhadap |
| Semantik relasi associated-file | ISO 19005-3:2012 §6.7.8 | Dipatuhi jika carrier berlaku |
| Persyaratan carrier embedded-file | ISO 19005-4:2020 Annex A | Dipatuhi jika carrier berlaku |
Linearisasi menargetkan organisasi Linearized PDF, yang menempatkan semua data yang diperlukan untuk menampilkan halaman pertama di awal file demi akses inkremental yang efisien.
Baris-baris ini menggambarkan kapabilitas yang dibangun terhadap klausa yang dikutip. Dukungan bukanlah konformansi, dan konformansi bukanlah sertifikasi; NextPDF tidak memegang sertifikasi apa pun. Tidak ada pernyataan di halaman ini yang menjamin penerimaan oleh filing portal mana pun.
Halaman ini membawa export_control_class: legal-review-required. NextPDF tidak memberikan nasihat hukum. Aturan pengajuan bervariasi menurut yurisdiksi dan berubah; memenuhinya adalah tanggung jawab pihak pengaju. Konsultasikan dengan penasihat hukum dan panduan terkini registri tujuan.
Catatan pengembangan
Bagian berjudul “Catatan pengembangan”use NextPDF\Enterprise\Document\EFiling\EFilingOptimizer;use NextPDF\Enterprise\Document\EFiling\EFilingProfile;
$optimizer = new EFilingOptimizer();$result = $optimizer->optimize($pdfBytes, EFilingProfile::euJustice());
foreach ($result->segments as $segment) { // Persist $segment->pdfData; confirm $segment->sizeBytes fits the cap.}- Periksa
$result->warningssebelum pengajuan. Sanitasi yang ditolak atau linearisasi yang dilewati muncul di sana, bukan sebagai exception. - Tandatangani dan arsipkan dokumen sumber terlebih dahulu; lalu optimasi salinan untuk pengiriman. Jangan pernah menandatangani ulang, men-stempel ulang, atau mengarsipkan segmen yang telah dioptimasi.
- Verifikasi
sizeBytessetiap segmen terhadap batas profil. Halaman tak terbagi yang melebihi batas mencapai output secara diam-diam. - Untuk portal tanpa factory bawaan, bangun
EFilingProfilekustom dengan batas yang dipublikasikan portal.
Batas publikasi
Bagian berjudul “Batas publikasi”Halaman ini hanya mendokumentasikan perilaku yang dapat diamati secara eksternal dan permukaan API publik yang didukung. Jalur namespace internal, kelas helper, tabel mekanisme, nama file runbook, dan prefiks tiket berada di luar cakupan.