Preflight Cookbook

Ta kuharska knjiga združuje API-je in predstavitve za preflight v nalogam usmerjene recepte. Uporabite referenco API-jev, ko potrebujete natančne podpise; uporabite to stran, ko potrebujete delujočo pot za aplikacijo, gradbeni skript ali opravilo CI

Izbira izhodne oblike

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;

Besedilni izhod je bajtno stabilen in prijazen do primerjav. JSON je primeren za zajem v cevovod. HTML je samozadosten in ga je mogoče odpreti neposredno ali shraniti kot artefakt CI. CSV uporablja stabilne stolpce za preglednice in poteke dela s paketnimi poročili

Preverjanje dokumentov 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;

Poročilo PDF/VT se osredotoča na identifikacijo ISO 16612-2 in strukturo dokumentnih delov: XMP GTS_PDFVTVersion v obliki elementnega besedila ali atributa RDF, ujemanje datuma spremembe, osnovni marker PDF/X, namen izpisa, DPartRoot, DPartRootNode, NodeNameList in pokritost DPart na ravni strani

Uporaba profila

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;

Profili izklopijo poimenovane preglede, opozorila ali vse namige. Pred uporabo uporabniško pripravljenega profila uporabite ValidatePreflightProfile, kadar je strogo zavrnitev pomembnejša od tihega prezrtja zastarelega imena

Ustvari ponovno uporabni profil iz prednastavitve

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;

Uporabite MergePreflightProfiles za združitev prednastavitve s projektnimi imeni. Uporabite DiffPreflightProfiles za pregled odmika profila pred posodobitvijo skupne konfiguracijske datoteke

Arhiviranje poročila skupaj s PDF

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

Pot vdelave besedila doda berljiv blok komentarja za končnim markerjem EOF. Pot XMP doda koristni tovor RDF za arhivske poteke, ki pregledujejo pakete metapodatkov

Preverjanje vdelanega poročila

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

Pot preverjanja primerja vdelani prstni odtis z novim zagonom preflight nad izvornimi bajti. Pomožni diff je usmerjen po vrsticah in prilagojen poročilom preflight v HotPDF

Zaženi konzervativen popravljalni prehod

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

Pomožni popravek ostaja namerno ozek. Obvladuje zadnje bajte za končnim markerjem EOF in manjkajoče markerje EOF, vendar ne obnavlja tabel navzkrižnih sklicev ali prepisuje tokov

Združevanje več poročil

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

Združeni izhod navede eno vrstico stanja na PDF in vsote za obdelana poročila, napake in opozorila. Uporaben je, kadar cevovod potrebuje en povzetek, čeprav so podrobna poročila shranjena posebej za vsako vhodno datoteko

Uporabi orodje ukazne vrstice

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

Ukazna vrstica zrcali knjižnični potek: en vhodni file ali rekurziven vnos imenika, izhod v obliki besedila / JSON / HTML, izbirno geslo, izbirni profil, vgrajena prednastavitev, podroben napredek in združen povzetek

Sestavi statično nadzorno ploščo

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

Predstavitev nadzorne plošče zapiše index.html in HTML poročila za vsako datoteko. Spletni strežnik ni potreben, zato je izhod mogoče objaviti kot statični artefakt

Prilagoditev porabnikom JSON v slogu veraPDF

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

Adapter ohrani semantiko HotPDF, hkrati pa napake preoblikuje v znano strukturo rezultatov preverjanja za orodja, ki že porabljajo JSON, podoben veraPDF

Povezane teme