Preflight Cookbook

Tento cookbook zoskupuje preflight API a ukážky do úlohovo orientovaných receptov Na presné signatúry použite referenciu API; túto stránku použite vtedy, keď potrebujete funkčnú cestu pre aplikáciu, build script alebo CI úlohu

Choose an output format

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 byte-stabilný a vhodný na porovnanie zmien JSON sa hodí na ingestovanie do pipeline HTML je samostatný a možno ho otvoriť priamo alebo uložiť ako CI artefakt CSV používa stabilné stĺpce pre tabuľkové spracovanie a dávkové reporty

Validate PDF/VT documents

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;

Správa PDF/VT sa zameriava na identifikáciu podľa ISO 16612-2 a štruktúru častí dokumentu: XMP GTS_PDFVTVersion v element texte alebo vo forme RDF atribútu, zhodu dátumu úpravy, základný marker PDF/X, output intent, DPartRoot, DPartRootNode, NodeNameList a pokrytie DPart na úrovni stránky

Apply a 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;

Profily potláčajú pomenované kontroly, varovania alebo všetky náznaky Použite ValidatePreflightProfile pred použitím používateľom vytvoreného profilu vtedy, keď je dôležitejšie zlyhať uzavreto než potichu ignorovať zastaraný názov

Vytvorte znovupoužiteľný profil z predvoľby

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;

Použite MergePreflightProfiles na spojenie predvoľby s názvami špecifickými pre projekt Použite DiffPreflightProfiles na kontrolu odchýlok profilu pred aktualizáciou zdieľaného konfiguračného súboru

Archive the report with the PDF

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

Cesta s vložením textu pridá čitateľný blok komentárov za posledný EOF marker Cesta XMP pridá payload v tvare RDF pre archivačné workflow, ktoré prehľadávajú metadata pakety

Validate an embedded report

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áva vložený odtlačok s novým preflight behom nad zdrojovými bajtmi Pomocník diff je orientovaný na riadky a je ladený pre preflight reporty HotPDF

Spustite konzervatívnu opravovaciu pasáž

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

Pomocník opravy zámerne zostáva úzky Spracúva trailing bajty za posledným EOF markerom a chýbajúce EOF markery, ale neobnovuje cross-reference tabuľky ani neprepisuje prúdy

Aggregate many reports

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

Agregovaný výstup uvádza jeden stavový riadok na každé PDF a súčty za spracované reporty, chyby a varovania Hodí sa vtedy, keď pipeline potrebuje jedno zhrnutie, hoci podrobné reporty sa uchovávajú po jednotlivých vstupných súboroch

Použite nástroj príkazového riadka

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 kopíruje workflow knižnice: jeden súbor alebo rekurzívny vstup z adresára, textový / JSON / HTML výstup, voliteľné heslo, voliteľný profil, zabudovanú predvoľbu, podrobný priebeh a agregované zhrnutie

Build a static dashboard

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

Ukážka dashboardu zapisuje index.html plus HTML reporty pre jednotlivé súbory Webový server netreba, takže výstup možno publikovať ako statický artefakt

Adapt to veraPDF-style JSON consumers

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

Adaptér zachováva sémantiku HotPDF a zároveň premieňa zlyhania na známy štruktúrovaný výsledok validácie pre nástroje, ktoré už spracúvajú JSON v štýle veraPDF

Related Topics