Enterprise รุ่น
Document E-Filing — เอกสารอ้างอิงเชิงลึก
ภาพรวมโดยย่อ
หัวข้อที่มีชื่อว่า “ภาพรวมโดยย่อ”EFilingOptimizerเตรียม PDF สำหรับการยื่นต่อศาลแบบอิเล็กทรอนิกส์ในรอบเดียวที่มีลำดับตายตัว ได้แก่ sanitize, linearize, size-splitEFilingProfileเข้ารหัสข้อจำกัดตามเขตอำนาจศาล แฟกทอรีในตัวครอบคลุม US PACER, EU e-Justice และ Taiwan Judicial YuanSizeAwareSplitterบังคับขีดจำกัดไบต์ต่อส่วนด้วยการแบ่งซ้ำแบบตรวจสอบแล้วแก้ไข- ผลลัพธ์เป็น delivery artifact ต้องไม่กลับเข้าสู่ไปป์ไลน์การลงลายเซ็นหรือการเก็บถาวร
- โมดูลนี้ไม่ทำการดำเนินการเชิงการเข้ารหัสลับใด ๆ และไม่มีการเรียกเครือข่ายขาออก
ความพร้อมใช้งานและการอนุญาต
หัวข้อที่มีชื่อว่า “ความพร้อมใช้งานและการอนุญาต”ความสามารถนี้มาพร้อมกับ NextPDF Enterprise (nextpdf/enterprise) และเปิดใช้งานด้วย license envelope ระดับ Enterprise การติดตั้งที่ไม่มีสิทธิ์นั้นจะไม่โหลดคลาสของความสามารถนี้ Compare editions and get a license
ขอบเขตแพ็กเกจ nextpdf/enterprise จำกัดสิทธิ์พื้นผิวนี้ ไม่มีรหัสความสามารถต่อฟีเจอร์แยกต่างหาก ไม่มีขั้น Core หรือ Pro ใดที่ให้ตัวปรับให้เหมาะสำหรับ e-filing
พื้นผิว API สาธารณะ
หัวข้อที่มีชื่อว่า “พื้นผิว API สาธารณะ”composer require nextpdf/enterprise:^3| สัญลักษณ์ | พารามิเตอร์ | พฤติกรรมเริ่มต้น | คืนค่า | โยนหรือล้มเหลวด้วย | หมายเหตุ |
|---|---|---|---|---|---|
EFilingOptimizer::optimize() | string $pdfData, ?EFilingProfile $profile = null | โปรไฟล์เริ่มต้นเป็น EFilingProfile::pacer() รัน sanitize, linearize, size-split ตามลำดับตายตัว | EFilingResult | InvalidArgumentException จากขั้นตอนการแบ่งเมื่ออินพุตที่เกินขีดจำกัดไม่ใช่ PDF ที่ถูกต้อง ความล้มเหลวของ sanitization และ linearization จะลดระดับเป็นคำเตือน | ผลลัพธ์เป็น delivery artifact |
EFilingProfile::__construct() | $name, $maxFileSizeBytes = 26_214_400, $flattenForms = true, $removeJavaScript = true, $imageQuality = 75, $linearize = true, $compressObjectStreams = true | โปรไฟล์เขตอำนาจศาลแบบ immutable | EFilingProfile | ไม่โยนข้อยกเว้น | ขีดจำกัดแบบกำหนดเองสำหรับพอร์ทัลที่ไม่มีแฟกทอรีในตัว |
EFilingProfile::pacer() | ไม่มี | ขีดจำกัด 25 MiB คุณภาพภาพ 75 | EFilingProfile | ไม่โยนข้อยกเว้น | US PACER |
EFilingProfile::euJustice() | ไม่มี | ขีดจำกัด 10 MiB คุณภาพภาพ 70 | EFilingProfile | ไม่โยนข้อยกเว้น | EU e-Justice Portal |
EFilingProfile::taiwan() | ไม่มี | ขีดจำกัด 10 MiB คุณภาพภาพ 70 | EFilingProfile | ไม่โยนข้อยกเว้น | Taiwan Judicial Yuan |
SizeAwareSplitter::splitByMaxSize() | string $pdfData, int $maxBytes | ส่วนเดียวเมื่ออินพุตพอดี มิฉะนั้นประมาณ ตรวจสอบ แบ่งซ้ำ | list<EFilingSegment> | InvalidArgumentException เมื่ออินพุตที่เกินขีดจำกัดไม่มีส่วนหัว %PDF | อินพุตที่ต่ำกว่าขีดจำกัดจะคืนเป็นส่วนเดียวโดยไม่ตรวจสอบ |
EFilingResult::isSplit() | ไม่มี | true เมื่อมีมากกว่าหนึ่งส่วน | bool | ไม่โยนข้อยกเว้น | — |
EFilingResult::segmentCount() | ไม่มี | จำนวนส่วนทั้งหมด | int | ไม่โยนข้อยกเว้น | — |
EFilingResult::compressionRatio() | ไม่มี | optimizedTotalSize / originalSize | float | ไม่โยนข้อยกเว้น 0.0 สำหรับอินพุตเดิมที่ว่างเปล่า | ยิ่งต่ำยิ่งดี |
EFilingSegment | $pdfData, $pageRange, $sizeBytes, $segmentIndex | ส่วนผลลัพธ์แบบ immutable | ออบเจ็กต์ค่า | ไม่โยนข้อยกเว้น | สตริงช่วงหน้า เช่น 1-25 หรือ 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(): floatสัญญาพฤติกรรม
หัวข้อที่มีชื่อว่า “สัญญาพฤติกรรม”EFilingOptimizer::optimize() รันไปป์ไลน์ที่มีลำดับตายตัวกับไบต์อินพุต ขั้นที่หนึ่งลบเนื้อหาที่ทำงานได้เมื่อมีการตั้ง removeJavaScript โดยมอบหมายให้เอนจิน content-disarm-and-reconstruction ด้วยนโยบายเฉพาะสำหรับการยื่น ได้แก่ JavaScript, named JavaScript, launch action, การส่งฟอร์ม และ data-import action จะถูกลบ ส่วน URI action จะถูกเก็บไว้ (allowUriActions) เพราะการยื่นอาจมีลิงก์ที่ถูกต้องตามกฎหมาย และ incremental update จะถูก flatten ให้เป็นรีวิชันเดียว (flattenIncrementalUpdates) ขั้นที่สอง linearize ไบต์ที่ sanitize แล้วผ่าน Core NextPDF\Writer\Linearizer เมื่อมีการตั้ง linearize ขั้นที่สามบังคับ maxFileSizeBytes ของโปรไฟล์ผ่าน SizeAwareSplitter
ตัวแบ่งประมาณจำนวนหน้าต่อส่วนจากขนาดหน้าเฉลี่ย ทำการแบ่ง แล้วตรวจสอบทุกส่วนที่สร้างขึ้นเทียบกับขีดจำกัด ส่วนใดที่เกินขีดจำกัดและยังครอบคลุมมากกว่าหนึ่งหน้าจะถูกแบ่งซ้ำแบบเวียนเกิด โดยลดช่วงหน้าของตัวเองลงครึ่งหนึ่งในแต่ละรอบ จนกว่าทุกส่วนย่อยจะพอดีหรือเหลือหน้าเดียว ความลึกของการแบ่งซ้ำที่มีขอบเขตช่วยป้องกันการไม่ลู่เข้าที่ผิดปกติ ดัชนีผลลัพธ์ถูกปรับให้เป็นปกติใหม่เพื่อให้ต่อเนื่องและเริ่มจากศูนย์
optimize() ใช้ฟิลด์ของโปรไฟล์สามฟิลด์ ได้แก่ maxFileSizeBytes, removeJavaScript และ linearize ส่วนฟิลด์ flattenForms, imageQuality และ compressObjectStreams เป็นข้อจำกัดของโปรไฟล์ที่ประกาศไว้ซึ่ง optimize() ไม่ได้ดำเนินการใน 3.1.0
ผลลัพธ์ของ e-filing เป็น delivery artifact ไม่ใช่สถานะของวงจรชีวิตเอกสาร PDF ที่ปรับให้เหมาะแล้วหรือถูกแบ่งแล้วถือเป็นขั้นสุดท้ายสำหรับการส่ง และต้องไม่กลับเข้าสู่ไปป์ไลน์การลงลายเซ็นหรือการเก็บถาวรอีก การประมวลผลซ้ำจะทำลายห่วงโซ่ hash และความถูกต้องสมบูรณ์ในเชิงพยานหลักฐาน
โมดูลนี้เตรียม รูปแบบสำหรับการยื่นต่อ e-court / หน่วยงานภาครัฐตามที่กำหนดค่าไว้ มันไม่รับประกันการยอมรับโดยศาล หน่วยทะเบียน คณะตุลาการ หรือพอร์ทัลการยื่นใด ๆ ขีดจำกัดของโปรไฟล์ในตัวเข้ารหัสข้อจำกัดที่เผยแพร่กันโดยทั่วไปไว้เพื่อความสะดวก ไม่ใช่ฟีดสดจากแต่ละพอร์ทัล กฎของพอร์ทัลแตกต่างกันตามเขตอำนาจศาลและเปลี่ยนแปลงได้ การตรวจสอบกฎเหล่านั้นเทียบกับกฎปัจจุบันของหน่วยทะเบียนปลายทางเป็นความรับผิดชอบของผู้ยื่น
การประมวลผลทำในกระบวนการและในเครื่อง การส่งไปยังศาล หน่วยทะเบียน หรือพอร์ทัลการยื่นอยู่ภายนอกโมดูลนี้
กรณีขอบและโหมดความล้มเหลว
หัวข้อที่มีชื่อว่า “กรณีขอบและโหมดความล้มเหลว”- อินพุตที่เท่ากับหรือต่ำกว่าขีดจำกัด คืนส่วนเดียวที่มีช่วงหน้า
allขั้นตอนการแบ่งไม่เปลี่ยนแปลงไบต์ - การปฏิเสธของ sanitization (เช่น อินพุตที่แจงไม่ได้) จะบันทึกคำเตือน
CDR sanitization rejected: <reason>และไปป์ไลน์ดำเนินต่อด้วยไบต์เดิม - การ sanitize ที่ไม่พบภัยคุกคาม ไบต์ยังคงถูกแทนที่ด้วย PDF ที่สร้างใหม่ และรายการปรับให้เหมาะจะบันทึกการผ่านที่สะอาด
- ความล้มเหลวของ linearization จะบันทึกคำเตือน
Linearization skipped: <message>และไปป์ไลน์ดำเนินต่อด้วยไบต์ที่ไม่ได้ linearize - หน้าเดียวที่เกินขีดจำกัด แบ่งต่อไม่ได้จริง ๆ จะถูกคืนโดยไม่เปลี่ยนแปลงเป็นส่วนเดียวที่เกินขีดจำกัด กรณีนี้ไม่มีการบันทึกคำเตือน ควรเทียบ
sizeBytesของแต่ละส่วนกับขีดจำกัดของโปรไฟล์ก่อนการยื่น - เมื่อถึงขีดจำกัดความลึกของการแบ่งซ้ำ ส่วนที่เกินขีดจำกัดจะผ่านไปโดยไม่เปลี่ยนแปลงแทนที่จะวนซ้ำ
compressionRatio()คืน0.0เมื่ออินพุตเดิมว่างเปล่า- โมดูลนี้ไม่ทำการดำเนินการเชิงการเข้ารหัสลับใด ๆ โหมด FIPS จึงไม่นำมาใช้
ความสอดคล้อง
หัวข้อที่มีชื่อว่า “ความสอดคล้อง”| พฤติกรรม | อ้างอิง | สถานะ |
|---|---|---|
| การจัดระเบียบผลลัพธ์แบบ linearized (ข้อมูลหน้าแรกที่ต้นไฟล์) | ISO 32000-2:2020 Annex F / Annex G | สร้างเทียบกับ |
| ความหมายของความสัมพันธ์ associated-file | ISO 19005-3:2012 §6.7.8 | ปฏิบัติตามในที่ที่ carrier นำมาใช้ |
| ข้อกำหนดของ carrier แบบ embedded-file | ISO 19005-4:2020 Annex A | ปฏิบัติตามในที่ที่ carrier นำมาใช้ |
การ linearize มุ่งไปที่การจัดระเบียบแบบ Linearized PDF ซึ่งวางข้อมูลทั้งหมดที่จำเป็นต่อการแสดงหน้าแรกไว้ที่ต้นไฟล์เพื่อการเข้าถึงแบบเพิ่มทีละส่วนอย่างมีประสิทธิภาพ
แถวเหล่านี้อธิบายความสามารถที่สร้างเทียบกับข้อกำหนดที่อ้างถึง การรองรับไม่ใช่ความสอดคล้อง และความสอดคล้องไม่ใช่การรับรอง NextPDF ไม่ถือการรับรองใด ๆ ไม่มีคำแถลงใดในหน้านี้รับประกันการยอมรับโดยพอร์ทัลการยื่นใด ๆ
หน้านี้มี export_control_class: legal-review-required NextPDF ไม่ให้คำแนะนำทางกฎหมาย กฎการยื่นแตกต่างกันตามเขตอำนาจศาลและเปลี่ยนแปลงได้ การปฏิบัติตามกฎเหล่านั้นเป็นความรับผิดชอบของผู้ยื่น ปรึกษาที่ปรึกษากฎหมายและแนวทางปัจจุบันของหน่วยทะเบียนปลายทาง
บันทึกการพัฒนา
หัวข้อที่มีชื่อว่า “บันทึกการพัฒนา”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.}- ตรวจสอบ
$result->warningsก่อนการยื่น การ sanitization ที่ถูกปฏิเสธหรือการ linearization ที่ถูกข้ามจะปรากฏที่นั่น ไม่ใช่เป็นข้อยกเว้น - ลงลายเซ็นและเก็บถาวรเอกสารต้นฉบับก่อน แล้วจึงปรับสำเนาให้เหมาะสำหรับการส่ง อย่าลงลายเซ็นซ้ำ ประทับซ้ำ หรือเก็บถาวรส่วนที่ปรับให้เหมาะแล้ว
- ตรวจสอบ
sizeBytesของทุกส่วนเทียบกับขีดจำกัดของโปรไฟล์ หน้าที่เกินขีดจำกัดและแบ่งต่อไม่ได้จะไปถึงผลลัพธ์อย่างเงียบ ๆ - สำหรับพอร์ทัลที่ไม่มีแฟกทอรีในตัว ให้สร้าง
EFilingProfileแบบกำหนดเองด้วยขีดจำกัดที่พอร์ทัลเผยแพร่
ขอบเขตการเผยแพร่
หัวข้อที่มีชื่อว่า “ขอบเขตการเผยแพร่”หน้านี้บันทึกเฉพาะพฤติกรรมที่สังเกตได้จากภายนอกและพื้นผิว API สาธารณะที่รองรับเท่านั้น internal namespace paths, คลาสตัวช่วย, ตารางกลไก, ชื่อไฟล์ runbook และ ticket prefixes อยู่นอกขอบเขต