|
Recettes de préflight
Ce cahier de recettes regroupe les API et les démonstrations de préflight en
recettes orientées tâche. Utilisez la référence API lorsque vous avez besoin des
signatures exactes; utilisez cette page lorsque vous cherchez une voie praticable
pour une application, un script de build ou un job CI
Choisir un format de sortie
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;
La sortie texte est stable octet à octet et se prête bien aux diffs. JSON convient à
l’ingestion dans des pipelines. HTML est autonome et peut être ouvert directement ou
ruleId namespacé plus une location
structurée avec portée logique, chemin, clé PDF et coordonnées exactes
d’objet, de page ou d’octet lorsqu’elles sont disponibles. Le HTML affiche
enregistré comme artefact CI. CSV utilise des colonnes stables pour les workflows de
tableur et de rapports par lot
Valider des documents 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;
Le rapport PDF/VT se concentre sur l’identification ISO 16612-2 et la
structure de parties de document : GTS_PDFVTVersion XMP sous forme
de texte d’élément ou d’attribut RDF, correspondance des dates de modification,
marqueur de base PDF/X, output intent, DPartRoot,
DPartRootNode, NodeNameList et couverture
DPart au niveau page.
Appliquer un profil
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;
Les profils désactivent des vérifications nommées, des avertissements ou tous les
conseils. Utilisez ValidatePreflightProfile avant d’appliquer un profil
rédigé par l’utilisateur lorsque l’échec contrôlé est plus important que l’ignorance
silencieuse d’un nom obsolète
Créer un profil réutilisable à partir d’un préréglage
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;
Utilisez MergePreflightProfiles pour combiner un préréglage
avec des noms spécifiques au projet. Utilisez DiffPreflightProfiles
pour examiner la dérive des profils avant de mettre à jour un fichier de configuration partagé.
Archiver le rapport avec le PDF
PDF.EmbedPreflightReportInPDF('Input.pdf', 'Input-with-report.pdf');
PDF.EmbedPreflightReportAsXMP('Input.pdf', 'Input-with-xmp-report.pdf');
Le chemin d’embed texte ajoute un bloc de commentaire lisible après le
marqueur EOF final. Le chemin XMP ajoute une charge utile en forme RDF pour
les flux d’archivage qui scannent les paquets de métadonnées.
Valider un rapport incorporé
var
OriginalReport: AnsiString;
CurrentReport: AnsiString;
begin
if not PDF.LoadAndValidatePreflightReport(
'Input-with-report.pdf', OriginalReport, CurrentReport) then
WriteLn(string(PDF.ComparePreflightReports(OriginalReport, CurrentReport)));
end;
Le chemin de validation compare l’empreinte embarquée à une exécution
de preflight fraîche sur les octets sources. Le helper de diff est orienté
ligne et calibré pour les rapports preflight HotPDF.
Exécuter une passe de réparation conservatrice
var
RepairsApplied: AnsiString;
begin
if PDF.RepairPDFFromPreflightReport(
'Broken.pdf', 'Broken-repaired.pdf', RepairsApplied) then
WriteLn(string(RepairsApplied));
end;
Le helper de réparation reste volontairement étroit. Il gère les octets
résiduels après le marqueur EOF final et les marqueurs EOF manquants, mais ne
reconstruit pas les tables de références croisées ni les flux.
Agréger plusieurs rapports
Reports[0] := PDF.CreatePreflightReport('A.pdf');
Reports[1] := PDF.CreatePreflightReport('B.pdf');
Summary := PDF.AggregatePreflightReports(Reports);
La sortie agrégée affiche une ligne d’état par PDF ainsi que les totaux des rapports
traités, des échecs et des avertissements. Elle est utile lorsqu’un pipeline a besoin
d’un seul récapitulatif même si les rapports détaillés sont conservés par fichier
d’entrée
Utiliser l’outil en ligne de commande
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
La CLI reflète le flux de travail de la bibliothèque : entrée fichier ou
répertoire récursif, sortie texte / JSON / HTML, mot de passe optionnel,
profil optionnel, préréglage intégré, progression verbeuse et résumé agrégé.
Créer un tableau de bord statique
PreflightDashboard C:\Archive C:\Archive\preflight-dashboard
La démo dashboard écrit un index.html plus des rapports
HTML par fichier. Aucun serveur web n’est requis, la sortie peut donc être
publiée comme un artefact statique.
S’adapter aux consommateurs JSON de type veraPDF
Report := PDF.CreatePreflightReport('Input.pdf');
JSON := PDF.ConvertPreflightReportToVeraPDFStyle(Report);
L’adaptateur conserve la sémantique HotPDF tout en reformulant les échecs
dans une structure de résultats de validation familière pour les outils qui
consomment déjà un JSON façon veraPDF. Ses violations retiennent les mêmes valeurs
stables de ruleId et de location structurée que le
rapport JSON natif
Sujets connexes
|