|
Preflight Cookbook
Dit kookboek groepeert de preflight-API's en demo's in taakgerichte recepten. Gebruik de API-referentie als je exacte signaturen nodig hebt; gebruik deze pagina als 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-ingest en geeft elke check, hint en waarschuwing een stabiele ruleId met namespace plus een gestructureerde location met logische scope, pad, PDF-sleutel en exacte object-, pagina- of bytecoördinaten wanneer beschikbaar. HTML toont dezelfde identificatoren en locaties, terwijl CSV zijn stabiele kolommen behoudt voor spreadsheet- en batchrapport-workflows
Valideer PDF/VT-documenten
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 ISO 16612-2-identificatie en documentpart-structuur: XMP GTS_PDFVTVersion als elementtekst of RDF-attribuut, matching van de wijzigingsdatum, PDF/X-basiskenmerk, output intent, DPartRoot, DPartRootNode, NodeNameList en dekking van DPart op paginaniveau.
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;
Profielen onderdrukken benoemde checks, waarschuwingen of alle hints. Gebruik ValidatePreflightProfile voordat je een door de gebruiker gemaakt profiel toepast wanneer gesloten falen belangrijker is dan een verouderde naam stilletjes te negeren.
Maak een herbruikbaar profiel vanuit 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 voordat je een gedeeld configuratiebestand bijwerkt.
Archiveer het rapport bij de PDF
PDF.EmbedPreflightReportInPDF('Input.pdf', 'Input-with-report.pdf'); PDF.EmbedPreflightReportAsXMP('Input.pdf', 'Input-with-xmp-report.pdf');
Het tekst-embedpad voegt een leesbaar commentaarblok toe na de laatste EOF-marker. Het XMP-pad voegt een RDF-vormige payload toe voor archiefworkflows die metadatapakketten scannen.
Valideer een ingebed rapport
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 vingerprint met een verse preflight-ronde over de bronbytes. De diff-helper werkt op regelniveau en is afgestemd op HotPDF-preflightrapporten.
Draai een conservatieve reparatieronde
var RepairsApplied: AnsiString; begin if PDF.RepairPDFFromPreflightReport( 'Broken.pdf', 'Broken-repaired.pdf', RepairsApplied) then WriteLn(string(RepairsApplied)); end;
De reparatiehelper blijft bewust beperkt. Hij pakt bytes na de laatste EOF-marker en ontbrekende EOF-markers op, maar bouwt geen kruisverwijzingstabellen opnieuw en herschrijft geen streams.
Aggregeer veel rapporten
Reports[0] := PDF.CreatePreflightReport('A.pdf'); Reports[1] := PDF.CreatePreflightReport('B.pdf'); Summary := PDF.AggregatePreflightReports(Reports);
De geaggregeerde uitvoer somt één statusregel per PDF op plus totalen voor verwerkte rapporten, fouten en waarschuwingen. Handig wanneer een pijplijn één samenvatting nodig heeft, ook al worden gedetailleerde rapporten per invoerbestand bewaard.
Gebruik het commandline-hulpmiddel
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 directory als invoer, tekst-/JSON-/HTML-uitvoer, optioneel wachtwoord, optioneel profiel, ingebouwde preset, uitgebreide voortgang en geaggregeerde samenvatting.
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 artefact worden gepubliceerd.
Sluit aan op veraPDF-achtige JSON-consumers
Report := PDF.CreatePreflightReport('Input.pdf'); JSON := PDF.ConvertPreflightReportToVeraPDFStyle(Report);
De adapter behoudt HotPDF-semantiek terwijl hij fouten herscheupt naar een vertrouwde validatieresultaatstructuur voor tooling die al veraPDF-achtige JSON consumeert. De violations behouden dezelfde stabiele ruleId en gestructureerde location-waarden als het native JSON-rapport
Related Topics
|