Przepisy preflight

Ten zestaw przepisów grupuje API i demonstracje preflight w przepisy zorientowane na zadania. Użyj referencji API, gdy potrzebujesz dokładnych sygnatur; użyj tej strony, gdy potrzebujesz działającej ścieżki dla aplikacji, skryptu budowania albo zadania CI.

Wybór formatu wyjściowego

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;

Wyjście tekstowe jest stabilne bajtowo i wygodne do porównań diff; JSON nadaje się do wczytywania przez potoki. HTML jest samowystarczalny i można go otworzyć bezpośrednio albo zapisać jako artefakt CI. CSV używa stabilnych kolumn dla arkuszy kalkulacyjnych i wsadowych przepływów raportowania.

Walidacja dokumentów 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;

Raport PDF/VT skupia się na identyfikacji ISO 16612-2 i strukturze części dokumentu: XMP GTS_PDFVTVersion w tekście elementu albo w formie atrybutu RDF, zgodności daty modyfikacji, bazowym znaczniku PDF/X, output intent, DPartRoot, DPartRootNode, NodeNameList oraz pokryciu DPart na poziomie strony.

Zastosowanie profilu

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 wyciszają nazwane kontrole, ostrzeżenia albo wszystkie wskazówki. Użyj ValidatePreflightProfile przed zastosowaniem profilu utworzonego przez użytkownika, gdy bezpieczne przerwanie jest ważniejsze niż ciche ignorowanie przestarzałej nazwy.

Tworzenie profilu wielokrotnego użytku z presetu

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;

Użyj MergePreflightProfiles, aby połączyć preset z nazwami specyficznymi dla projektu. Użyj DiffPreflightProfiles, aby przejrzeć dryf profilu przed aktualizacją współdzielonego pliku konfiguracyjnego.

Archiwizacja raportu razem z PDF

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

Ścieżka osadzania tekstu dopisuje czytelny blok komentarza po końcowym znaczniku EOF. Ścieżka XMP dopisuje ładunek w kształcie RDF dla przepływów archiwizacji skanujących pakiety metadanych.

Walidacja osadzonego raportu

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

Ścieżka walidacji porównuje osadzony odcisk z nowym uruchomieniem preflight na bajtach źródłowych. Pomocnik diff działa liniowo i jest dostrojony do raportów preflight HotPDF.

Uruchomienie konserwatywnej naprawy

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

Pomocnik naprawy celowo pozostaje wąski. Obsługuje końcowe bajty po finalnym znaczniku EOF i brakujące znaczniki EOF, ale nie przebudowuje tabel cross-reference ani nie przepisuje strumieni.

Agregowanie wielu raportów

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

Wyjście agregacji podaje jeden wiersz statusu na PDF oraz sumy przetworzonych raportów, błędów i ostrzeżeń. Przydaje się, gdy potok potrzebuje jednego podsumowania, mimo że szczegółowe raporty są przechowywane osobno dla każdego pliku wejściowego.

Użycie narzędzia wiersza poleceń

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 odzwierciedla przepływ biblioteki: jeden plik lub rekurencyjne wejście katalogu, wyjście text / JSON / HTML, opcjonalne hasło, opcjonalny profil, wbudowany preset, szczegółowy postęp i zagregowane podsumowanie.

Budowanie statycznego panelu

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

Demo panelu zapisuje index.html oraz raporty HTML dla poszczególnych plików. Serwer WWW nie jest wymagany, więc wynik można opublikować jako statyczny artefakt.

Dostosowanie do odbiorców JSON w stylu veraPDF

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

Adapter zachowuje semantykę HotPDF, jednocześnie przekształcając błędy do znajomej struktury wyników walidacji dla narzędzi, które już przyjmują JSON podobny do veraPDF.

Powiązane tematy