Kuchařka preflightu

Tato kuchařka seskupuje API a demo příklady preflightu do receptů orientovaných na úlohy Když potřebujete přesné signatury, použijte referenci API; když potřebujete funkční postup pro aplikaci, build skript nebo CI úlohu, použijte tuto stránku

Volba výstupního formátu

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;

Textový výstup je stabilní na úrovni bajtů a dobře se porovnává v diffu JSON je vhodný pro zpracování v pipeline HTML je samostatné a lze jej otevřít přímo nebo uložit jako CI artefakt CSV používá stabilní sloupce pro tabulkové a dávkové reportovací workflow

Validace dokumentů 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;

Report PDF/VT se zaměřuje na identifikaci ISO 16612-2 a strukturu částí dokumentu: XMP GTS_PDFVTVersion v textu elementu nebo ve formě atributu RDF, shodu data změny, základní značku PDF/X, output intent, DPartRoot, DPartRootNode, NodeNameList a pokrytí DPart na úrovni stránek

Použití 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;

Profily potlačují pojmenované kontroly, varování nebo všechny nápovědy Před použitím profilu vytvořeného uživatelem zavolejte ValidatePreflightProfile, pokud je bezpečné selhání důležitější než tiché ignorování zastaralého názvu

Vytvoření opakovaně použitelného profilu 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;

Pomocí MergePreflightProfiles zkombinujte preset s názvy specifickými pro projekt Pomocí DiffPreflightProfiles zkontrolujte drift profilu před aktualizací sdíleného konfiguračního souboru

Archivace reportu společně s PDF

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

Cesta textového vložení připojí čitelný blok komentáře za koncovou značku EOF Cesta XMP připojí payload ve tvaru RDF pro archivní workflow, která skenují metadata pakety

Validace vloženého reportu

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

Validační cesta porovnává vložený fingerprint s čerstvým preflight během nad zdrojovými bajty Pomocník pro diff pracuje po řádcích a je vyladěn pro preflight reporty HotPDF

Spuštění konzervativního opravného průchodu

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

Pomocník pro opravy má záměrně úzký rozsah Zpracuje přebytečné bajty za koncovou značkou EOF a chybějící značky EOF, ale znovu nesestavuje tabulky křížových odkazů ani nepřepisuje streamy

Agregace mnoha reportů

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

Agregovaný výstup uvádí jeden stavový řádek pro každý PDF soubor a součty zpracovaných reportů, selhání a varování Hodí se, když pipeline potřebuje jeden souhrn, i když podrobné reporty zůstávají u jednotlivých vstupních souborů

Použití nástroje příkazového řádku

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 zrcadlí workflow knihovny: jeden soubor nebo rekurzivní adresářový vstup, výstup text / JSON / HTML, volitelné heslo, volitelný profil, vestavěný preset, podrobný průběh a agregovaný souhrn

Sestavení statického dashboardu

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

Demo dashboardu zapíše index.html a HTML reporty pro jednotlivé soubory Webový server není potřeba, takže výstup lze publikovat jako statický artefakt

Přizpůsobení pro konzumenty JSON ve stylu veraPDF

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

Adaptér zachovává sémantiku HotPDF a současně převádí selhání do známé struktury validačních výsledků pro nástroje, které už konzumují JSON podobný veraPDF

Související témata