Loaded PDF to PDF/A-4 Raster Conversion
HPDFArchivalConversion tạo một tài liệu PDF/A-4 mới từ nội dung trang hiển thị của một tài liệu THotPDF đã nạp, dùng rendering gốc nghiêm ngặt và một hồ sơ sRGB ICC được cung cấp
Mỗi trang đầu ra chứa một ảnh raster RGB nén không mất dữ liệu ở DPI được yêu cầu, với kích thước hiển thị, crop, xoay, và UserUnit gốc được phản chiếu vào hình học trang đầu ra
Các điểm vào
function HPDFConvertLoadedToPDFA4Raster(Source: THotPDF;
Destination: TStream; const SRGBProfile: TBytes;
const Options: THPDFArchivalConversionOptions;
out Report: THPDFArchivalConversionReport): Boolean;
function HPDFConvertLoadedToPDFA4RasterFile(Source: THotPDF;
const TargetFileName: string; const SRGBProfile: TBytes;
const Options: THPDFArchivalConversionOptions;
out Report: THPDFArchivalConversionReport): Boolean;
Hãy nạp nguồn trước và giữ mọi input stream do caller sở hữu tồn tại đến khi tài liệu nguồn bị hủy
Dùng điểm vào tệp cho việc công bố lưu trữ thông thường: nó thăm dò target hiện có để phát hiện alias nguồn trước khi tạo một tệp tạm độc quyền trong thư mục target, xác thực toàn bộ chuyển đổi, flush tệp, rồi thay thế target bằng MoveFileEx với MOVEFILE_REPLACE_EXISTING và MOVEFILE_WRITE_THROUGH
Các lỗi chuyển đổi, rendering, xác thực, hủy, và công bố đều giữ nguyên tệp target hiện có và xóa đầu ra tạm
Điểm vào stream đòi hỏi một destination rỗng, seek được, ở vị trí zero, và từ chối các alias đã biết của input qua IsLoadedSourceStreamAlias; nó chỉ công bố bytes sau khi toàn bộ đầu ra đã dàn xong vượt qua xác thực gốc
Lỗi ghi destination kích hoạt một lần reset nỗ lực tối đa về stream rỗng, nhưng một thiết bị tùy ý hoặc custom stream có thể từ chối reset đó và giữ lại phần ghi dở; hãy dùng điểm vào tệp khi việc công bố tệp buộc phải nguyên tử
Tùy chọn và chặn tài nguyên
| Tùy chọn | Mặc định | Ý nghĩa |
|---|---|---|
DPI | 150 | Độ phân giải vật lý yêu cầu, khoảng chấp nhận 36 đến 1200 |
MaxPages | 1000 | Số trang nguồn đã nạp tối đa |
MaxPixelsPerPage | 40,000,000 | Số pixel trang tối đa và số pixel ảnh nguồn riêng lẻ tối đa |
MaxTotalPixels | 500,000,000 | Số pixel raster đầu ra tích lũy tối đa |
MaxRasterBytes | 256 MiB | Bộ nhớ cấp phát raster tối đa cho một trang hoặc ảnh nguồn, kiểm tra bảo thủ với bốn byte mỗi pixel |
MaxOutputBytes | 256 MiB | Kích thước PDF đã dàn tối đa, thực thi trước khi cấp phát stream và ghi |
MaxDecodedStreamBytes | 64 MiB | Chặn từng chuỗi filter, preflight nội dung gộp của từng trang, từng callback đọc stream gốc, từng stream ảnh nguồn đã mã hóa, và trình xác thực đầu ra gốc |
MaxTotalDecodedBytes | 256 MiB | Chặn công việc decoder gốc đã lọc bổ sung trong suốt chuyển đổi, preflight nội dung gộp qua các trang, và các callback đọc stream gốc tích lũy qua các trang |
MaxInputObjects | 200,000 | Số indirect object đã nạp tối đa |
CancellationToken | nil | Token mượn được kiểm tra trước khi làm việc, trong rendering và decode gốc, và trước khi công bố |
Checkpoint | nil | Callback đồng bộ mượn được gọi với sender nil tại các checkpoint chuyển đổi và tài nguyên gốc; không được re-enter vào tài liệu nguồn |
Các giới hạn decode đếm công việc decoder và có thể tính phí cùng một stream đã lọc thêm lần nữa trong preflight, biên dịch display-list, và rendering; việc tăng ngân sách là một quyết định tường minh của caller
Preflight pixel bao phủ cả độ phân giải vật lý yêu cầu lẫn DPI số nguyên của renderer gốc sau khi áp UserUnit; đơn vị rất nhỏ có thể đòi thêm pixel raster, và kích thước trang lẻ có thể gây resampling dưới mức pixel khi ảnh được ánh xạ ngược về trang vật lý
Các chặn chuyển đổi áp dụng sau khi nạp nguồn; hãy cấu hình giới hạn tài nguyên riêng của bộ nạp khi tiếp nhận input không đáng tin
Đồ thị object của nguồn được giữ lại, trong khi read cache và thống kê decode có thể được điền; các thiết lập rendering, token hủy, backend, và ngân sách decode được khôi phục cả khi thành công lẫn thất bại
Hãy dành quyền truy cập độc quyền cho converter trên tài liệu nguồn của nó trong lúc nó tạm thời áp các thiết lập này
Rendering và màu sắc
Mọi trang phải dựng mà không có chẩn đoán fallback gốc, chẩn đoán bị bỏ rơi, hay lỗi thiếu tài nguyên; nội dung không được hỗ trợ sẽ từ chối phép chuyển đổi thay vì công bố một trang chưa đầy đủ
Tham số ICC phải mô tả sRGB với biểu diễn matrix/TRC được nhận dạng, các primary chuẩn D50-adapted, và hàm transfer IEC sRGB; các profile RGB không liên quan, profile CMYK, profile hỏng, và profile dựa trên LUT đều bị từ chối
Đầu ra khai báo một OutputIntent sRGB và metadata XMP PDF/A-4; workflow ICC proof hoặc output tùy chỉnh đã cấu hình sẵn trên nguồn sẽ bị từ chối vì các thiết lập image-decoder của nó không thể được diễn giải lại một cách an toàn thành sRGB
Build FPC đòi hỏi codec bridge gốc của nó với LittleCMS khả dụng, và từ chối chuyển đổi khi backend quản lý màu này bị thiếu
Các stream ảnh JPEG và JPX, kể cả inline image đã mã hóa, được kiểm tra kích thước codestream thực tế trước khi decode pixel gốc và phải khớp với image dictionary của PDF
JPEG chấp nhận các header baseline 8-bit có chặn, extended sequential, và progressive; JPX chấp nhận header J2K SIZ có chặn và các hộp JP2 độ dài thông thường với tối đa bốn component và độ chính xác component tối đa 16 bit
Codec đã mã hóa có thêm ngân sách làm việc bảo thủ 64 byte mỗi pixel nguồn, và metadata tile JPX bị chặn bởi cả MaxInputObjects lẫn 1024 byte mỗi tile trong MaxRasterBytes; ngân sách raster mặc định 256 MiB vì thế cho phép tối đa 4,194,304 pixel nguồn đã mã hóa, và caller có thể tăng tường minh cho các ảnh lớn hơn
Chuyển đổi JBIG2 bị từ chối vì các cấp phát vùng và ký hiệu nội bộ của nó không thể bị chặn từ header API sẵn có; codec ảnh nonterminal, hộp JP2 độ dài mở rộng, wrapper không được hỗ trợ, và stream codec mang DecodeParms cũng bị từ chối
Các tham số fax CCITT phải giữ nguyên kích thước ảnh dương đã khai báo; các override DecodeParms.Columns và Rows khác với dictionary, kể cả Rows=0 chưa biết, bị từ chối trước khi decode gốc
Các kiểm tra này chặn các dạng header và cấp phát đã biết mà converter này chấp nhận, và không hứa hẹn một sandbox bộ nhớ tiến trình đầy đủ cho mọi decoder gốc
Mất mát thông tin và chất lượng
- Nội dung vector, font, transparency, và không gian màu nguồn trở thành pixel trang RGB; DPI cao hơn cải thiện chi tiết trực quan nhưng tăng bộ nhớ và kích thước tệp
- Văn bản đầu ra không tìm kiếm hay chọn được, và không có text layer hay đầu ra OCR nào được tổng hợp
- Chú thích, appearance của chú thích, form field, appearance của widget, và appearance chữ ký hiển thị bị bỏ đi thay vì nướng vào raster trang
- Chữ ký số, embedded file, script, action, bookmark, layer ở vai trò điều khiển tương tác, structural tag, và danh tính tài liệu gốc không được giữ lại
- Kết quả không bảo toàn khả năng sửa vector, hiệu lực chữ ký gốc, khả năng truy cập PDF/UA, hay ngữ nghĩa tài liệu nguồn
THPDFArchivalConversionReport cung cấp trạng thái thành công và hủy, số trang nguồn và đã dựng, pixel raster, byte đầu ra, số chú thích/form/attachment bị xóa, một chẩn đoán thất bại, và các phát hiện xác thực gốc
FailureKind phân biệt afkNone, afkConversion, afkBudget, và afkCancelled; lỗi ngân sách converter có kiểu còn cung cấp BudgetMetric, BudgetObserved, và BudgetLimit
Một exception tại checkpoint dừng chuyển đổi và được báo qua kết quả thất bại gốc; wrapper cần nhóm exception callback gốc phải giữ lại nó trước khi converter bắt lấy
archive.pdfa4.raster — operation JSON và C ABI đòi hỏi chấp nhận mất mát thông tin tường minh, giữ nguyên handle nguồn, giao nộp PDF đã xác thực cùng báo cáo mất mát, và áp các trần ngân sách job bảo thủ
Kiểm chứng tuân thủ
Converter nạp lại đầu ra đã dàn của nó và yêu cầu ValidatePDFA4 với profile PDF/A-4 cơ sở trước khi công bố; trình xác thực gốc bao phủ tập quy tắc có chặn đã được ghi tài liệu của nó chứ không phải bằng chứng cho mọi yêu cầu của ISO 19005-4
Nghiệm thu độc lập có thể dùng veraPDF với --flavour 4; fixture hồi quy chứa văn bản không nhúng font, transparency, một ảnh RGB, một link, một signature widget, và một attachment đã vượt qua veraPDF 1.30.2 mà không có quy tắc hay kiểm tra nào thất bại
Chạy Tests/Delphi/Run-HotPDFArchivalTests.bat cho bộ hồi quy phi GUI chuyên biệt