Sổ tay Preflight

Sổ tay này gom các API và demo preflight thành các công thức theo tác vụ Dùng trang tham khảo API khi cần chữ ký chính xác; dùng trang này khi cần một lộ trình chạy được cho ứng dụng, script build hoặc job CI

Chọn định dạng đầu ra

var
  PDF: THotPDF;
begin
  PDF := THotPDF.Create(nil);
  try
    PDF.SavePreflightReport('Input.pdf', 'Input.preflight.txt');
    PDF.SavePreflightReport('Input.pdf', 'Input.preflight.json', '', pfJSON);
    PDF.SavePreflightReport('Input.pdf', 'Input.preflight.html', '', pfHTML);
    PDF.SavePreflightReport('Input.pdf', 'Input.preflight.csv', '', pfCSV);
  finally
    PDF.Free;
  end;
end;

Đầu ra văn bản ổn định theo byte và thân thiện với diff. JSON phù hợp để nạp vào pipeline. HTML tự chứa và có thể mở trực tiếp hoặc lưu như một artifact CI. CSV dùng các cột ổn định cho luồng bảng tính và báo cáo hàng loạt

Xác thực tài liệu PDF/VT

var
  PDF: THotPDF;
  Report: AnsiString;
begin
  PDF := THotPDF.Create(nil);
  try
    if not PDF.ValidatePDFVT('Input.pdf', Report) then
      WriteLn(string(Report));
  finally
    PDF.Free;
  end;
end;

Báo cáo PDF/VT tập trung vào nhận dạng theo ISO 16612-2 và cấu trúc document-part: XMP GTS_PDFVTVersion ở dạng văn bản phần tử hoặc thuộc tính RDF, khớp ngày sửa đổi, marker gốc PDF/X, output intent, DPartRoot, DPartRootNode, NodeNameList và độ phủ DPart ở cấp trang

Áp dụng profile

var
  PDF: THotPDF;
  Report: AnsiString;
begin
  PDF := THotPDF.Create(nil);
  try
    Report := PDF.CreatePreflightReportWithProfile(
      'Input.pdf', '', 'project-preflight.ini', pfJSON);
  finally
    PDF.Free;
  end;
end;

Profile có thể tắt các kiểm tra có tên, cảnh báo hoặc toàn bộ gợi ý Hãy dùng ValidatePreflightProfile trước khi áp dụng một profile do người dùng soạn khi việc fail closed quan trọng hơn việc bỏ qua âm thầm một tên đã lỗi thời

Tạo profile tái sử dụng từ preset

var
  PDF: THotPDF;
  Profile: THPDFPreflightProfile;
begin
  PDF := THotPDF.Create(nil);
  try
    Profile := PDF.GetBuiltInPreflightProfile('compact');
    Profile.DisableWarnings := 'OpenAction,JavaScript,URIAction';
    PDF.SavePreflightProfile(Profile, 'compact-no-actions.ini');
  finally
    PDF.Free;
  end;
end;

Dùng MergePreflightProfiles để kết hợp một preset với các tên riêng của dự án. Dùng DiffPreflightProfiles để xem độ lệch profile trước khi cập nhật một tệp cấu hình dùng chung

Lưu trữ báo cáo cùng PDF

PDF.EmbedPreflightReportInPDF('Input.pdf', 'Input-with-report.pdf');
PDF.EmbedPreflightReportAsXMP('Input.pdf', 'Input-with-xmp-report.pdf');

Đường nhúng văn bản sẽ nối thêm một khối chú thích có thể đọc được sau marker EOF cuối cùng. Đường XMP nối thêm một payload dạng RDF cho các luồng lưu trữ quét packet siêu dữ liệu

Xác thực báo cáo nhúng

var
  OriginalReport: AnsiString;
  CurrentReport: AnsiString;
begin
  if not PDF.LoadAndValidatePreflightReport(
    'Input-with-report.pdf', OriginalReport, CurrentReport) then
    WriteLn(string(PDF.ComparePreflightReports(OriginalReport, CurrentReport)));
end;

Đường xác thực so sánh fingerprint đã nhúng với một lần chạy preflight mới trên byte nguồn. Helper diff được tổ chức theo dòng và được tinh chỉnh cho báo cáo preflight của HotPDF

Chạy một lượt sửa chữa bảo thủ

var
  RepairsApplied: AnsiString;
begin
  if PDF.RepairPDFFromPreflightReport(
    'Broken.pdf', 'Broken-repaired.pdf', RepairsApplied) then
    WriteLn(string(RepairsApplied));
end;

Helper sửa chữa cố ý giữ phạm vi hẹp. Nó xử lý byte dư sau marker EOF cuối cùng và các marker EOF bị thiếu, nhưng không dựng lại bảng tham chiếu chéo hay ghi lại luồng

Tổng hợp nhiều báo cáo

Reports[0] := PDF.CreatePreflightReport('A.pdf');
Reports[1] := PDF.CreatePreflightReport('B.pdf');
Summary := PDF.AggregatePreflightReports(Reports);

Đầu ra tổng hợp liệt kê một dòng trạng thái cho mỗi PDF và các tổng cho báo cáo đã xử lý, lỗi và cảnh báo. Nó hữu ích khi pipeline cần một bản tóm tắt duy nhất dù các báo cáo chi tiết vẫn được giữ theo từng tệp đầu vào

Dùng công cụ dòng lệnh

HotPDFPreflight Input.pdf -f json -o reports
HotPDFPreflight Input.pdf --pdfvt -o reports
HotPDFPreflight C:\Archive -r --preset compact -f text -o reports --aggregate reports\Aggregate.txt
HotPDFPreflight C:\Archive -r --profile project-preflight.ini -f html -o reports

CLI phản chiếu luồng làm việc của thư viện: đầu vào một tệp hoặc thư mục đệ quy, đầu ra text / JSON / HTML, mật khẩu tùy chọn, profile tùy chọn, preset dựng sẵn, tiến trình chi tiết và bản tóm tắt tổng hợp

Dựng dashboard tĩnh

PreflightDashboard C:\Archive C:\Archive\preflight-dashboard

Demo dashboard ghi ra một index.html cùng các báo cáo HTML cho từng tệp. Không cần web server nên đầu ra có thể phát hành như một artifact tĩnh

Thích ứng với JSON kiểu veraPDF phía consumer

Report := PDF.CreatePreflightReport('Input.pdf');
JSON := PDF.ConvertPreflightReportToVeraPDFStyle(Report);

Adapter này giữ nguyên ngữ nghĩa của HotPDF trong khi định dạng lại các lỗi thành cấu trúc kết quả xác thực quen thuộc cho những công cụ đã tiêu thụ JSON kiểu veraPDF

Chủ đề liên quan