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

PDF 2.0 baseline: ข้อกำหนดของ ISO 32000-2 ที่ NextPDF นำมาใช้

คำชี้แจงขอบเขต NextPDF นำข้อกำหนดที่อ้างถึงมาใช้งาน ส่วนความสอดคล้อง ตาม ISO 32000-2 นั้นไม่ได้รับการยืนยันในฐานะข้อกล่าวอ้างที่ครอบคลุมทั้งหมด

ISO 32000-2:2020 เป็นมาตรฐานพื้นฐานของ PDF 2.0 โดยค่าเริ่มต้น NextPDF Core สร้างผลลัพธ์เป็น PDF 2.0 แบบไม่มีข้อจำกัด (ConformanceMode::Plain) โดยประกอบด้วยส่วนหัว %PDF-2.0 เอกสาร catalog โครงสร้างการอ้างอิงไขว้ และ trailer ที่สอดคล้องตามมาตรฐาน หน้านี้บันทึกข้อกำหนดพื้นฐานที่ NextPDF นำมาใช้งาน พร้อมขอบเขตที่ระบุไว้อย่างชัดเจน ไลบรารีนำข้อกำหนดที่อ้างถึงมาใช้งาน แต่ไม่กล่าวอ้างแบบครอบคลุมทั้งหมดว่า “สอดคล้องกับ ISO 32000-2 อย่างสมบูรณ์” ไฟล์ที่สอดคล้องตามมาตรฐานคือไฟล์ที่โปรแกรมอ่านซึ่งสอดคล้องตามมาตรฐานสามารถประมวลผลได้ภายใต้มาตรฐานนั้น การตัดสินนี้เป็นหน้าที่ของเครื่องมือตรวจสอบ ไม่ใช่แฟล็กของไลบรารี

Terminal window
composer require nextpdf/core:^3

Core สร้างผลลัพธ์ PDF 2.0 baseline เป็นค่าเริ่มต้น จึงไม่จำเป็นต้องเรียกใช้โปรไฟล์ใดเพิ่มเติม เพราะ ConformanceMode::Plain เป็นตัวจำแนกค่าเริ่มต้น โปรไฟล์ PDF/A-4, PDF/UA-2, PDF/X และ ZUGFeRD เป็นชุดย่อยที่มีข้อจำกัดซึ่งวางซ้อนอยู่บน baseline นี้

เอกสาร NextPDF ทุกฉบับเริ่มต้นเป็นไฟล์ PDF 2.0 ก่อนมีการใช้โปรไฟล์ใดๆ ตัวเขียนเป็นไปตามข้อกำหนดเชิงโครงสร้างที่ ISO 32000-2 กำหนดไว้สำหรับไฟล์ที่สอดคล้องตามมาตรฐาน:

  • เอกสาร catalog — §7.7.2: ออบเจ็กต์รากที่ /Root ของ trailer อ้างถึง และมีอยู่ในผลลัพธ์ทุกฉบับ
  • โครงสร้างการอ้างอิงไขว้ — §7.5.8: ตารางหรือสตรีมการอ้างอิงไขว้ที่ระบุตำแหน่งของออบเจ็กต์ทุกตัว
  • Trailer — §7.5.5: ดิกชันนารี trailer ที่ไฟล์ซึ่งสอดคล้องตามมาตรฐานต้องมี รวมถึงตัวระบุ /ID ของไฟล์ /ID มีค่าไม่ซ้ำกันต่อไฟล์ และจะถูกตัดออกในขั้นตอนการนอร์มอลไลซ์เพื่อใช้เปรียบเทียบ ด้วยเหตุนี้ผลลัพธ์ส่วนใหญ่ที่มีหลายออบเจ็กต์จึงใช้ reproducibility_profile: structural ไม่ใช่แบบ bitwise
  • โครงสร้างเชิงตรรกะ — §14.7.2: เมื่อเปิดใช้งานโหมด tagged จะมี baseline ของ StructTreeRoot ที่รองรับโปรไฟล์ PDF/UA-2
  • ส่วนขยายเวอร์ชัน — §7.12: เมื่อมีการประกาศส่วนขยายของนักพัฒนา จะใช้กลไกดิกชันนารี Extensions / คำนำหน้าของนักพัฒนา

NextPDF นำข้อกำหนดเหล่านี้มาใช้งาน แต่ไม่ได้ดำเนินการประเมินความสอดคล้องตาม ISO 32000-2 อย่างครบถ้วน ให้ใช้เครื่องมือตรวจสอบความถูกต้องภายนอก เช่น Arlington grammar checker หรือ veraPDF เพื่อการตัดสินดังกล่าว NextPDF\Compliance มีการตรวจสอบไขว้ระดับ byte-stream (ArlingtonValidator) ที่ช่วยเผยให้เห็นความไม่สอดคล้องเชิงโครงสร้าง เครื่องมือเหล่านี้ช่วยในการตรวจพิสูจน์ แต่ไม่ใช่ใบรับรอง

สัญลักษณ์ผลที่เกิดขึ้น
ConformanceMode::Plainค่าเริ่มต้น — ผลลัพธ์ PDF 2.0 แบบไม่มีข้อจำกัด
ConformanceMode::requiresPdf17(): boolFalse สำหรับโหมด PDF 2.0 โดยตัวเขียนจะสร้าง %PDF-2.0 เป็นส่วนหัว
NextPDF\Compliance\Validator\ArlingtonValidatorการตรวจสอบไขว้เชิงไวยากรณ์เทียบกับ Arlington PDF model (ช่วยในการตรวจพิสูจน์)
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$out = getenv('NEXTPDF_COOKBOOK_OUTPUT') ?: __DIR__ . '/baseline.pdf';
$doc = Document::createStandalone(); // ConformanceMode::Plain — PDF 2.0
$doc->setTitle('PDF 2.0 baseline');
$doc->writeHtml('<h1>Hello PDF 2.0</h1><p>Unconstrained baseline output.</p>');
$doc->save($out);
echo "Wrote {$out} (%PDF-2.0). Validate structure with an external checker.\n";

สำหรับการใช้งานจริง ให้รันเครื่องมือตรวจสอบความถูกต้องเชิงโครงสร้างภายนอก (Arlington / veraPDF) ในกระบวนการ continuous integration (CI) กับผลลัพธ์ที่เป็นตัวแทน และใช้รายงานของเครื่องมือเป็นเกณฑ์การผ่าน ไลบรารีสร้างโครงสร้าง ส่วนเครื่องมือตรวจสอบเป็นผู้ตัดสินว่าโครงสร้างนั้นสอดคล้องตามมาตรฐานหรือไม่ ไลบรารีไม่กล่าวอ้างความสอดคล้องแบบครอบคลุมทั้งหมด

  • /ID มีค่าไม่ซ้ำกันต่อไฟล์ ผลลัพธ์ baseline ที่มี /ID, /CreationDate ใน trailer หรือคำนำหน้าของชุดย่อยฟอนต์ จะไม่เสถียรที่ระดับ byte ให้เปรียบเทียบด้วยโปรไฟล์เชิงโครงสร้าง (qpdf-normalize) ไม่ใช่ sha256 แบบดิบ
  • Plain ≠ การจัดเก็บถาวร ConformanceMode::Plain ไม่ใช่ PDF/A หากไม่มี OutputIntent หรือเครื่องหมาย pdfaid อย่าถือว่าเป็นรูปแบบสำหรับการจัดเก็บถาวร
  • การนำมาใช้งาน ≠ สอดคล้องอย่างสมบูรณ์ หน้านี้แสดงรายการข้อกำหนดที่ NextPDF นำมาใช้งาน แต่ไม่ได้ระบุว่าทุกข้อกำหนดของ ISO 32000-2 ได้รับการปฏิบัติตามครบถ้วนสำหรับเอกสารทุกฉบับ นั่นเป็นคำวินิจฉัยของเครื่องมือตรวจสอบที่พิจารณาเป็นรายเอกสาร
  • ส่วนขยายมีการกำหนด namespace ส่วนขยายของนักพัฒนาใช้ดิกชันนารี Extensions ตาม §7.12 พร้อมคำนำหน้าที่ลงทะเบียนไว้ คีย์ส่วนตัวที่ไม่มีคำนำหน้าถือเป็นการเบี่ยงเบนจาก baseline

การสร้างผลลัพธ์ baseline เป็นเส้นทางหลักของเอนจิน งบประมาณคือเวลา wall ≤ 1500 ms และหน่วยความจำสูงสุด ≤ 64 MB สำหรับเอกสารทั่วไป ตัวเขียน baseline รองรับ backport matrix (PHP 8.1–8.4)

ผลลัพธ์ PDF 2.0 baseline ไม่มีการเข้ารหัสลับหรือลายเซ็น เว้นแต่จะเพิ่มเข้าไปอย่างชัดเจน การเข้ารหัสลับช่วยรักษาความลับของข้อมูลและมีคู่มือแยกต่างหาก บิตสิทธิ์ตาม ISO ทำงานโดยอาศัยความร่วมมือของโปรแกรมอ่าน ไม่ใช่การควบคุมการเข้าถึง baseline ไม่รับประกันด้านความปลอดภัย

ข้อกล่าวอ้างมาตรฐานข้อกำหนดตัวระบุอ้างอิง (reference_id)
ไฟล์ PDF 2.0 ที่สอดคล้องตามมาตรฐานต้องมี trailer / โครงสร้างไฟล์ที่สอดคล้องตามมาตรฐานISO 32000-2§7.5.5
ออบเจ็กต์ทุกตัวสามารถระบุตำแหน่งได้ผ่านตารางหรือสตรีมการอ้างอิงไขว้ISO 32000-2§7.5.8
ไฟล์มีเอกสาร catalog เป็นออบเจ็กต์รากISO 32000-2§7.7.2
มีการอธิบายความสอดคล้องตามมาตรฐานในแง่ของตัวเขียนและโปรแกรมอ่านที่สอดคล้องตามมาตรฐานISO 32000-2§7.2
ส่วนขยายเวอร์ชันใช้ดิกชันนารี Extensions / คำนำหน้าของนักพัฒนาISO 32000-2§7.12
ผลลัพธ์แบบ tagged สร้างต่อยอดจาก baseline โครงสร้างเชิงตรรกะของ ISO 32000-2ISO 32000-2§14.7.2

การอ้างอิงเป็นตัวชี้แบบ clause-id + reference_id ไปยัง verification corpus ไม่มีการคัดลอกเนื้อหาของมาตรฐานมาแสดงซ้ำ NextPDF สรุปข้อกำหนดด้วยถ้อยคำของตนเอง