Bỏ qua để đến nội dung

Khắc phục sự cố lỗi kiểm tra hợp lệ PDF/A và PDF/UA

Các mục này bao gồm những lỗi mà engine phát sinh khi duy trì một tài liệu theo hồ sơ Portable Document Format/Archive (PDF/A) hoặc Portable Document Format/Universal Accessibility (PDF/UA). Các số điều khoản bên dưới được lấy từ mã nguồn và thông báo ngoại lệ của engine. Trang này diễn giải lại các điều khoản đó. Engine báo cáo những lỗi hồ sơ mà nó phát hiện; engine không chứng nhận tính tuân thủ của tài liệu. Hãy dùng một trình kiểm tra hợp lệ bên ngoài với bộ quy tắc riêng để có kết luận tuân thủ chính thức.

  • Triệu chứng. NextPDF\Security\Exception\IncompatiblePdfAModeException với thông báo cho biết một thao tác mã hóa bị cấm trong chế độ PDF/A.
  • Nguyên nhân có thể. Pipeline đã bật một chế độ PDF/A và yêu cầu mã hóa. Engine trích dẫn International Organization for Standardization (ISO) 19005-{1,2,3,4} §6.1.3: khóa Encrypt không được phép xuất hiện trong trailer của một tệp PDF/A. Engine từ chối tuyệt đối tổ hợp này, bất kể thứ tự gọi.
  • Bằng chứng / chẩn đoán. getContext() trả về pdfa_modeencryption_operation. Bài kiểm thử nhánh lỗi tests/SecurityScenarios/PdfAEncryptionRefusalTest.php xác nhận rằng việc từ chối được kích hoạt dù bạn bật PDF/A trước hay sau lệnh gọi mã hóa.
  • Cách khắc phục.
    1. Quyết định xem tài liệu cần gì: tuân thủ lưu trữ hay mã hóa.
    2. Với một tài liệu lưu trữ, hãy bỏ lệnh gọi mã hóa.
    3. Với một tài liệu được mã hóa, hãy bỏ lệnh gọi bật PDF/A.
    4. Chạy lại pipeline.
  • Liên quan. Mã hóa và quyền.
  • Triệu chứng. Pdf14FeatureRejectedException trong quá trình nạp ảnh, kèm một thông báo nêu tên /JPXDecode hoặc /JBIG2Decode và điều khoản ISO 19005-1:2005 §6.1.13.
  • Nguyên nhân có thể. Một bản dựng PDF/A-1 đã nạp một ảnh dùng bộ lọc được giới thiệu sau PDF 1.4. PDF/A-1 nhắm đến tập tính năng của PDF 1.4, nên PdfA1FeatureGuard từ chối Joint Photographic Experts Group (JPEG) 2000 (/JPXDecode) và JBIG2 (/JBIG2Decode).
  • Bằng chứng / chẩn đoán. src/Writer/PdfA1FeatureGuard.php chứa danh sách bộ lọc bị cấm và phát sinh điều khoản được trích dẫn. Guard chỉ từ chối các bộ lọc này trong hồ sơ PDF/A-1; hồ sơ PDF/A-2, PDF/A-3 và PDF 2.0 cho phép chúng.
  • Cách khắc phục.
    1. Mã hóa lại ảnh nguồn mà không dùng JPEG 2000 hoặc JBIG2. Ví dụ, lưu ảnh đó dưới dạng JPEG baseline hoặc ảnh nén Flate.
    2. Hoặc, hãy nhắm đến PDF/A-2 hoặc PDF/A-3, vốn cho phép các bộ lọc đó.
    3. Chạy lại bản dựng.
  • Liên quan. Tài liệu tham khảo về tuân thủ.

Mục: một phông chữ không được nhúng trong PDF/A

Phần tiêu đề “Mục: một phông chữ không được nhúng trong PDF/A”
  • Triệu chứng. Một bản dựng PDF/A thất bại ở bước kiểm tra hợp lệ phông chữ, hoặc một trình kiểm tra hợp lệ bên ngoài báo cáo rằng một phông chữ chưa được nhúng.
  • Nguyên nhân có thể. Một glyph đã được vẽ bằng một phông chữ có chương trình chưa được nhúng. Hợp đồng của trình quản lý PDF/A quy định rằng mọi phông chữ đều phải được nhúng và không được dùng phông chữ standard-14 nào nếu chưa nhúng.
  • Bằng chứng / chẩn đoán. src/Contracts/PdfAManagerInterface.php khai báo validateFont(string $fontName, bool $isEmbedded, array $cmapForward) và ghi lại quy tắc: mọi phông chữ đều phải được nhúng, và không được dùng phông chữ standard 14 nào nếu chưa nhúng. Phần thực thi cụ thể được cung cấp trong nextpdf/pro.
  • Cách khắc phục.
    1. Xác định phông chữ bị báo là không được nhúng.
    2. Cấu hình phông chữ đó với một tệp chương trình có thể nhúng, thay vì dựa vào một face standard-14 tích hợp sẵn.
    3. Để hiểu tương tác với thay thế Base 14, hãy đọc mục về phông chữ và gắn thẻ.
    4. Chạy lại bản dựng và kiểm tra hợp lệ lại.
  • Liên quan. Phông chữ và gắn thẻ.

Mục: có JavaScript và việc kiểm tra hợp lệ PDF/A thất bại

Phần tiêu đề “Mục: có JavaScript và việc kiểm tra hợp lệ PDF/A thất bại”
  • Triệu chứng. Một bản dựng PDF/A thất bại ở bước kiểm tra hợp lệ JavaScript, hoặc một trình kiểm tra hợp lệ bên ngoài báo cáo một hành động JavaScript.
  • Nguyên nhân có thể. Tài liệu hoặc một trường biểu mẫu chứa một hành động JavaScript. Hợp đồng của trình quản lý PDF/A trích dẫn ISO 19005-4:2020 §6.7.1, điều khoản cấm các hành động JavaScript.
  • Bằng chứng / chẩn đoán. PdfAManagerInterface::validateNoJavaScript()validateNoJavaScriptActions() đều trích dẫn §6.7.1 trong docblock của chúng.
  • Cách khắc phục.
    1. Bỏ hành động JavaScript khỏi tài liệu hoặc trường biểu mẫu.
    2. Nếu hành động này cần thiết cho hành vi, tài liệu không thể là PDF/A. Hãy tạo một biến thể không phải PDF/A cho mục đích đó.
    3. Chạy lại bản dựng và kiểm tra hợp lệ lại.
  • Liên quan. Tài liệu tham khảo về tuân thủ.

Mục: đầu ra có gắn thẻ không công bố PDF/UA-2

Phần tiêu đề “Mục: đầu ra có gắn thẻ không công bố PDF/UA-2”
  • Triệu chứng. Một tài liệu được dựng với chế độ gắn thẻ đã bật không được nhận diện là PDF/UA-2, hoặc thiếu khai báo PDF/UA-2.
  • Nguyên nhân có thể. Cây cấu trúc rỗng. Engine không công bố PDF/UA-2 cho một tài liệu không có cấu trúc được gắn thẻ, vì cây cấu trúc rỗng không đáp ứng hồ sơ.
  • Bằng chứng / chẩn đoán. Bài kiểm thử nhánh lỗi tests/Integration/Accessibility/EmptyTaggedPdfDoesNotAdvertisePdfUa2Test.php xác nhận rằng một tài liệu được gắn thẻ nhưng rỗng không công bố PDF/UA-2. Đây là hành vi đã được ghi chép của engine, không phải lỗi.
  • Cách khắc phục.
    1. Xác nhận rằng nội dung được xuất qua đường gắn thẻ, để cây cấu trúc có nội dung thay vì rỗng.
    2. Kiểm tra rằng các chuỗi marked-content ánh xạ tới các phần tử cấu trúc.
    3. Chạy lại bản dựng và kiểm tra lại trạng thái PDF/UA-2.
  • Liên quan. Phông chữ và gắn thẻ.

Mục: PDF/UA-2 thất bại do ngôn ngữ thiếu hoặc không hợp lệ

Phần tiêu đề “Mục: PDF/UA-2 thất bại do ngôn ngữ thiếu hoặc không hợp lệ”
  • Triệu chứng. Một lần kiểm tra PDF/UA-2 thất bại vì thiếu mục ngôn ngữ hoặc mục đó không phải là một thẻ hợp lệ.
  • Nguyên nhân có thể. Tài liệu hoặc một phần tử cấu trúc thiếu một ngôn ngữ hợp lệ. PDF/UA-2 yêu cầu khai báo ngôn ngữ tự nhiên; giá trị Lang bị thiếu hoặc sai định dạng sẽ không vượt qua lần kiểm tra nghiêm ngặt.
  • Bằng chứng / chẩn đoán. Bài kiểm thử nhánh lỗi tests/Unit/Conformance/PdfUa2Section844LangStrictTest.php kiểm tra yêu cầu ngôn ngữ nghiêm ngặt. Các thẻ ngôn ngữ được kiểm tra hợp lệ qua src/Accessibility/Bcp47Validator.php; một thẻ không hợp lệ sẽ phát sinh src/Accessibility/InvalidBcp47TagException.php.
  • Cách khắc phục.
    1. Đặt một ngôn ngữ cấp tài liệu dưới dạng một thẻ Best Current Practice (BCP) 47 hợp lệ, ví dụ, en-US hoặc zh-Hant-TW.
    2. Khi một đoạn văn ở một ngôn ngữ khác, hãy đặt ngôn ngữ trên phần tử cấu trúc đó.
    3. Chạy lại bản dựng và kiểm tra hợp lệ lại.
  • Liên quan. Phông chữ và gắn thẻ.
  • Các trường hợp từ chối PDF/A và PDF/UA được mô tả ở đây được tạo ra bên trong engine. Chúng độc lập với kết luận của một trình kiểm tra hợp lệ bên ngoài và không thay thế kết luận đó. Hãy chạy một trình kiểm tra hợp lệ như veraPDF để có kết quả chính thức.
  • Trình ghi đối tượng bắt buộc dành riêng cho PDF/A (luồng metadata Extensible Metadata Platform (XMP), output intent với một hồ sơ International Color Consortium (ICC)) được phân giải tại thời điểm chạy từ nextpdf/pro. Khi chỉ cài gói core, những đối tượng đó không được xuất ra; một bản dựng chỉ dùng core không phải là một trình tạo PDF/A hoàn chỉnh.
  • Việc từ chối mã hóa là tuyệt đối và không phụ thuộc thứ tự; bật PDF/A sau lệnh gọi mã hóa vẫn phát sinh lỗi từ chối.

Bảng thuật ngữ: output intent · cây cấu trúc