|
Preflight-Kochbuch
Dieses Cookbook gruppiert die Preflight-APIs und -Demos in aufgabenorientierte Rezepte; verwenden Sie die API-Referenz, wenn Sie genaue Signaturen benötigen; verwenden Sie diese Seite, wenn Sie einen funktionierenden Pfad für eine Anwendung, ein Build-Skript oder einen CI-Job benötigen
Wählen Sie ein Ausgabeformat
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;
Die Textausgabe ist byte-stabil und diff-freundlich; JSON eignet sich für die Pipeline-Aufnahme; HTML is in sich geschlossen und kann direkt geöffnet oder als CI-Artefakt gespeichert werden; CSV verwendet stabile Spalten für Tabellenkalkulationen und Batch-Berichts-Workflows
PDF/VT-Dokumente validieren
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;
Der PDF/VT-Bericht konzentriert sich auf die ISO 16612-2-Identifikation und die Struktur der Dokumentteile: XMP-Eintrag GTS_PDFVTVersion als Elementtext oder in Form eines RDF-Attributs, Abgleich des Änderungsdatums, PDF/X-Basismarkierung, OutputIntent, DPartRoot, DPartRootNode, NodeNameList und seitenbezogene DPart-Abdeckung
Ein Profil anwenden
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;
Profile unterdrücken benannte Prüfungen, Warnungen oder alle Hinweise; verwenden Sie ValidatePreflightProfile vor dem Anwenden eines vom Benutzer verfassten Profils, wenn ein sicheres Fehlschlagen (failing closed) wichtiger ist als das stille Ignorieren eines veralteten Namens
Erstellen Sie ein wiederverwendbares Profil aus einer Voreinstellung
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;
Verwenden Sie MergePreflightProfiles, um eine Voreinstellung mit projektspezifischen Namen zu kombinieren; verwenden Sie DiffPreflightProfiles, um die Profilabweichung vor dem Aktualisieren einer gemeinsam genutzten Konfigurationsdatei zu überprüfen
Archivieren Sie den Bericht zusammen mit der PDF
PDF.EmbedPreflightReportInPDF('Input.pdf', 'Input-with-report.pdf');
PDF.EmbedPreflightReportAsXMP('Input.pdf', 'Input-with-xmp-report.pdf');
Der Text-Einbettungspfad hängt einen lesbaren Kommentarblock nach der endgültigen EOF-Markierung an; der XMP-Pfad hängt eine RDF-förmige Nutzlast für Archivierungs-Workflows an, die Metadatenpakete scannen
Einen eingebetteten Bericht validieren
var
OriginalReport: AnsiString;
CurrentReport: AnsiString;
begin
if not PDF.LoadAndValidatePreflightReport(
'Input-with-report.pdf', OriginalReport, CurrentReport) then
WriteLn(string(PDF.ComparePreflightReports(OriginalReport, CurrentReport)));
end;
Der Validierungspfad vergleicht den eingebetteten Fingerabdruck mit einem neuen Preflight-Durchlauf über die Quellbytes; das Diff-Hilfsmittel ist zeilenorientiert und auf HotPDF-Preflight-Berichte abgestimmt
Einen konservativen Reparaturlauf ausführen
var
RepairsApplied: AnsiString;
begin
if PDF.RepairPDFFromPreflightReport(
'Broken.pdf', 'Broken-repaired.pdf', RepairsApplied) then
WriteLn(string(RepairsApplied));
end;
Das Reparatur-Hilfsmittel bleibt bewusst schmal gehalten; es behandelt nachfolgende Bytes nach der endgültigen EOF-Markierung und fehlende EOF-Markierungen, baut jedoch keine Kreuzverweistabellen neu auf und schreibt keine Streams neu
Viele Berichte aggregieren
Reports[0] := PDF.CreatePreflightReport('A.pdf');
Reports[1] := PDF.CreatePreflightReport('B.pdf');
Summary := PDF.AggregatePreflightReports(Reports);
Die aggregierte Ausgabe listet eine Statuszeile pro PDF sowie Summen für verarbeitete Berichte, Fehler und Warnungen auf; dies ist nützlich, wenn eine Pipeline eine Zusammenfassung benötigt, obwohl detaillierte Berichte pro Eingabedatei aufbewahrt werden
Verwenden Sie das Befehlszeilen-Tool
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
Die CLI spiegelt den Bibliotheks-Workflow wider: Eingabe einer Datei oder eines rekursiven Verzeichnisses, Text- / JSON- / HTML-Ausgabe, optionales Passwort, optionales Profil, integrierte Voreinstellung, ausführlicher Fortschritt und aggregierte Zusammenfassung
Ein statisches Dashboard erstellen
PreflightDashboard C:\Archive C:\Archive\preflight-dashboard
Die Dashboard-Demo schreibt eine index.html sowie HTML-Berichte pro Datei; es ist kein Webserver erforderlich, sodass die Ausgabe als statisches Artefakt veröffentlicht werden kann
An veraPDF-style JSON-Konsumenten anpassen
Report := PDF.CreatePreflightReport('Input.pdf');
JSON := PDF.ConvertPreflightReportToVeraPDFStyle(Report);
Der Adapter behält die HotPDF-Semantik bei, während er Fehler in eine vertraute Validierungsergebnis-Struktur für Tools umformt, die bereits veraPDF-ähnliches JSON konsumieren
Verwandte Themen
|