ข้ามไปยังเนื้อหา
getnextpdf.com

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 ผ่านสภาพแวดล้อมอย่างชัดเจนเพิ่มเติม (ดูกรณีขอบและโหมดความล้มเหลว)

Terminal window
composer require nextpdf/pro:^3
สัญลักษณ์พารามิเตอร์พฤติกรรมเริ่มต้นคืนค่าthrow หรือล้มเหลวด้วยหมายเหตุ
LangComplianceReporter::warn() / ::error()string $tag, string $reason, ?string $clauseReference = nullส่งออกบันทึก JSON ที่มีโครงสร้างหนึ่งรายการต่อเหตุการณ์ language-tag ผ่าน logger ของ PSR-3voidJsonException หากบันทึกเข้ารหัส 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สร้างอาเรย์บันทึกโดยไม่บันทึก logarrayไม่ 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-3selfไม่ throwopt-out ที่เลิกใช้ เป้าหมายการลบออก 6.0.0
ConformancePolicy::isStrictUa2() / ::mode()อ่านนโยบาย Core ที่อยู่เบื้องล่างbool / ConformanceModeไม่ throw
EInvoiceValidator::validate()string $pdfPathไปป์ไลน์เต็มรูปแบบ: การตรวจ wrapper PDF/A-3 การสกัด attachment การตรวจจับโปรไฟล์ กฎ EN 16931 และ SchematronEInvoiceValidationResultคลาสย่อยของ 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, โปรไฟล์ และไวยากรณ์ผ่าน และไม่มีการละเมิดระดับ FATALboolไม่ throwรายการการละเมิดที่ว่างเปล่าเพียงอย่างเดียวไม่ใช่ความถูกต้อง
EInvoiceValidationResult::notAnEInvoice()ผลลัพธ์แบบกำหนดได้ที่เป็น null ทั้งหมด false ทั้งหมดselfไม่ throwแฟกทอรีสำหรับกรณี “ไม่ใช่ใบแจ้งหนี้แบบไฮบริด”
EInvoiceProfileenum ที่ backed ด้วย stringเคส MINIMUM, BASIC_WL, BASIC, EN16931, EXTENDED backed ด้วย URN ของ BT-24isEn16931Conformant() เป็น false สำหรับ MINIMUM และ BASIC_WL
EInvoiceSyntaxenum ที่ backed ด้วย stringเคส UN_CEFACT_CII, UBL_INVOICE, UBL_CREDIT_NOTEมีเพียง CII เท่านั้นที่ isFacturXEligible() ส่วน UBL ใช้ได้เฉพาะตัวตรวจสอบ
BusinessRuleViolationstring $ruleId, BusinessRuleSeverity $severity, string $message, ?string $xpath = null, ?string $ramPath = nullDTO การละเมิดแบบ immutableตระกูล rule-id BR-, BR-CO-, BR-CL-, BR-DEC-, BR-FXEXT-
BusinessRuleSeverityenum ที่ backed ด้วย stringFATAL ทำให้ใบแจ้งหนี้ไม่ถูกต้อง WARNING ทำเครื่องหมายข้อกังวลด้านคุณภาพสะท้อนระดับ Schematron ของ EN 16931
FacturXEmbedder::embed()ดู fence ลายเซ็นต่อท้าย embedded-file stream, filespec และ XMP ให้กับแหล่ง PDF/A เขียน xref ใหม่voidEInvoiceException เมื่อ XML ผิดรูปแบบ อ่านแหล่งไม่ได้ ไม่มี catalog แหล่งเป็น object-stream หรือ xref-stream หรือเขียนเอาต์พุตล้มเหลวไฟล์แหล่งถูกทิ้งไว้ครบถ้วน
FacturXEmbedderOptions::default()/AFRelationship /Alternative ชื่อไฟล์ factur-x.xml ประเภท INVOICE เวอร์ชัน 1.0selfไม่ throwค่าเริ่มต้นเป็นไปตามข้อบังคับของเยอรมนีและยังคงได้รับการยอมรับในฝรั่งเศส
FacturXEmbedderOptions::withRelationship() / ::withFilename()stringคืนสำเนาที่ใช้การแทนที่แล้วselfInvalidArgumentException เมื่ออยู่นอกชุดที่ยอมรับความสัมพันธ์: Source, Data, Alternative ชื่อไฟล์รวมถึง zugferd-invoice.xml และ xrechnung.xml
FacturXEmbedderOptions::withDocumentType()string $documentTypeคืนสำเนาที่แทนที่ประเภทเอกสาร XMPselfไม่ throwค่าต่างๆ ไม่ได้ถูกแจงนับเชิงป้องกัน
FacturXContractEmbedder::embed()string $pdfBytes, string $xmlPayload, EmbedderOptions $optionsอะแดปเตอร์ไบต์เข้า-ไบต์ออกบน FacturXEmbedder ผ่านไฟล์ชั่วคราวอายุสั้นstringEInvoiceException โปรไฟล์ XRECHNUNG ถูกปฏิเสธเนื่องจากเป็นของ Enterprise เท่านั้นการนำ EmbedderInterface ไปใช้แบบข้ามระดับ
C2paManifestEmbedder::embed()string $pdfBytes, ManifestStore $storeฝังการซีเรียลไลซ์ไบต์ของ store ที่ตำแหน่งของโปรไฟล์stringC2paException เมื่อการฝังล้มเหลวใดๆอินเทอร์เฟซ SPI ที่ถูกตรึง ไบต์เท่านั้น ไม่มี I/O
C2paManifestEmbedder::extract()string $pdfBytesแจง store ที่ฝังผ่าน JUMBF parser ที่เสริมความแข็งแกร่งManifestStore|nullคลาสย่อยของ C2paException เมื่อมี store อยู่แต่ละเมิดขีดจำกัดการเสริมความแข็งแกร่งnull บ่งบอกการไม่มีอยู่ การไม่มีอยู่ไม่ throw
ManifestStore::fromBoxes() / ::empty()list<JumbfBox> / —สร้าง value object ของ store แบบ immutableselfไม่ 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 ผ่าน parserselfMalformedJumbfException เมื่อ TBox ไม่ใช่ 4 ไบต์พอดี
C2paCapabilityStatus::current() / ::summary()รายงานความสมบูรณ์ของความสามารถ C2PA ปัจจุบันคือ preview-draftself / 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 หนึ่งรายการManifestStoreconstructor throw LogicException เมื่อแฟล็ก preview ปิดอยู่preview รูปแบบ wire ถูกตรึงกับ snapshot ของ draft ไม่มีการส่งออกลายเซ็นการอ้างสิทธิ์

ลายเซ็นจุดเริ่มต้น แบบคำต่อคำ:

public static function default(?LoggerInterface $logger = null): self
public function withStrictUa2(bool $enabled): self
public function isStrictUa2(): bool
public function validate(string $pdfPath): EInvoiceValidationResult
public function embed(
string $sourcePdfPath,
string $xml,
EInvoiceProfile $profile,
string $outputPdfPath,
?FacturXEmbedderOptions $options = null,
): void
public function embed(string $pdfBytes, ManifestStore $store): string
public 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 เป็นความสามารถของ Enterprise
  • C2paManifestEmbedder::extract() แยกแยะการไม่มีอยู่ (null) จากการผิดรูปแบบ (คลาสย่อยของ C2paException ที่ระบุค่าคงที่ที่ถูกละเมิด: โครงสร้างผิดรูปแบบ ระเบิดขนาดหรือจำนวน วงจร offset ความลึกของการซ้อน)
  • การสร้าง ExperimentalC2paEmbedder throw LogicException เว้นแต่แฟล็กสภาพแวดล้อม 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 streamISO 32000-2:2020 §14.13.2สร้าง (/AF, /EF, /Params)
ความสัมพันธ์ของ attachment และกฎคอนเทนเนอร์Factur-X 1.08 §3.1, §6.2สร้าง / ตรวจ (ค่าเริ่มต้น /AFRelationship /Alternative)
manifest store / JUMBF ของ C2PAC2PA 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 อยู่นอกขอบเขต