|
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
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 des parties du document : GTS_PDFVTVersion XMP sous forme de texte d’élément ou d’attribut RDF, correspondance de la date de modification, marqueur de base PDF/X, intent de sortie, DPartRoot, DPartRootNode, NodeNameList et couverture DPart au niveau de la 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 du profil 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’intégration textuelle ajoute un bloc de commentaires lisible après le dernier marqueur EOF. Le chemin XMP ajoute une charge utile de forme RDF pour les flux d’archivage qui analysent des 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 préflight fraîche sur les octets source. L’aide de diff est orientée ligne et adaptée aux rapports de préflight 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;
L’aide de réparation reste volontairement étroite. Elle traite les octets résiduels après le dernier marqueur EOF et les marqueurs EOF manquants, mais ne reconstruit pas les tables de références croisées et ne réécrit pas 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
Le CLI reflète le flux de travail de la bibliothèque : une entrée de fichier unique ou de répertoire récursif, une sortie texte / JSON / HTML, un mot de passe facultatif, un profil facultatif, un préréglage intégré, une progression détaillée et un 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, donc la sortie peut être publiée comme 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 transformant les échecs en une structure de résultat de validation familière pour les outils qui consomment déjà un JSON de type veraPDF
Sujets connexes
|