Khắc phục sự cố lỗi kiểm tra hợp lệ PDF/A và PDF/UA
Phạm vi
Phần tiêu đề “Phạm vi”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.
Mục: mã hóa bị từ chối trong PDF/A
Phần tiêu đề “Mục: mã hóa bị từ chối trong PDF/A”- Triệu chứng.
NextPDF\Security\Exception\IncompatiblePdfAModeExceptionvớ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
Encryptkhô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_modevàencryption_operation. Bài kiểm thử nhánh lỗitests/SecurityScenarios/PdfAEncryptionRefusalTest.phpxá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.
- Quyết định xem tài liệu cần gì: tuân thủ lưu trữ hay mã hóa.
- Với một tài liệu lưu trữ, hãy bỏ lệnh gọi mã hóa.
- Với một tài liệu được mã hóa, hãy bỏ lệnh gọi bật PDF/A.
- Chạy lại pipeline.
- Liên quan. Mã hóa và quyền.
Mục: bộ lọc ảnh bị cấm trong PDF/A-1
Phần tiêu đề “Mục: bộ lọc ảnh bị cấm trong PDF/A-1”- Triệu chứng.
Pdf14FeatureRejectedExceptiontrong quá trình nạp ảnh, kèm một thông báo nêu tên/JPXDecodehoặc/JBIG2Decodevà điều khoảnISO 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
PdfA1FeatureGuardtừ chối Joint Photographic Experts Group (JPEG) 2000 (/JPXDecode) và JBIG2 (/JBIG2Decode). - Bằng chứng / chẩn đoán.
src/Writer/PdfA1FeatureGuard.phpchứ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.
- 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.
- 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 đó.
- 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.phpkhai báovalidateFont(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 trongnextpdf/pro. - Cách khắc phục.
- Xác định phông chữ bị báo là không được nhúng.
- 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.
- Để 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ẻ.
- 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()vàvalidateNoJavaScriptActions()đều trích dẫn §6.7.1 trong docblock của chúng. - Cách khắc phục.
- Bỏ hành động JavaScript khỏi tài liệu hoặc trường biểu mẫu.
- 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 đó.
- 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.phpxá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.
- 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.
- Kiểm tra rằng các chuỗi marked-content ánh xạ tới các phần tử cấu trúc.
- 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ị
Langbị 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.phpkiể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ệ quasrc/Accessibility/Bcp47Validator.php; một thẻ không hợp lệ sẽ phát sinhsrc/Accessibility/InvalidBcp47TagException.php. - Cách khắc phục.
- Đặ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-UShoặczh-Hant-TW. - 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 đó.
- Chạy lại bản dựng và kiểm tra hợp lệ lại.
- Đặ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ụ,
- Liên quan. Phông chữ và gắn thẻ.
Trường hợp đặc biệt và lưu ý
Phần tiêu đề “Trường hợp đặc biệt và lưu ý”- 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.
Xem thêm
Phần tiêu đề “Xem thêm”Bảng thuật ngữ: output intent · cây cấu trúc