Rapports de prévalidation

Conformité, Inspection de document, Automatisation

Sélection du profil de lecteur PDF/UA

Les contrôles PDF/UA sélectionnent la partie 2 lorsque le XMP identifie pdfuaid:part=2 et conservent sinon les contrôles de la partie 1 ; les contrôles PDF/UA-1 historiques décrits ici ne sont nullement implicites pour la partie 2

Le profil PDF/UA-2 implémente les contrôles de base d’identification, d’espaces de noms, de rôles et de structure ; les rapports structurés utilisent PDF/UA-2 et ISO 14289-2 et indiquent fullCertification=false ainsi que le périmètre non vérifié

Utilisez CheckFilePDFUACompliance ou RunPDFUAValidationPipelineTask pour forcer une partie cible, et GetPDFUAReadValidationCoverageJSON pour inspecter les limites de capacités

PDF Library for Delphi peut exécuter ses contrôles intégrés de conformité de fichier PDF/A et PDF/UA-1 sur un PDF externe et convertir le résultat en rapport réutilisable. Utilisez les API de rapport lorsqu’une application ou un pipeline de construction a besoin des mêmes diagnostics que CheckFileCompliance, sans vouloir gérer directement les handles de listes de chaînes

Le pipeline de rapports est volontairement organisé en couches. CheckFileCompliance reste l’API de bas niveau qui renvoie des handles de listes de problèmes. CreatePreflightReport met en forme les contrôles sélectionnés dans un corps stable en texte brut. CreatePreflightReportEx convertit ce même rapport texte au format texte, JSON, HTML ou CSV afin que tous les formats partagent le même état de réussite ou d’échec et le même nombre de problèmes

API de la bibliothèque

CheckFileComplianceExécute un contrôle de conformité sélectionné sur un fichier PDF et renvoie 0 en cas de réussite, ou un StringListID contenant les lignes de problèmes.
CreatePreflightReportExécute les contrôles PDF/A, PDF/UA-1 ou les deux, puis renvoie un rapport en texte brut comprenant les métadonnées d’en-tête, une section par contrôle et un récapitulatif final.
CreatePreflightReportExRenvoie le même rapport au format texte (0), JSON (1), HTML (2) ou CSV (3). Les valeurs de format inconnues utilisent le texte par défaut.
SavePreflightReportÉcrit le rapport en texte brut au format UTF-8 et crée le répertoire parent si nécessaire.
SavePreflightReportExÉcrit un rapport texte, JSON, HTML ou CSV au format UTF-8 et crée le répertoire parent si nécessaire.
ComparePreflightReportsCompare deux rapports en texte brut, ignore les lignes d’horodatage variables Generated: et ne renvoie une différence compacte que lorsque le contenu stable a changé.

Contrat de format

TextCorps canonique du rapport. Il contient Generated, Input, Checks, Issue mode, une section pour chaque contrôle sélectionné et un bloc Summary avec Total issues et Result.
JSONObjet unique comprenant title, generated, input, checks, issueMode, sections et summary. Chaque section possède un nom, un état et un tableau de chaînes décrivant les problèmes.
HTMLDocument HTML UTF-8 autonome. Le rapport texte est échappé pour HTML et affiché dans un bloc préformaté, de sorte que son contenu reste visible sans être interprété comme du balisage.
CSVLes lignes utilisent les colonnes fixes kind,section,status,code,message. Les lignes meta contiennent les champs d’en-tête, les lignes check l’état PASS/FAIL de la section, les lignes issue séparent les codes numériques des messages et les lignes summary contiennent les totaux finaux.

Sélection de conformité

Les API de rapport utilisent un masque de bits pour ComplianceTests : 1 sélectionne PDF/A, 2 sélectionne PDF/UA-1 et 3 sélectionne les deux. La valeur 0 exécute également les deux contrôles. Options utilise actuellement le bit 1 pour arrêter chaque contrôle sélectionné après son premier problème ; transmettez 0 pour recueillir tous les problèmes signalés

Démo en ligne de commande

La démo console Delphi PreflightReport illustre le flux de production des rapports sans ajouter d’interface utilisateur propre à l’application. Elle peut valider un PDF unique, générer une sortie mise en forme, comparer un nouveau rapport texte à une référence ou traiter un répertoire par lots

PreflightReport.exe --input "C:\PDFs\invoice.pdf" --output "C:\Reports\invoice.preflight.txt"
PreflightReport.exe --input "C:\PDFs\invoice.pdf" --output "C:\Reports\invoice.preflight.json" --json
PreflightReport.exe --input "C:\PDFs\invoice.pdf" --output "C:\Reports\invoice.preflight.csv" --format csv
PreflightReport.exe --input "C:\PDFs\invoice.pdf" --output "C:\Reports\invoice.preflight.txt" --compare "C:\Baselines\invoice.preflight.txt"
PreflightReport.exe --input-dir "C:\PDFs" --output-dir "C:\Reports" --recursive --format html

Le mode fichier unique renvoie le code de sortie 0 lorsque les contrôles sélectionnés ne signalent aucun problème, 1 pour les erreurs de ligne de commande ou d’exécution et 2 lorsqu’un problème est signalé ou que la comparaison avec la référence diffère. Le mode répertoire écrit un fichier <basename>.preflight.<ext> par PDF et ajoute un fichier preflight-summary.csv contenant le chemin source, l’état de réussite ou d’échec, le nombre de problèmes et le chemin du rapport

Notes de comparaison

ComparePreflightReports est défini pour les rapports en texte brut. Il faut lui fournir le rapport texte de référence et le rapport texte nouvellement généré, même lorsque la sortie destinée aux utilisateurs de cette exécution est au format JSON, HTML ou CSV. Le comparateur normalise les lignes Generated:, car les horodatages changent à chaque exécution ; toutes les autres lignes stables sont comparées dans l’ordre avec une petite fenêtre d’anticipation afin que les différences d’insertion et de suppression restent lisibles

Voir aussi

CheckFileCompliance, CreatePreflightReport, CreatePreflightReportEx, SavePreflightReport, SavePreflightReportEx, ComparePreflightReports, GetPDFUADiagnostics