การแก้ไขปัญหา: การตรวจสอบ PDF/A และ PDF/UA ไม่ผ่าน
รายการเหล่านี้ครอบคลุมความล้มเหลวที่เอนจินรายงานขณะรักษาเอกสารให้อยู่ภายในโปรไฟล์ Portable Document Format/Archive (PDF/A) หรือ Portable Document Format/Universal Accessibility (PDF/UA) หมายเลขข้อด้านล่างมาจากซอร์สโค้ดของเอนจินและข้อความข้อยกเว้น หน้านี้ถอดความและสรุปความหมายของข้อเหล่านั้น เอนจินรายงานความล้มเหลวของโปรไฟล์ที่ตรวจพบ แต่ไม่ได้รับรองความสอดคล้องของเอกสาร ให้ใช้ตัวตรวจสอบภายนอกที่มีชุดกฎของตนเองเพื่อให้ได้คำตัดสินความสอดคล้องที่ถือเป็นทางการ
รายการ: การเข้ารหัสลับถูกปฏิเสธภายใต้ PDF/A
หัวข้อที่มีชื่อว่า “รายการ: การเข้ารหัสลับถูกปฏิเสธภายใต้ PDF/A”- อาการ
NextPDF\Security\Exception\IncompatiblePdfAModeExceptionพร้อมข้อความที่ระบุว่าห้ามดำเนินการเข้ารหัสลับในโหมด PDF/A - สาเหตุที่เป็นไปได้ ไปป์ไลน์เปิดใช้งานโหมด PDF/A และร้องขอการเข้ารหัสลับ เอนจินอ้างถึง International Organization for Standardization (ISO) 19005-{1,2,3,4} §6.1.3: คีย์
Encryptต้องไม่ปรากฏในเทรลเลอร์ของไฟล์ PDF/A เอนจินจึงปฏิเสธการใช้งานร่วมกันนี้โดยเด็ดขาด ไม่ว่าลำดับการเรียกจะเป็นอย่างไร - หลักฐาน / การวินิจฉัย
getContext()คืนค่าpdfa_modeและencryption_operationการทดสอบเส้นทางความล้มเหลวtests/SecurityScenarios/PdfAEncryptionRefusalTest.phpยืนยันว่าการปฏิเสธจะเกิดขึ้น ไม่ว่าจะเปิดใช้งาน PDF/A ก่อนหรือหลังการเรียกการเข้ารหัสลับ - วิธีแก้ไข
- ตัดสินใจว่าเอกสารต้องการอะไร: ความสอดคล้องสำหรับการจัดเก็บถาวรหรือการเข้ารหัสลับ
- สำหรับเอกสารจัดเก็บถาวร ให้นำการเรียกการเข้ารหัสลับออก
- สำหรับเอกสารที่เข้ารหัสลับ ให้นำการเรียกเปิดใช้งาน PDF/A ออก
- เรียกใช้ไปป์ไลน์อีกครั้ง
- ที่เกี่ยวข้อง การเข้ารหัสลับและสิทธิ์
รายการ: ตัวกรองรูปภาพเป็นสิ่งต้องห้ามภายใต้ PDF/A-1
หัวข้อที่มีชื่อว่า “รายการ: ตัวกรองรูปภาพเป็นสิ่งต้องห้ามภายใต้ PDF/A-1”- อาการ
Pdf14FeatureRejectedExceptionเกิดขึ้นระหว่างการนำเข้ารูปภาพ พร้อมข้อความที่ระบุชื่อ/JPXDecodeหรือ/JBIG2Decodeและข้อISO 19005-1:2005 §6.1.13 - สาเหตุที่เป็นไปได้ บิลด์ PDF/A-1 นำเข้ารูปภาพที่ใช้ตัวกรองซึ่งเริ่มมีหลังจาก PDF 1.4 PDF/A-1 มุ่งไปที่ชุดคุณลักษณะของ PDF 1.4 ดังนั้น
PdfA1FeatureGuardจึงปฏิเสธ Joint Photographic Experts Group (JPEG) 2000 (/JPXDecode) และ JBIG2 (/JBIG2Decode) - หลักฐาน / การวินิจฉัย
src/Writer/PdfA1FeatureGuard.phpมีรายการตัวกรองต้องห้ามและแจ้งข้อที่อ้างถึง การ์ดจะปฏิเสธตัวกรองเหล่านี้เฉพาะภายใต้โปรไฟล์ PDF/A-1 เท่านั้น โปรไฟล์ PDF/A-2 PDF/A-3 และ PDF 2.0 อนุญาตให้ใช้ได้ - วิธีแก้ไข
- เข้ารหัสรูปภาพต้นฉบับใหม่โดยไม่ใช้ JPEG 2000 หรือ JBIG2 ตัวอย่างเช่น บันทึกใหม่เป็น baseline JPEG หรือรูปภาพที่บีบอัดด้วย Flate
- หรือเลือกเป้าหมายเป็น PDF/A-2 หรือ PDF/A-3 ซึ่งอนุญาตให้ใช้ตัวกรองเหล่านั้น
- เรียกใช้บิลด์อีกครั้ง
- ที่เกี่ยวข้อง เอกสารอ้างอิงความสอดคล้อง
รายการ: ฟอนต์ไม่ได้ฝังภายใต้ PDF/A
หัวข้อที่มีชื่อว่า “รายการ: ฟอนต์ไม่ได้ฝังภายใต้ PDF/A”- อาการ บิลด์ PDF/A ล้มเหลวในขั้นตรวจสอบฟอนต์ หรือตัวตรวจสอบภายนอกรายงานว่ามีฟอนต์ที่ไม่ได้ฝัง
- สาเหตุที่เป็นไปได้ มีการวาดกลิฟด้วยฟอนต์ที่ไม่ได้ฝังโปรแกรมฟอนต์ไว้ สัญญาของตัวจัดการ PDF/A ระบุว่าทุกฟอนต์ต้องฝัง และไม่อนุญาตให้ใช้ฟอนต์ standard-14 โดยไม่ฝัง
- หลักฐาน / การวินิจฉัย
src/Contracts/PdfAManagerInterface.phpประกาศvalidateFont(string $fontName, bool $isEmbedded, array $cmapForward)และบันทึกกฎไว้ว่า: ทุกฟอนต์ต้องฝัง และไม่อนุญาตให้ใช้ฟอนต์ standard 14 โดยไม่ฝัง การบังคับใช้จริงมาพร้อมกับnextpdf/pro - วิธีแก้ไข
- ระบุฟอนต์ที่ถูกรายงานว่าไม่ได้ฝัง
- กำหนดค่าฟอนต์นั้นด้วยไฟล์โปรแกรมที่ฝังได้ แทนการพึ่งพาฟอนต์ standard-14 ที่มีในตัว
- สำหรับการทำงานร่วมกันของการแทนที่ Base 14 ให้อ่านรายการ fonts-and-tagging
- เรียกใช้บิลด์อีกครั้งและตรวจสอบใหม่
- ที่เกี่ยวข้อง ฟอนต์และการกำกับโครงสร้าง
รายการ: มี JavaScript อยู่และการตรวจสอบ PDF/A ล้มเหลว
หัวข้อที่มีชื่อว่า “รายการ: มี JavaScript อยู่และการตรวจสอบ PDF/A ล้มเหลว”- อาการ บิลด์ PDF/A ล้มเหลวในขั้นตรวจสอบ JavaScript หรือตัวตรวจสอบภายนอกรายงานแอ็กชัน JavaScript
- สาเหตุที่เป็นไปได้ เอกสารหรือฟิลด์ฟอร์มมีแอ็กชัน JavaScript สัญญาของตัวจัดการ PDF/A อ้างถึง ISO 19005-4:2020 §6.7.1 ซึ่งห้ามใช้แอ็กชัน JavaScript
- หลักฐาน / การวินิจฉัย
PdfAManagerInterface::validateNoJavaScript()และvalidateNoJavaScriptActions()ต่างอ้างถึง §6.7.1 ในด็อกบล็อกของตน - วิธีแก้ไข
- นำแอ็กชัน JavaScript ออกจากเอกสารหรือฟิลด์ฟอร์ม
- หากจำเป็นต้องมีแอ็กชันนั้นเพื่อการทำงาน เอกสารจะไม่สามารถเป็น PDF/A ได้ สร้างเอกสารรูปแบบที่ไม่ใช่ PDF/A สำหรับการใช้งานนั้น
- เรียกใช้บิลด์อีกครั้งและตรวจสอบใหม่
- ที่เกี่ยวข้อง เอกสารอ้างอิงความสอดคล้อง
รายการ: เอาต์พุตที่กำกับโครงสร้างไม่ประกาศ PDF/UA-2
หัวข้อที่มีชื่อว่า “รายการ: เอาต์พุตที่กำกับโครงสร้างไม่ประกาศ PDF/UA-2”- อาการ เอกสารที่สร้างโดยเปิดใช้งานการกำกับโครงสร้างไม่ได้รับการระบุเป็น PDF/UA-2 หรือไม่มีการประกาศ PDF/UA-2
- สาเหตุที่เป็นไปได้ structure tree ว่างเปล่า เอนจินไม่ประกาศ PDF/UA-2 สำหรับเอกสารที่ไม่มีโครงสร้างที่กำกับไว้ เนื่องจาก structure tree ที่ว่างเปล่าไม่เป็นไปตามโปรไฟล์
- หลักฐาน / การวินิจฉัย การทดสอบเส้นทางความล้มเหลว
tests/Integration/Accessibility/EmptyTaggedPdfDoesNotAdvertisePdfUa2Test.phpยืนยันว่าเอกสารที่กำกับโครงสร้างแต่ว่างเปล่าจะไม่ประกาศ PDF/UA-2 นี่เป็นพฤติกรรมที่เอนจินบันทึกไว้ ไม่ใช่ข้อบกพร่อง - วิธีแก้ไข
- ยืนยันว่ามีการส่งออกเนื้อหาผ่านเส้นทางการกำกับโครงสร้าง เพื่อให้ structure tree มีข้อมูลและไม่ว่างเปล่า
- ตรวจสอบว่าลำดับ marked-content แมปไปยังองค์ประกอบโครงสร้าง
- เรียกใช้บิลด์อีกครั้งและตรวจสอบสถานะ PDF/UA-2 ใหม่
- ที่เกี่ยวข้อง ฟอนต์และการกำกับโครงสร้าง
รายการ: PDF/UA-2 ล้มเหลวเนื่องจากภาษาที่ขาดหายไปหรือไม่ถูกต้อง
หัวข้อที่มีชื่อว่า “รายการ: PDF/UA-2 ล้มเหลวเนื่องจากภาษาที่ขาดหายไปหรือไม่ถูกต้อง”- อาการ การตรวจสอบ PDF/UA-2 ล้มเหลวเนื่องจากรายการภาษาขาดหายไปหรือไม่ใช่แท็กที่ถูกต้อง
- สาเหตุที่เป็นไปได้ เอกสารหรือองค์ประกอบโครงสร้างขาดภาษาที่ถูกต้อง PDF/UA-2 กำหนดให้ประกาศภาษาธรรมชาติ ค่า
Langที่ขาดหายไปหรือมีรูปแบบไม่ถูกต้องจะไม่ผ่านการตรวจสอบแบบเข้มงวด - หลักฐาน / การวินิจฉัย การทดสอบเส้นทางความล้มเหลว
tests/Unit/Conformance/PdfUa2Section844LangStrictTest.phpทดสอบข้อกำหนดด้านภาษาแบบเข้มงวด แท็กภาษาจะได้รับการตรวจสอบผ่านsrc/Accessibility/Bcp47Validator.phpแท็กที่ไม่ถูกต้องจะทำให้เกิดsrc/Accessibility/InvalidBcp47TagException.php - วิธีแก้ไข
- กำหนดภาษาระดับเอกสารเป็นแท็ก Best Current Practice (BCP) 47 ที่ถูกต้อง ตัวอย่างเช่น
en-USหรือzh-Hant-TW - ในกรณีที่ข้อความช่วงหนึ่งเป็นภาษาที่แตกต่างกัน ให้กำหนดภาษาบนองค์ประกอบโครงสร้างนั้น
- เรียกใช้บิลด์อีกครั้งและตรวจสอบใหม่
- ที่เกี่ยวข้อง ฟอนต์และการกำกับโครงสร้าง
กรณีขอบและข้อควรระวัง
หัวข้อที่มีชื่อว่า “กรณีขอบและข้อควรระวัง”- การปฏิเสธ PDF/A และ PDF/UA ที่อธิบายไว้ที่นี่เกิดขึ้นภายในเอนจิน การปฏิเสธเหล่านี้แยกจากคำตัดสินของตัวตรวจสอบภายนอกและไม่ได้แทนที่คำตัดสินนั้น ให้เรียกใช้ตัวตรวจสอบ เช่น veraPDF เพื่อให้ได้ผลลัพธ์ที่ถือเป็นทางการ
- ตัวเขียนอ็อบเจกต์ที่จำเป็นของ PDF/A แบบเป็นรูปธรรม (สตรีมเมตาดาตา Extensible Metadata Platform (XMP) output intent พร้อมโปรไฟล์ International Color Consortium (ICC)) จะถูก resolve ในขณะรันไทม์จาก
nextpdf/proเมื่อติดตั้งเฉพาะแพ็กเกจ core อ็อบเจกต์เหล่านั้นจะไม่ถูกส่งออก บิลด์ที่ใช้ core เพียงอย่างเดียวไม่ใช่ตัวสร้าง PDF/A ที่สมบูรณ์ - การปฏิเสธการเข้ารหัสลับเป็นแบบเด็ดขาดและไม่ขึ้นกับลำดับ แม้เปิดใช้งาน PDF/A หลังการเรียกการเข้ารหัสลับก็ยังทำให้เกิดการปฏิเสธ
ดูเพิ่มเติม
หัวข้อที่มีชื่อว่า “ดูเพิ่มเติม”อภิธานศัพท์: output intent · structure tree