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

Pro รุ่นความเสถียร: ทดลอง

C2PA preview — การอ้างอิงเชิงลึก

หน้านี้เป็นการอ้างอิงระดับสัญญาสำหรับพื้นผิว C2PA (Content Credentials) preview ใน NextPDF Pro ครอบคลุมสัญลักษณ์สาธารณะห้าตัวใน NextPDF\Pro\Compliance\C2pa: SPI ของ C2paManifestEmbedder, อ็อบเจกต์ค่า ManifestStore, JumbfBoxParser, ตัวบรรยาย C2paCapabilityStatus และ Experimental\ExperimentalC2paEmbedder ที่มีเกต และยังบันทึกเกต Feature::PREVIEW_C2PA_DRAFT กับตัวแปรสภาพแวดล้อมของมัน NEXTPDF_FEATURE_PREVIEW_C2PA_DRAFT

พื้นผิวนี้เป็น experimental และแบ่งออกเป็นสองชั้น จุดเชื่อมที่เสถียร — ManifestStore, C2paManifestEmbedder, JumbfBoxParser — เข้าถึงได้เสมอและนำพาไบต์ของ Manifest Store ทั้งสองทิศทาง การสังเคราะห์ ร่าง manifest อยู่เฉพาะใน ExperimentalC2paEmbedder เท่านั้นและ ปิดโดยค่าเริ่มต้น โปรไฟล์ C2PA-PDF ยังไม่ถูกทำให้เป็นฉบับสมบูรณ์โดยคณะทำงาน รูปแบบ wire ที่สังเคราะห์ถูกตรึงไว้กับ commit ฉบับร่าง ไม่มีการอ้างความสอดคล้องใดๆ ไม่มีเส้นทางการตรวจสอบ และการเปิดแฟล็กพรีวิวไม่สามารถสร้างอย่างใดอย่างหนึ่งขึ้นมาได้ มุมมองเชิงงานอยู่ในหน้าความสามารถ

ความสามารถนี้จัดส่งใน NextPDF Pro (nextpdf/pro) และเปิดใช้งานด้วยซองไลเซนส์ระดับ Pro การปรับใช้งานที่ไม่มีสิทธิ์ดังกล่าวจะไม่โหลดคลาสของความสามารถนี้ เปรียบเทียบรุ่นและรับไลเซนส์

ไลเซนส์เปิดใช้งานพื้นผิวความสอดคล้อง Pro ในภาพรวม พื้นผิว C2PA ภายในยังคงเป็นพรีวิวไม่ว่าจะเป็นไลเซนส์ระดับใด การสังเคราะห์ร่างยังต้องอาศัยเกตกระบวนการที่บันทึกไว้ที่นี่เพิ่มเติม ไลเซนส์ Pro เพียงอย่างเดียวไม่เคยเปิดใช้งานมันเลย

SymbolParametersDefault behaviorReturnsThrows or fails withNotes
C2paManifestEmbedderSPI แบบฝัง/แยกไบต์ล้วน ไม่มี I/O ไม่มีการสังเคราะห์เคลมจุดเชื่อมอินเทอร์เฟซที่ถูกตรึงและเป็นกลางต่อผู้ขาย
C2paManifestEmbedder::embed()string $pdfBytes, ManifestStore $storeฝัง $store->toBytes() ที่ตำแหน่งซึ่งโปรไฟล์ประกาศไว้ Store ที่ว่างเปล่าอาจไป-กลับได้แบบไม่มีผลstring ไบต์ PDF ใหม่C2paException เมื่อการฝังล้มเหลวใดๆ (Store ขนาดเกิน, PDF ไม่ถูกต้อง, ตำแหน่งโปรไฟล์ชนกัน)การนำไปใช้งานไม่เคยเปลี่ยนแปลงหรือเก็บไบต์ต้นทางไว้
C2paManifestEmbedder::extract()string $pdfBytesโพรบตรวจจับต้นทุนต่ำ กรณีไม่มี Store จัดสรรหน่วยความจำแทบไม่มีเลย?ManifestStore (null เมื่อไม่พบ)คลาสย่อยของ C2paException เมื่อมี Store อยู่แต่ละเมิดค่าคงที่การเสริมความแข็งแกร่งStore ที่ไม่เป็น null ได้ผ่านการเสริมความแข็งแกร่งของ JumbfBoxParser มาแล้ว
ManifestStore::fromBoxes()array $boxes (list<JumbfBox>)ห่อรายการกล่องแบบเรียงลำดับที่พาร์เซอร์ตรวจสอบแล้วselfตัวมันเองไม่โยนข้อผิดพลาด การสร้าง JumbfBox ด้วยมือบังคับใช้การเสริมความแข็งแกร่งเดียวกันคอนสตรักเตอร์เป็นแบบ private ลำดับกล่องมีความสำคัญต่อความเท่ากันของการไป-กลับ
ManifestStore::empty()noneStore ที่มีกล่องรากเป็นศูนย์selfไม่โยนข้อผิดพลาดtoBytes() ของ Store ที่ว่างเปล่าคือสตริงว่าง
ManifestStore::isEmpty()noneทดสอบว่ามีกล่องรากเป็นศูนย์หรือไม่boolไม่โยนข้อผิดพลาด
ManifestStore::toBytes()noneต่อการซีเรียลไลซ์กล่องรากเข้าด้วยกันstringไม่โยนข้อผิดพลาดลำดับไบต์นี้คือสิ่งที่ตัวฝังเขียนออกไป
ManifestStore::size()noneความยาวไบต์ของ toBytes()int (>= 0)ไม่โยนข้อผิดพลาด
JumbfBoxParser::__construct()การแทนที่ค่าคงที่สามตัวแบบเลือกได้ค่าคงที่สำหรับการผลิต: 64 MiB ต่อกล่อง, 128 MiB รวม, 4096 ลูกต่อ superboxJumbfBoxParserไม่โยนข้อผิดพลาดค่าคงที่ความลึกถูกตรึงที่ MAX_DEPTH (8) และปรับผ่านคอนสตรักเตอร์ไม่ได้
JumbfBoxParser::parse()string $bytesตรวจสอบและสร้างกล่องรากขึ้นมา อินพุตว่างให้ผลเป็น []list<JumbfBox>JumbfBombException, JumbfCycleDetectedException, JumbfDepthExceededException, MalformedJumbfExceptionไร้สถานะ ไม่เคยคืนกราฟบางส่วน การเรียกพร้อมกันบนอินสแตนซ์เดียวปลอดภัย
C2paCapabilityStatus::__construct()ฟิลด์ readonly ที่มีชื่อหกตัวสร้างอินสแตนซ์ตัวบรรยายตามอำเภอใจC2paCapabilityStatusไม่โยนข้อผิดพลาดcurrent() คือคอนสตรักเตอร์ตามแบบแผน
C2paCapabilityStatus::current()noneอ่านเกตแบบสด ฮาร์ดโค้ดบูลีนของการเคลมC2paCapabilityStatusไม่โยนข้อผิดพลาดgenerallyAvailable และ conformanceClaimed เป็น false เสมอ
C2paCapabilityStatus::summary()noneข้อความสถานะบรรทัดเดียวstringไม่โยนข้อผิดพลาดเรียบเรียงให้ไม่นำพาการอ้าง GA หรือความสอดคล้องใดๆ
Featureenum อิงสตริง 1 เคสเคสเดียว PREVIEW_C2PA_DRAFT ค่าคงที่ ENV_PREVIEW_C2PA_DRAFTเคส enumไม่มีอะไรเมื่อเข้าถึงเคสเกตความเสถียรแบบมีขอบเขต แยกจากสิทธิ์ไลเซนส์
Feature::isEnabled()noneอ่าน getenv() แบบสด เปรียบเทียบอย่างเข้มงวดกับสตริง 1boolไม่โยนข้อผิดพลาดตัวแปรที่ไม่มีอยู่หรือค่าอื่นใด รวมถึง 0, true, yes ถือว่าปิด
ExperimentalC2paEmbedder::__construct()noneตรวจเกตแบบปิดเมื่อพลาดตอนสร้างExperimentalC2paEmbedderLogicException เมื่อ Feature::PREVIEW_C2PA_DRAFT ปิดไม่มีการถอยกลับแบบเงียบ
ExperimentalC2paEmbedder::buildManifestStore()string $sourceBytes, string $producer (ไม่ว่าง)สร้าง Store รูปทรงร่างที่ผูก $sourceBytes ผ่าน SHA-256ManifestStore\JsonException เมื่อเข้ารหัสเพย์โหลดล้มเหลว คลาสย่อยของ C2paException จากการสร้างกล่องละเว้นกล่อง c2cs Claim Signature เอาต์พุตไม่มีลายเซ็นโดยการสร้าง
interface C2paManifestEmbedder
public function embed(string $pdfBytes, ManifestStore $store): string;
public function extract(string $pdfBytes): ?ManifestStore;
final readonly class ManifestStore
public static function fromBoxes(array $boxes): self
public static function empty(): self
public function isEmpty(): bool
public function toBytes(): string
public function size(): int
final class JumbfBoxParser
public const int MAX_DEPTH = 8;
public const int MAX_PER_BOX_BYTES = 64 * 1024 * 1024;
public const int MAX_TOTAL_BYTES = 128 * 1024 * 1024;
public const int MAX_CHILDREN_PER_SUPERBOX = 4096;
public const array SUPERBOX_TBOXES = ['jumb', 'c2pa', 'c2ma', 'c2as', 'c2cl', 'c2cs', 'c2vc'];
public function __construct(
private readonly int $maxPerBoxBytes = self::MAX_PER_BOX_BYTES,
private readonly int $maxTotalBytes = self::MAX_TOTAL_BYTES,
private readonly int $maxChildrenPerSuperbox = self::MAX_CHILDREN_PER_SUPERBOX,
)
public function parse(string $bytes): array
final readonly class C2paCapabilityStatus
public const string MATURITY_PREVIEW_DRAFT = 'preview-draft';
public function __construct(
public bool $previewEnabled,
public bool $generallyAvailable,
public bool $conformanceClaimed,
public string $maturity,
public string $specPin,
public string $envGate,
)
public static function current(): self
public function summary(): string
enum Feature: string
case PREVIEW_C2PA_DRAFT = 'preview_c2pa_draft';
public const string ENV_PREVIEW_C2PA_DRAFT = 'NEXTPDF_FEATURE_PREVIEW_C2PA_DRAFT';
public function isEnabled(): bool
final class ExperimentalC2paEmbedder
public const string SPEC_PIN_SHA = '4e2afed8f3ace20d41317e2e386c9340d2959d55';
public const string SPEC_PIN_DATE = '2026-04-26';
public function __construct()
public function buildManifestStore(string $sourceBytes, string $producer): ManifestStore
  • การแบ่งสองชั้น จุดเชื่อมที่เสถียร (ManifestStore, C2paManifestEmbedder, JumbfBoxParser) เข้าถึงได้เสมอ การสังเคราะห์ร่างมีอยู่เฉพาะใน NextPDF\Pro\Compliance\C2pa\Experimental\ExperimentalC2paEmbedder หลังเกตที่ปิดโดยค่าเริ่มต้น การแยกและการนำพาไบต์ไม่เคยต้องอาศัยเกต การสังเคราะห์ต้องอาศัยเสมอ
  • ค่าคงที่ของจุดเชื่อม สัญญา C2paManifestEmbedder เป็นแบบไบต์ล้วน: ไม่มีอ็อบเจกต์ PDF ในหน่วยความจำข้ามจุดเชื่อม การนำไปใช้งานไม่ทำ I/O เครือข่ายหรือระบบไฟล์ และจุดเชื่อมไม่เคยประกอบข้อยืนยันเคลมด้วยตัวเอง extract() คืน null เพื่อบ่งบอกการไม่มีอยู่ มันไม่เคยโยนข้อผิดพลาดสำหรับการไม่มีอยู่
  • ความหมายของ Store ManifestStore เป็นรายการเรียงลำดับที่เปลี่ยนแปลงไม่ได้ของอินสแตนซ์ JumbfBox ราก ตามโมเดล Manifest Store ของ C2PA 2.1 §11.1.1: หนึ่งคอนเทนเนอร์ JUMBF ที่รวม manifest หนึ่งรายการหรือมากกว่าเข้าด้วยกัน อ้างอิงได้ด้วย URI มันไม่เปิดเผยตัวเข้าถึงระดับเคลม ลำดับกล่องถูกรักษาไว้และมีความสำคัญต่อความเท่ากันของการไป-กลับ
  • ค่าคงที่การเสริมความแข็งแกร่ง JumbfBoxParser ปฏิเสธอินพุตที่เกินค่าคงที่ใดๆอย่างไม่มีเงื่อนไข: ขนาดต่อกล่องเกิน 64 MiB, store สะสมเกิน 128 MiB, การซ้อนลึกกว่า 8 ระดับ หรือลูกมากกว่า 4096 ตัวในหนึ่ง superbox ไม่มีแฟล็กนโยบายที่ปิดค่าคงที่เหล่านี้ได้ ค่าคงที่ที่เข้มงวดกว่าฉีดผ่านคอนสตรักเตอร์ได้สำหรับกระบวนการที่มีหน่วยความจำจำกัด
  • การปฏิเสธเชิงโครงสร้าง พาร์เซอร์ยังปฏิเสธแบบปิดเมื่อพลาดด้วย: LBox = 0 (BMFF ถึง EOF), LBox = 1 (XLBox ความยาว 64 บิต), LBox ที่เล็กกว่าเฮดเดอร์ 8 ไบต์, การตัดขาดเลยอินพุตที่เหลือ, ไบต์ TBox ที่อยู่นอก ASCII ที่พิมพ์ได้ (0x20–0x7E), การเข้าออฟเซ็ตซ้ำ (วงจร) และการปูกระเบื้องลูกที่ไม่พอดีของเพย์โหลด superbox มันไม่เคยคืนกราฟที่สร้างไม่สมบูรณ์
  • การกำหนดเส้นทาง superbox ค่า TBox ใน SUPERBOX_TBOXES พาร์สแบบเรียกซ้ำเป็นลำดับลูก TBox อื่นทุกตัวเป็น leaf ที่มีเพย์โหลดทึบแสง cbor ถูกจัดการเป็น leaf โดยเจตนาเพื่อความปลอดภัยของพาร์เซอร์ ชั้นบนพาร์สเพย์โหลดของมันใหม่เมื่อจำเป็น
  • เกตกระบวนการ Feature::PREVIEW_C2PA_DRAFT ปิดโดยค่าเริ่มต้น isEnabled() คืน true เฉพาะเมื่อ NEXTPDF_FEATURE_PREVIEW_C2PA_DRAFT เท่ากับสตริง 1 พอดีเท่านั้น การอ่านเป็นแบบสดในทุกการเรียก ไม่มีอะไรถูกจดจำไว้
  • การสร้างแบบปิดเมื่อพลาด new ExperimentalC2paEmbedder() โยน LogicException ขณะที่เกตปิด ข้อความระบุชื่อแฟล็ก ตัวแปรสภาพแวดล้อม และ SHA กับวันที่ของร่างที่ตรึงไว้ ผู้เรียกไม่สามารถเข้าถึงการสังเคราะห์ร่างโดยบังเอิญได้
  • รูปทรงการสังเคราะห์ buildManifestStore() ปล่อย superbox c2pa ที่บรรจุ manifest c2ma หนึ่งรายการ ซึ่งถือ assertion store c2as (assertion c2pa.hash.data หนึ่งรายการ) และเคลม c2cl assertion บันทึก hash assertion แบบ SHA-256 เหนือ $sourceBytes เพราะกล่อง c2cs Claim Signature ถูกละเว้นและเอาต์พุตไม่มีลายเซ็น สิ่งนี้จึงไม่ใช่ C2PA hard binding หรือคำตัดสินเรื่องที่มา — มันเพียงเป็นไปตามรูปทรงเชิงโครงสร้างที่ §9.1 อธิบายไว้ เพย์โหลดของ Description-box นำพา type UUID, toggle 0x03 และ label UTF-8 ที่จบด้วย null ตาม C2PA 2.1 §11.1.4.1.1–11.1.4.1.2
  • ไม่มี Claim Signature กล่อง c2cs — ตาม C2PA 2.1 §11.1.4.4 เป็นกล่องเนื้อหา CBOR เดี่ยวที่มี label c2pa.signature — ถูกละเว้นจาก Store ที่สังเคราะห์โดยเจตนา เอาต์พุตไม่มีลายเซ็นโดยการสร้าง นี่คือส่วนโปรไฟล์ที่ถูกตัดสินว่ามีแนวโน้มมากที่สุดที่จะเลื่อนไหลก่อนการตรึงของคณะทำงาน
  • การตรึงร่าง ไม่มีการรับประกัน BC รูปแบบ wire ที่สังเคราะห์ถูกตรึงกับ SPEC_PIN_SHA (4e2afed8… ลงวันที่ 2026-04-26) ของ c2pa-org/specifications มันเปลี่ยนได้โดยไม่แจ้งล่วงหน้าและไม่มีการรับประกันความเข้ากันได้ย้อนหลัง
  • ค่าคงที่แห่งความซื่อตรง C2paCapabilityStatus::current() ฮาร์ดโค้ด generallyAvailable และ conformanceClaimed ให้เป็น false ไม่มีการกำหนดค่าหรือแฟล็กสภาพแวดล้อมใดที่พลิกบูลีนทั้งสอง มีเพียง previewEnabled ที่สะท้อนเกต maturity คือโทเคนที่ไม่อ้างเคลม preview-draft
  • การตั้งค่าตัวแปรเกตเป็น 0, true, yes, on หรือสตริงว่าง จะทำให้เกตยัง ปิด อยู่ มีเพียงสตริง 1 พอดีเท่านั้นที่เปิดใช้งานมัน
  • การเปลี่ยนแปลงด้วย putenv() มีผลในการเรียก isEnabled() ครั้งถัดไปเพราะการอ่านเป็นแบบสด เกตที่สลับกลางกระบวนการจะถูกสังเกตทันที
  • extract() แยกแยะผลลัพธ์สองแบบ: null เมื่อไม่มี Store อยู่ (ต้นทุนต่ำ ไม่มีข้อผิดพลาด) และการโยนคลาสย่อยของ C2paException เมื่อมี Store อยู่แต่เป็นปฏิปักษ์หรือผิดรูป การไม่มีอยู่ไม่เคยเป็นข้อผิดพลาด การมีอยู่บวกความผิดรูปเป็นข้อผิดพลาดเสมอ
  • JumbfBoxParser::parse('') คืนรายการว่าง ManifestStore ที่ว่างเปล่าแต่มีอยู่จะไป-กลับกลับมาเป็นตัวมันเอง จุดเชื่อมไม่ยุบมันให้เป็น null
  • การฝัง Store ที่ว่างเปล่าอาจคืนอินพุตแบบไม่เปลี่ยนแปลง สัญญาจุดเชื่อมอนุญาตการไม่มีผลนี้ได้แต่ไม่ได้บังคับ
  • กราฟ JumbfBox ที่สร้างด้วยมือรันการเสริมความแข็งแกร่งเดียวกันตอนสร้าง: การตรวจความยาว TBox และ ASCII, ค่าคงที่ความลึก, ค่าคงที่ความลึกของลูก, กฎการเลือกอย่างใดอย่างหนึ่งระหว่างเพย์โหลดหรือลูก และค่าคงที่ขนาดต่อกล่อง bomb ที่สร้างด้วยมือล้มเหลวตอนสร้าง ไม่ใช่ตอนฝัง
  • ทุกข้อผิดพลาดของพาร์เซอร์นำพาฟิลด์เชิงโครงสร้าง — capKind/observed/cap, offset หรือ kind — เพื่อให้ telemetry ไม่ต้องขูดสตริงข้อความ คลาสย่อยทั้งหมดขยายจาก C2paException (ซึ่งเองเป็น RuntimeException) อันเป็นชนิดจับแบบครอบคลุม
  • docblock ของพาร์เซอร์ห้ามการกลืนข้อผิดพลาดเหล่านี้อย่างเงียบๆ ผู้บริโภคต้องเปิดเผยมันหรือรีแมปมันด้วยเจตนา
  • buildManifestStore() เข้ารหัสเพย์โหลด JSON ด้วย JSON_THROW_ON_ERROR สตริง $producer ที่ไม่ใช่ UTF-8 ที่ถูกต้องจะล้มเหลวด้วย \JsonException ก่อนที่จะมีการสร้างกล่องใดๆ
  • ผลลัพธ์ extract() ที่มีรูปแบบถูกต้องเป็นเพียงคำแถลงเชิงโครงสร้างเท่านั้น ไม่มีการตรวจสอบเคลม ไม่มีการยืนยันลายเซ็น และไม่มีการประเมินความน่าเชื่อถือที่ใดในพื้นผิวนี้ การรับรู้ไม่ใช่คำตัดสินเรื่องที่มา
  • ไม่มีคีย์ลงลายเซ็น ใบรับรอง หรือโครงสร้าง COSE ที่ถูกประมวลผลโดยพื้นผิวนี้ การดำเนินการเข้ารหัสเพียงอย่างเดียวคือ SHA-256 content hash ภายในเส้นทางการสังเคราะห์ที่มีเกต
ClaimStandardClause
Manifest ซีเรียลไลซ์เป็นหนึ่ง JUMBF store ที่ถือหลาย manifest อ้างอิงได้ด้วย URIC2PA 2.1§11.1.1 (p63.b)
Label ของ Description-box เป็น UTF-8 ที่จบด้วย null พร้อมช่วงที่ถูกยกเว้น toggle ถูกกำหนดสำหรับ Description box ทั้งหมดC2PA 2.1§11.1.4.1.1–11.1.4.1.2 (p63.a)
กล่อง Claim Signature มี label c2pa.signature ชนิด c2cs และถือกล่องเนื้อหา CBOR เดี่ยวC2PA 2.1§11.1.4.4 (p63.c)
hard binding ผูก manifest เข้ากับ asset ของมันเชิงวิทยาการเข้ารหัสและเปิดเผยการดัดแปลง — hash assertion ที่ไม่มีลายเซ็นของพรีวิวไม่ผ่านมาตรฐานนี้C2PA 2.1§9.1 (p57)

ทุก clause ถูกถอดความ NextPDF ไม่ได้ทำซ้ำข้อความเชิงบรรทัดฐาน NextPDF ไม่ถือการรับรองใดและไม่ให้การรับรองใด คำแถลงข้างต้นเป็นคำแถลงการจัดวางเชิงโครงสร้างเกี่ยวกับเลย์เอาต์กล่อง label และ binding — มันไม่ใช่ผลการทดสอบความสอดคล้อง ไม่ใช่การรับรองโดยบุคคลที่สาม และไม่ใช่การอ้างความสอดคล้อง C2PA หรือ ISO โปรไฟล์ C2PA-PDF ยังไม่เป็นฉบับสมบูรณ์ รูปแบบ wire ที่สังเคราะห์ติดตาม commit ฉบับร่างที่ตรึงไว้ C2paCapabilityStatus เข้ารหัสท่าทีนี้ไว้ในโค้ด: generallyAvailable และ conformanceClaimed เป็น false ในทุกการกำหนดค่า เอาต์พุตจากพื้นผิวนี้ไม่ใช่ Content Credential ที่ตรวจสอบได้ และไม่มีเส้นทางการตรวจสอบใน NextPDF

  • ไวยากรณ์กล่อง JUMBF ที่พาร์เซอร์นำมาใช้ (LBox 4 ไบต์ big-endian, TBox 4 ไบต์ ASCII, เพย์โหลด superbox ซ้อนกล่องลูก) เป็นไปตาม ISO 19566-5 มาตรฐานนั้นอยู่นอกคลังที่อ้างถึง ดังนั้นพฤติกรรมของพาร์เซอร์จึงอิงจากซอร์สของผลิตภัณฑ์ ไม่ใช่การอ้างสเปก

  • เก็บเกตให้ปิดในการผลิต การสังเคราะห์ร่างไม่เพิ่มความสามารถที่คงทน ไบต์ที่ปล่อยออกมาเป็นแบบชั่วคราวและควรถูกฝังใหม่เมื่ออะแดปเตอร์ที่เสถียรจัดส่ง

  • ยืนยัน ExperimentalC2paEmbedder::SPEC_PIN_SHA กับ commit ฉบับร่างที่ไปป์ไลน์ของคุณคาดหวัง รัน composer c2pa:draft-status ใน CI (exit 0 สด, 1 เตือนเบา, 2 ล้มเหลวหนัก) เพื่อตรวจจับการตรึงที่ล้าสมัย

  • ปฏิบัติต่อ C2paCapabilityStatus::current() เป็นแหล่งความจริงเดียวเมื่อแสดงสถานะ C2PA ในเครื่องมือหรือ UI อย่าแถลงบูลีนของมันซ้ำด้วยมือ summary() ปลอดภัยสำหรับ log และ endpoint สถานะ

  • จับ C2paException เป็นชนิดครอบคลุมเมื่อบริโภค extract() หรือ parse() แมปคลาสย่อยทั้งสี่เป็นตัวนับ telemetry ที่แยกกันโดยใช้ฟิลด์เชิงโครงสร้างของพวกมัน

  • ฉีดค่าคงที่ที่เข้มงวดกว่าผ่านคอนสตรักเตอร์ JumbfBoxParser สำหรับกระบวนการตรวจสอบที่มีหน่วยความจำจำกัด ค่าเริ่มต้นเป็นค่าคงที่การผลิตที่เผื่อไว้กว้าง

  • C2paCapabilityStatus::__construct() เป็นแบบ public ดังนั้นอินสแตนซ์ที่สร้างด้วยมือสามารถนำพาบูลีนตามอำเภอใจได้ อินสแตนซ์เช่นนั้นเป็นเพียงอ็อบเจกต์ค่า มันไม่เปลี่ยนพฤติกรรมใด

หน้านี้บันทึกเฉพาะพฤติกรรมที่สังเกตได้จากภายนอกและพื้นผิว API สาธารณะที่รองรับเท่านั้น เส้นทาง namespace ภายใน คลาสตัวช่วย ตารางกลไก ชื่อไฟล์ runbook และคำนำหน้า ticket อยู่นอกขอบเขต