Preflight-kookboek

Dit kookboek groepeert de preflight-API's en demo's in taakgerichte recepten. Gebruik de API-referentie wanneer je exacte handtekeningen nodig hebt; gebruik deze pagina wanneer je een werkend pad nodig hebt voor een toepassing, buildscript of CI-job

Kies een uitvoerformaat

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;

Tekstuitvoer is byte-stabiel en diff-vriendelijk. JSON is geschikt voor pipeline-invoer. HTML is zelfvoorzienend en kan direct worden geopend of als CI-artifact worden opgeslagen. CSV gebruikt stabiele kolommen voor spreadsheet- en batchrapport-workflows

PDF/VT-documenten valideren

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;

Het PDF/VT-rapport richt zich op de identificatie en documentdeelstructuur van ISO 16612-2: XMP GTS_PDFVTVersion in elementtekst of RDF-attribuutvorm, overeenkomst van wijzigingsdatum, PDF/X-basismarkering, output intent, DPartRoot, DPartRootNode, NodeNameList en DPart-dekking op paginaniveau

Een profiel toepassen

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;

Profielen onderdrukken benoemde controles, waarschuwingen of alle hints. Gebruik ValidatePreflightProfile vóór het toepassen van een door de gebruiker gemaakt profiel wanneer fail-closed belangrijker is dan een verouderde naam stilzwijgend negeren

Maak een herbruikbaar profiel op basis van een 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;

Gebruik MergePreflightProfiles om een preset te combineren met projectspecifieke namen. Gebruik DiffPreflightProfiles om profielafwijkingen te bekijken vóór het bijwerken van een gedeeld configuratiebestand

Archiveer het rapport samen met de PDF

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

Het pad voor tekstinsluiting voegt een leesbaar commentaarblok toe na de laatste EOF-markering. Het XMP-pad voegt een RDF-vormige payload toe voor archiverings- workflows die metadata-pakketten scannen

Een ingebed rapport valideren

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

Het validatiepad vergelijkt de ingebedde vingerafdruk met een verse preflight-run over de bronbytes. De diff-helper is regelgeoriënteerd en afgestemd op HotPDF-preflightrapporten

Voer een conservatieve herstelpass uit

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

De repair-helper blijft bewust beperkt. Hij verwerkt extra bytes na de laatste EOF-markering en ontbrekende EOF-markeringen, maar bouwt cross-reference-tabellen niet opnieuw op en herschrijft streams niet

Veel rapporten aggregeren

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

De aggregaatuitvoer geeft één statusregel per PDF en totalen voor verwerkte rapporten, fouten en waarschuwingen. Dit is handig wanneer een pipeline één samenvatting nodig heeft terwijl gedetailleerde rapporten per invoerbestand worden bewaard

Gebruik de commandoregeltool

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

De CLI spiegelt de bibliotheekworkflow: één bestand of recursieve mapinvoer, tekst / JSON / HTML-uitvoer, optioneel wachtwoord, optioneel profiel, ingebouwde preset, uitgebreide voortgang en aggregaatsamenvatting

Bouw een statisch dashboard

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

De dashboarddemo schrijft een index.html plus HTML-rapporten per bestand. Er is geen webserver nodig, dus de uitvoer kan als statisch artifact worden gepubliceerd

Aanpassen aan veraPDF-achtige JSON-consumenten

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

De adapter behoudt de HotPDF-semantiek terwijl fouten worden omgevormd tot een vertrouwde validatieresultaatstructuur voor tools die al veraPDF-achtige JSON gebruiken

Related Topics