Pro รุ่น
Compliance — การอ้างอิงเชิงลึก
ภาพรวมโดยสังเขป
หัวข้อที่มีชื่อว่า “ภาพรวมโดยสังเขป”โมดูล Compliance รวมพื้นผิวที่เป็นอิสระสามส่วนไว้ภายใต้ NextPDF\Pro\Compliance
- การรายงาน language-tag — facade นโยบาย
/Langแบบ strict ของ PDF/UA-2 พร้อมตัวรายงานเหตุการณ์การปฏิบัติตามข้อกำหนดที่มีโครงสร้างในรูปแบบ PSR-3 - การจัดการ e-invoice — การตรวจสอบ Factur-X 1.08 / ZUGFeRD 2.4 เทียบกับแบบจำลองเชิงความหมายของ EN 16931 และการสร้าง PDF/A-3 แบบไฮบริด
- ที่มา — ฝังและสกัด manifest store ของ C2PA ที่ผู้เรียกใช้จัดหาผ่าน JUMBF parser ที่เสริมความแข็งแกร่งเชิงปฏิปักษ์ ส่วนการสังเคราะห์การอ้างสิทธิ์ยังคงถูกเกตในสถานะ preview
โมดูลรายงานสิ่งที่ตรวจสอบ ไม่ได้รับรองเอกสารและไม่ได้ดำเนินการลงนามทางการเข้ารหัสลับ
ความพร้อมใช้งานและสิทธิ์ใช้งาน
หัวข้อที่มีชื่อว่า “ความพร้อมใช้งานและสิทธิ์ใช้งาน”ความสามารถนี้มาพร้อมกับ NextPDF Pro (nextpdf/pro) และเปิดใช้งานด้วย license envelope ระดับ Pro การติดตั้งที่ไม่มีสิทธิ์ดังกล่าวจะไม่โหลดคลาสของความสามารถนี้ เปรียบเทียบรุ่นและขอรับสิทธิ์ใช้งาน
ไม่มีแฟล็กสิทธิ์ใช้งานรายฟีเจอร์ นี่เป็นความสามารถของรุ่น Pro ส่วนตัวสร้างการอ้างสิทธิ์ C2PA แบบทดลองยังต้องการการ opt-in ผ่านสภาพแวดล้อมอย่างชัดเจนเพิ่มเติม (ดูกรณีขอบและโหมดความล้มเหลว)
พื้นผิว public API
หัวข้อที่มีชื่อว่า “พื้นผิว public API”composer require nextpdf/pro:^3| สัญลักษณ์ | พารามิเตอร์ | พฤติกรรมเริ่มต้น | คืนค่า | throw หรือล้มเหลวด้วย | หมายเหตุ |
|---|---|---|---|---|---|
LangComplianceReporter::warn() / ::error() | string $tag, string $reason, ?string $clauseReference = null | ส่งออกบันทึก JSON ที่มีโครงสร้างหนึ่งรายการต่อเหตุการณ์ language-tag ผ่าน logger ของ PSR-3 | void | JsonException หากบันทึกเข้ารหัส JSON ล้มเหลว | warn = การปฏิเสธโหมด lax error = การปฏิเสธโหมด strict |
LangComplianceReporter::reportException() | InvalidBcp47TagException $exception, string $severity = 'error' | สกัดแท็กและเหตุผลจากข้อยกเว้น มอบหมายให้ warn() หรือ error() | void | ดังข้างต้น | เส้นทางเพื่อความสะดวก |
LangComplianceReporter::buildRecord() | string $severity, string $tag, string $reason, ?string $clauseReference = null | สร้างอาเรย์บันทึกโดยไม่บันทึก log | array | ไม่ throw | สำหรับ sink ที่กำหนดเอง เช่น สรุป JSON รายไฟล์ |
ConformancePolicy::default() | ?LoggerInterface $logger = null | นโยบาย UA-2 แบบ strict: แท็ก /Lang ที่ผิดรูปแบบหรือไม่ได้ลงทะเบียนจะถูกปฏิเสธ | self | ไม่ throw | ค่าเริ่มต้นของ v5.0 คือ strict |
ConformancePolicy::fromCore() | CoreConformancePolicy $core, ?LoggerInterface $logger = null | ห่อหุ้มนโยบาย Core ที่มีอยู่ตามเดิม ไม่พลิกแกนใด | self | ไม่ throw | ควรใช้ default() เพื่อท่าทีแบบ strict |
ConformancePolicy::withStrictUa2() | bool $enabled | คืนสำเนาที่ตั้งค่าแกน strict การปิดใช้งานจะส่งออก notice ของ PSR-3 | self | ไม่ throw | opt-out ที่เลิกใช้ เป้าหมายการลบออก 6.0.0 |
ConformancePolicy::isStrictUa2() / ::mode() | — | อ่านนโยบาย Core ที่อยู่เบื้องล่าง | bool / ConformanceMode | ไม่ throw | — |
EInvoiceValidator::validate() | string $pdfPath | ไปป์ไลน์เต็มรูปแบบ: การตรวจ wrapper PDF/A-3 การสกัด attachment การตรวจจับโปรไฟล์ กฎ EN 16931 และ Schematron | EInvoiceValidationResult | คลาสย่อยของ EInvoiceException เมื่อ I/O ล้มเหลว โครงสร้าง PDF ผิดรูปแบบ หรือเครื่องมือขัดข้อง | อินเทอร์เฟซ SPI ที่ถูกตรึง PDF ที่ไม่ใช่ e-invoice ที่มีรูปแบบถูกต้องจะคืนผลลัพธ์ ไม่เคย throw |
EInvoiceXmlValidator::validate() | string $xmlPayload, ValidatorContext $context | การตรวจสอบเชิงโครงสร้างล่วงหน้าพร้อมคลังกฎเชิงความหมายเชิงลึกของ EN 16931 บนเพย์โหลด CII | สัญญา ValidationResult | ไม่ throw สำหรับอินพุตที่ไม่ถูกต้อง การปฏิเสธจะปรากฏเป็นผลลัพธ์ที่ล้มเหลวพร้อมข้อค้นพบ | ตัวตรวจสอบข้ามระดับแบบเป็นรูปธรรม อินพุตถูกเกตผ่าน XmlGuard |
EInvoiceValidationResult::isValid() | — | เป็นจริงเฉพาะเมื่อ wrapper, attachment spec, โปรไฟล์ และไวยากรณ์ผ่าน และไม่มีการละเมิดระดับ FATAL | bool | ไม่ throw | รายการการละเมิดที่ว่างเปล่าเพียงอย่างเดียวไม่ใช่ความถูกต้อง |
EInvoiceValidationResult::notAnEInvoice() | — | ผลลัพธ์แบบกำหนดได้ที่เป็น null ทั้งหมด false ทั้งหมด | self | ไม่ throw | แฟกทอรีสำหรับกรณี “ไม่ใช่ใบแจ้งหนี้แบบไฮบริด” |
EInvoiceProfile | enum ที่ backed ด้วย string | เคส MINIMUM, BASIC_WL, BASIC, EN16931, EXTENDED backed ด้วย URN ของ BT-24 | — | — | isEn16931Conformant() เป็น false สำหรับ MINIMUM และ BASIC_WL |
EInvoiceSyntax | enum ที่ backed ด้วย string | เคส UN_CEFACT_CII, UBL_INVOICE, UBL_CREDIT_NOTE | — | — | มีเพียง CII เท่านั้นที่ isFacturXEligible() ส่วน UBL ใช้ได้เฉพาะตัวตรวจสอบ |
BusinessRuleViolation | string $ruleId, BusinessRuleSeverity $severity, string $message, ?string $xpath = null, ?string $ramPath = null | DTO การละเมิดแบบ immutable | — | — | ตระกูล rule-id BR-, BR-CO-, BR-CL-, BR-DEC-, BR-FXEXT- |
BusinessRuleSeverity | enum ที่ backed ด้วย string | FATAL ทำให้ใบแจ้งหนี้ไม่ถูกต้อง WARNING ทำเครื่องหมายข้อกังวลด้านคุณภาพ | — | — | สะท้อนระดับ Schematron ของ EN 16931 |
FacturXEmbedder::embed() | ดู fence ลายเซ็น | ต่อท้าย embedded-file stream, filespec และ XMP ให้กับแหล่ง PDF/A เขียน xref ใหม่ | void | EInvoiceException เมื่อ XML ผิดรูปแบบ อ่านแหล่งไม่ได้ ไม่มี catalog แหล่งเป็น object-stream หรือ xref-stream หรือเขียนเอาต์พุตล้มเหลว | ไฟล์แหล่งถูกทิ้งไว้ครบถ้วน |
FacturXEmbedderOptions::default() | — | /AFRelationship /Alternative ชื่อไฟล์ factur-x.xml ประเภท INVOICE เวอร์ชัน 1.0 | self | ไม่ throw | ค่าเริ่มต้นเป็นไปตามข้อบังคับของเยอรมนีและยังคงได้รับการยอมรับในฝรั่งเศส |
FacturXEmbedderOptions::withRelationship() / ::withFilename() | string | คืนสำเนาที่ใช้การแทนที่แล้ว | self | InvalidArgumentException เมื่ออยู่นอกชุดที่ยอมรับ | ความสัมพันธ์: Source, Data, Alternative ชื่อไฟล์รวมถึง zugferd-invoice.xml และ xrechnung.xml |
FacturXEmbedderOptions::withDocumentType() | string $documentType | คืนสำเนาที่แทนที่ประเภทเอกสาร XMP | self | ไม่ throw | ค่าต่างๆ ไม่ได้ถูกแจงนับเชิงป้องกัน |
FacturXContractEmbedder::embed() | string $pdfBytes, string $xmlPayload, EmbedderOptions $options | อะแดปเตอร์ไบต์เข้า-ไบต์ออกบน FacturXEmbedder ผ่านไฟล์ชั่วคราวอายุสั้น | string | EInvoiceException โปรไฟล์ XRECHNUNG ถูกปฏิเสธเนื่องจากเป็นของ Enterprise เท่านั้น | การนำ EmbedderInterface ไปใช้แบบข้ามระดับ |
C2paManifestEmbedder::embed() | string $pdfBytes, ManifestStore $store | ฝังการซีเรียลไลซ์ไบต์ของ store ที่ตำแหน่งของโปรไฟล์ | string | C2paException เมื่อการฝังล้มเหลวใดๆ | อินเทอร์เฟซ SPI ที่ถูกตรึง ไบต์เท่านั้น ไม่มี I/O |
C2paManifestEmbedder::extract() | string $pdfBytes | แจง store ที่ฝังผ่าน JUMBF parser ที่เสริมความแข็งแกร่ง | ManifestStore|null | คลาสย่อยของ C2paException เมื่อมี store อยู่แต่ละเมิดขีดจำกัดการเสริมความแข็งแกร่ง | null บ่งบอกการไม่มีอยู่ การไม่มีอยู่ไม่ throw |
ManifestStore::fromBoxes() / ::empty() | list<JumbfBox> / — | สร้าง value object ของ store แบบ immutable | self | ไม่ throw | ลำดับของ box มีผลต่อความเท่ากันในการ round-trip |
ManifestStore::toBytes() / ::isEmpty() / ::size() | — | ซีเรียลไลซ์ box ราก store ที่ว่างเปล่าจะซีเรียลไลซ์เป็นสตริงว่าง | string / bool / int | ไม่ throw | — |
JumbfBoxParser::parse() | string $bytes | แจง JUMBF box ระดับรากภายใต้ขีดจำกัดที่เข้มงวด | list<JumbfBox> | MalformedJumbfException, JumbfBombException, JumbfCycleDetectedException, JumbfDepthExceededException | ขีดจำกัด: ความลึก 8, 64 MiB ต่อ box, รวม 128 MiB, MAX_CHILDREN_PER_SUPERBOX 4096 |
JumbfBox::superbox() / ::leaf() | string $tbox, … | สร้าง box ที่ตรวจสอบแล้ว toBytes() round-trip ผ่าน parser | self | MalformedJumbfException เมื่อ TBox ไม่ใช่ 4 ไบต์พอดี | — |
C2paCapabilityStatus::current() / ::summary() | — | รายงานความสมบูรณ์ของความสามารถ C2PA ปัจจุบันคือ preview-draft | self / string | ไม่ throw | เครื่องหมาย preview ที่ตรวจสอบได้ด้วยเครื่อง |
Feature::PREVIEW_C2PA_DRAFT->isEnabled() | — | อ่านสภาพแวดล้อมของโปรเซสในทุกการเรียก มีเพียงค่า '1' เท่านั้นที่เปิดใช้งาน | bool | ไม่ throw | ตัวแปรสภาพแวดล้อม NEXTPDF_FEATURE_PREVIEW_C2PA_DRAFT |
ExperimentalC2paEmbedder::buildManifestStore() | string $sourceBytes, string $producer | สร้าง manifest store ที่ตรึงกับ draft พร้อมการยืนยันการอ้างสิทธิ์การผูก hash SHA-256 หนึ่งรายการ | ManifestStore | constructor throw LogicException เมื่อแฟล็ก preview ปิดอยู่ | preview รูปแบบ wire ถูกตรึงกับ snapshot ของ draft ไม่มีการส่งออกลายเซ็นการอ้างสิทธิ์ |
ลายเซ็นจุดเริ่มต้น แบบคำต่อคำ:
public static function default(?LoggerInterface $logger = null): selfpublic function withStrictUa2(bool $enabled): selfpublic function isStrictUa2(): boolpublic function validate(string $pdfPath): EInvoiceValidationResultpublic function embed( string $sourcePdfPath, string $xml, EInvoiceProfile $profile, string $outputPdfPath, ?FacturXEmbedderOptions $options = null,): voidpublic function embed(string $pdfBytes, ManifestStore $store): stringpublic function extract(string $pdfBytes): ?ManifestStoreสัญญาพฤติกรรม
หัวข้อที่มีชื่อว่า “สัญญาพฤติกรรม”การรายงาน language-tag LangComplianceReporter ส่งออกบันทึก JSON ที่มีโครงสร้างหนึ่งรายการต่อเหตุการณ์ language-tag ของ PDF/UA-2 บันทึกแต่ละรายการพกพาตัวแยกแยะเหตุการณ์แบบคงที่ ความรุนแรง (warn สำหรับการปฏิเสธโหมด lax error สำหรับการปฏิเสธโหมด strict) แท็กที่ละเมิดแบบคำต่อคำ เหตุผลที่อ่านได้ด้วยเครื่อง ส่วนประกอบแท็กที่แจงแล้ว (หรือ null เมื่อแท็กไม่ผ่านไวยากรณ์รูปแบบ RFC 5646) การอ้างอิงข้อ ISO 14289-2 §8.4.4 และการประทับเวลา UTC พร้อมไมโครวินาที JSON เดินทางเป็นเนื้อความข้อความ PSR-3 ส่วน sink ปลายทางแจงฟิลด์ข้อความโดยตรง ConformancePolicy เป็น facade ของ Premium เหนือนโยบายการปฏิบัติตามข้อกำหนดของ Core ค่าเริ่มต้นใช้การจัดการภาษา UA-2 แบบ strict และปฏิเสธแท็กที่ผิดรูปแบบหรือไม่ได้ลงทะเบียนที่เข้าถึง /Lang ตัวช่วย opt-out withStrictUa2(false) ย้อนกลับไปยังพฤติกรรม lax แบบเดิมและบันทึกการแจ้งเตือน PSR-3 เมื่อค่าที่มีผลเปลี่ยนแปลงจริง NextPDF ทำเครื่องหมายตัวช่วยนั้นว่า เลิกใช้ ตั้งแต่ v5.0 โดยมีเป้าหมายการลบออกที่ 6.0.0 ในการย้ายระบบ: ตรวจสอบคลังข้อมูลหาค่า /Lang ที่ผิดรูปแบบด้วย composer pdfua2:audit-lang-tags <pdf-or-dir> แก้ไข จากนั้นเลิกการเรียก opt-out
การจัดการ e-invoice EInvoiceValidator เป็นสัญญา SPI ที่ถูกตรึงสำหรับการตรวจสอบ PDF แบบไฮบริด: การตรวจ wrapper PDF/A-3 การสกัด attachment /AF การตรวจจับโปรไฟล์จากตัวระบุข้อกำหนด BT-24 เอนจินกฎทางธุรกิจของ EN 16931 และ Schematron pass PDF ที่ไม่ใช่ Factur-X ที่มีรูปแบบถูกต้องจะคืนค่า EInvoiceValidationResult::notAnEInvoice() แทนที่จะ throw มีเพียงความล้มเหลว I/O โครงสร้าง PDF ที่ผิดรูปแบบ หรือเครื่องมือขัดข้องเท่านั้นที่ยกคลาสย่อยของ EInvoiceException EInvoiceXmlValidator เป็นตัวตรวจสอบ XML ข้ามระดับแบบเป็นรูปธรรม: มันเกตอินพุตผ่าน XmlGuard ของ Core รันการตรวจสอบเชิงโครงสร้างล่วงหน้าและคลังกฎเชิงความหมายเชิงลึกของ EN 16931 และล้มเหลวแบบปิด — ข้อผิดพลาดของเอนจินจะปรากฏเป็นข้อค้นพบข้อผิดพลาด ไม่เคยผ่านแบบเงียบ FacturXEmbedder แก้ไขแหล่ง PDF/A ให้เป็น PDF/A-3 แบบไฮบริด: มันต่อท้าย embedded-file stream, filespec พร้อม /AFRelationship ที่กำหนดค่าได้ และแพ็กเก็ตส่วนขยาย XMP ของ Factur-X จากนั้นเขียนตารางการอ้างอิงข้ามแบบคลาสสิกใหม่ ทั้งอาเรย์ /AF ของ catalog และ name tree /Names /EmbeddedFiles ต่างอ้างอิง attachment ดังนั้นตัวอ่าน ZUGFeRD รุ่นเดิมจึง resolve มันได้
ที่มา C2paManifestEmbedder ฝัง manifest store ของ C2PA ที่ผู้เรียกใช้จัดหาลงในสตริงไบต์ PDF หรือสกัดออกมา ManifestStore เป็น value object แบบ immutable ที่ข้ามขอบเขต seam เป็นแบบไบต์เท่านั้นและเป็นกลางต่อผู้ขาย: ไม่สังเคราะห์การอ้างสิทธิ์ ไม่นำการอ้างอิง URI เข้ามา และไม่ resolve การผูก hash และไม่ดำเนินการ I/O ผ่านเครือข่ายหรือระบบไฟล์ extract() คืนค่า null เมื่อไม่พบและมีต้นทุนต่ำบน PDF ที่ไม่มี store การสกัดที่ไม่เป็น null ทุกครั้งได้ผ่านขีดจำกัดการเสริมความแข็งแกร่งของ JumbfBoxParser มาแล้ว
โมดูลนี้ รายงานสิ่งที่ตรวจสอบ ไม่ได้รับรองเอกสาร ทำให้มีผลผูกพันทางกฎหมาย หรือรับประกันว่าเอาต์พุตใดเป็นไปตามข้อบังคับ ตัวตรวจสอบ e-invoice ไม่ใช่ตัวตรวจสอบของหน่วยงานภาษีและไม่รวมส่วนขยายระดับชาติ (ตัวอย่างเช่น SDI ของอิตาลี Chorus Pro ของฝรั่งเศส XRechnung ของเยอรมนี) ตามที่ EN 16931-1 ระบุไว้ ผู้ออกใบแจ้งหนี้ยังคงรับผิดชอบในการปฏิบัติตามกฎของกฎหมายที่เกี่ยวข้อง การรองรับมาตรฐานไม่ใช่การเป็นไปตามมาตรฐานนั้น โปรดปรึกษาทีมการปฏิบัติตามข้อกำหนดของคุณเกี่ยวกับความเพียงพอเชิงการกำกับดูแล
กรณีขอบและโหมดความล้มเหลว
หัวข้อที่มีชื่อว่า “กรณีขอบและโหมดความล้มเหลว”- PDF ที่ไม่ใช่ Factur-X ที่มีรูปแบบถูกต้องจะคืนค่าผลลัพธ์ “ไม่ใช่ e-invoice” ไม่ throw
- รายการการละเมิดกฎทางธุรกิจที่ว่างเปล่าไม่ได้หมายความว่าเอกสารถูกต้องในตัวมันเอง การตรวจ wrapper และ attachment ก็มีผลด้วย
FacturXEmbedderล้มเหลวแบบปิดบนแหล่งที่ใช้ object stream แบบบีบอัด (/Type /ObjStm) หรือ cross-reference stream (/Type /XRef,/XRefStmแบบไฮบริด) ให้บันทึกแหล่งเช่นนั้นใหม่ด้วยตารางการอ้างอิงข้ามแบบคลาสสิกก่อน- เพย์โหลด XML ถูกเกตผ่าน
XmlGuardของ Core: การประกาศ DOCTYPE หรือ entity อินพุตที่ใหญ่เกินไป และ UTF-8 ที่ไม่ถูกต้องจะถูกปฏิเสธด้วยEInvoiceExceptionบนเส้นทางการฝัง หรือผลลัพธ์ที่ล้มเหลวบนเส้นทางตัวตรวจสอบ FacturXContractEmbedderปฏิเสธโปรไฟล์XRECHNUNGอย่างชัดเจนแทนที่จะลดระดับมันแบบเงียบ การสร้าง XRechnung เป็นความสามารถของ EnterpriseC2paManifestEmbedder::extract()แยกแยะการไม่มีอยู่ (null) จากการผิดรูปแบบ (คลาสย่อยของC2paExceptionที่ระบุค่าคงที่ที่ถูกละเมิด: โครงสร้างผิดรูปแบบ ระเบิดขนาดหรือจำนวน วงจร offset ความลึกของการซ้อน)- การสร้าง
ExperimentalC2paEmbedderthrowLogicExceptionเว้นแต่แฟล็กสภาพแวดล้อม preview จะเท่ากับ'1'รูปแบบ wire ของมันถูกตรึงกับ snapshot ของ draft C2PA และเปลี่ยนแปลงได้โดยไม่แจ้งล่วงหน้า มันไม่ส่งออกลายเซ็นการอ้างสิทธิ์ ความสามารถนี้ยังคงเป็น preview จนกว่าโปรไฟล์ PDF ของ C2PA จะถูกตรึง - lax opt-out ของ UA-2 แบบ strict ถูกเลิกใช้ ให้ย้ายไปยังค่าเริ่มต้น strict (ดูสัญญาพฤติกรรม)
- โมดูลนี้ไม่ทำการลงนามทางการเข้ารหัสลับ การลงนามการอ้างสิทธิ์ C2PA และการดูแลคีย์อยู่นอกขอบเขต ดูโมดูล Security สำหรับพฤติกรรมการลงนามในโหมด FIPS
การเป็นไปตามข้อกำหนด
หัวข้อที่มีชื่อว่า “การเป็นไปตามข้อกำหนด”| พฤติกรรม | การอ้างอิง | สถานะ |
|---|---|---|
การประกาศภาษาธรรมชาติ (/Lang) | ISO 14289-2:2024 §8.4.4 | ตรวจ / รายงาน |
| แบบจำลองเชิงความหมายหลักของใบแจ้งหนี้ | EN 16931-1:2026 | ตรวจ (ผู้ออกยังคงรับผิดชอบ) |
| ไฟล์ที่เชื่อมโยง / embedded file stream | ISO 32000-2:2020 §14.13.2 | สร้าง (/AF, /EF, /Params) |
| ความสัมพันธ์ของ attachment และกฎคอนเทนเนอร์ | Factur-X 1.08 §3.1, §6.2 | สร้าง / ตรวจ (ค่าเริ่มต้น /AFRelationship /Alternative) |
| manifest store / JUMBF ของ C2PA | C2PA 2.1 §11.1 | รองรับการฝัง / สกัด การสังเคราะห์การอ้างสิทธิ์เป็น preview |
ตารางนี้บันทึกข้อกำหนดที่โมดูลสร้างขึ้นเทียบกับ และสิ่งที่ตรวจหรือสร้าง ไม่ใช่คำแถลงเรื่องการรับรองหรือความเพียงพอเชิงการกำกับดูแล NextPDF ไม่ได้ถือการรับรองใดสำหรับมาตรฐานเหล่านี้
บันทึกการพัฒนา
หัวข้อที่มีชื่อว่า “บันทึกการพัฒนา”- รูปทรงบันทึกของตัวรายงานเป็นสัญญาที่เสถียร กฎการแจ้งเตือนปลายทางอาจตรึงกับตัวแยกแยะเหตุการณ์แบบคงที่ได้
- การปิดใช้งาน UA-2 แบบ strict จะส่งออกการแจ้งเลิกใช้ที่มองเห็นได้ในเทเลเมทรีเฉพาะเมื่อค่าที่มีผลเปลี่ยนแปลง การยืนยันค่าปัจจุบันซ้ำจะเงียบ
- ตัวฝัง Factur-X รักษาไบต์แหล่งไว้แบบคำต่อคำและต่อท้ายอ็อบเจกต์ใหม่ มันมุ่งรักษาการเป็นไปตาม PDF/A-3 แต่ไม่ตรวจสอบซ้ำ ให้ส่งเอาต์พุตผ่านตัวตรวจสอบ PDF/A ภายนอกเพื่อการรับรองที่หนักแน่น
- seam ของ C2PA ตรึงค่าคงที่ห้าประการ: ไม่มีการนำเข้าจากบุคคลที่สาม สัญญาแบบไบต์เท่านั้น ไม่มี I/O การสกัดที่คืน null เมื่อไม่พบ และไม่มีการสังเคราะห์การอ้างสิทธิ์ในเลเยอร์ที่เสถียร
- ขีดจำกัดของ
JumbfBoxParserเป็นค่าคงที่สาธารณะ ให้กำหนดขนาดอินพุตที่คุณยอมรับเทียบกับค่าเหล่านั้นแทนที่จะคำนวณขีดจำกัดใหม่
ขอบเขตการเผยแพร่
หัวข้อที่มีชื่อว่า “ขอบเขตการเผยแพร่”หน้านี้บันทึกเฉพาะพฤติกรรมที่สังเกตได้จากภายนอกและพื้นผิว public API ที่รองรับเท่านั้น เส้นทาง namespace ภายใน คลาสตัวช่วย ตารางกลไก ชื่อไฟล์ runbook และคำนำหน้า ticket อยู่นอกขอบเขต