Editable Diagnostic Documents and Repair

SaveLoadedDocumentDiagnostic tạo đầu ra đã giải nén, xác định để kiểm tra và chỉnh sửa văn bản có kiểm soát, trong khi RepairDiagnosticDocument biến tệp đã chỉnh sửa trở lại thành một PDF hợp lệ về cấu trúc

Quy trình khứ hồi

  1. Nạp một tài liệu và gọi SaveLoadedDocumentDiagnostic
  2. Chỉnh sửa dictionary đối tượng hoặc byte stream không nén mà không cố duy trì /Length, hàng xref, hoặc startxref thủ công
  3. Gọi RepairDiagnosticDocument với các tùy chọn có giới hạn
  4. Kiểm tra THPDFDiagnosticRepairReport và chỉ dùng đích đã sửa khi phương thức trả về True

Hợp đồng sửa chữa

Từ chối nghiêm ngặt

Việc sửa chữa thất bại an toàn cho số đối tượng trùng lặp, nhiều hoặc thiếu đối tượng Catalog, tham chiếu trailer hỏng, byte không phải chú thích giữa các đối tượng, ngữ pháp đối tượng không hợp lệ, giới hạn đối tượng hoặc đầu vào, offset xref cổ điển rộng hơn mười chữ số, và lỗi xác thực tải lại nghiêm ngặt

Dấu bên trong đối tượng đã xác thực được bỏ qua, nên văn bản giống đối tượng trong chuỗi và payload stream đã mã hóa không trở thành mục xref

Hiệu năng có giới hạn

Bộ quét đọc các cửa sổ 1 MiB với một phần mang ngắn, sao chép các dải đối tượng trực tiếp giữa các stream tệp, và chỉ giữ siêu dữ liệu đối tượng đã xác thực cùng các thăm dò dictionary có giới hạn

MaxInputBytes, MaxObjectCount, và MaxObjectNumber giới hạn việc quét, siêu dữ liệu được giữ, và hàng xref được phát ra trước khi đầu ra được xuất bản

Ví dụ Pascal

var
  Options: THPDFDiagnosticRepairOptions;
  Report: THPDFDiagnosticRepairReport;
begin
  Options := THPDFDiagnosticRepairOptions.Default;
  Options.MaxInputBytes := Int64(16) * 1024 * 1024 * 1024;

  if not THotPDF.RepairDiagnosticDocument(
    'edited-diagnostic.pdf',
    'repaired.pdf',
    Options,
    Report
  ) then
    raise Exception.Create(string(Report.Diagnostic));
end;

API liên quan