Report di preflight

Conformità, Ispezione documento, Automazione

Selezione del profilo reader PDF/UA

I controlli PDF/UA selezionano la parte 2 quando XMP identifica pdfuaid:part=2 e altrimenti mantengono i controlli della parte 1; i controlli legacy PDF/UA-1 descritti in questa pagina non sono automaticamente applicabili alla parte 2

Il profilo PDF/UA-2 implementa i controlli essenziali di identificazione, spazio dei nomi, ruoli e struttura; i report strutturati usano PDF/UA-2 e ISO 14289-2 e dichiarano fullCertification=false e l'ambito non verificato

Usa CheckFilePDFUACompliance oppure RunPDFUAValidationPipelineTask per imporre una parte target e GetPDFUAReadValidationCoverageJSON per esaminare i limiti delle capacità

Panoramica

PDF Library for Delphi può eseguire i propri controlli integrati di conformità dei file PDF/A e PDF/UA-1 su un PDF esterno e trasformare il risultato in un rapporto riutilizzabile. Usa le API dei rapporti quando un'applicazione o una pipeline di build necessita della stessa diagnostica di CheckFileCompliance, ma non vuole gestire direttamente gli handle degli elenchi di stringhe.

La pipeline dei rapporti è intenzionalmente suddivisa in livelli. CheckFileCompliance resta l'API di basso livello che restituisce handle di elenchi di problemi. CreatePreflightReport formatta i controlli selezionati in un corpo stabile di testo semplice. CreatePreflightReportEx converte lo stesso rapporto di testo in testo, JSON, HTML o CSV, affinché tutti i formati condividano lo stesso stato positivo/negativo e lo stesso numero di problemi.

API della libreria

CheckFileComplianceEsegue un controllo di conformità selezionato su un file PDF e restituisce 0 in caso di esito positivo oppure uno StringListID contenente le righe dei problemi.
CreatePreflightReportEsegue i controlli PDF/A, PDF/UA-1 o entrambi e restituisce un rapporto in testo semplice con metadati d'intestazione, una sezione per ogni controllo e un riepilogo finale.
CreatePreflightReportExRestituisce lo stesso rapporto in formato testo (0), JSON (1), HTML (2) o CSV (3). I valori di formato sconosciuti usano il testo come ripiego.
SavePreflightReportScrive il rapporto in testo semplice come UTF-8 e crea la directory padre quando necessario.
SavePreflightReportExScrive un rapporto di testo, JSON, HTML o CSV come UTF-8 e crea la directory padre quando necessario.
ComparePreflightReportsConfronta due rapporti in testo semplice, ignora le righe volatili del timestamp Generated: e restituisce differenze sintetiche solo quando cambia il contenuto stabile.

Contratto di formato

TextIl corpo canonico del rapporto. Contiene Generated, Input, Checks, Issue mode, una sezione per ogni controllo selezionato e un blocco Summary con Total issues e Result.
JSONUn singolo oggetto con title, generated, input, checks, issueMode, sections e summary. Ogni sezione contiene un nome, uno stato e un array di stringhe dei problemi.
HTMLUn documento HTML UTF-8 autonomo. Il rapporto di testo viene sottoposto a escape HTML e visualizzato in un blocco preformattato, così il contenuto del rapporto è visibile senza essere interpretato come markup.
CSVLe righe usano le colonne fisse kind,section,status,code,message. Le righe meta contengono i campi dell'intestazione, le righe check lo stato PASS/FAIL della sezione, le righe issue separano i codici numerici dei problemi dai messaggi e le righe summary contengono i totali finali.

Selezione della conformità

Le API dei rapporti usano una maschera di bit per ComplianceTests: 1 seleziona PDF/A, 2 seleziona PDF/UA-1 e 3 li seleziona entrambi. Anche il valore 0 esegue entrambi i controlli. Attualmente Options usa il bit 1 per interrompere ciascun controllo selezionato dopo il primo problema; passa 0 per raccogliere tutti i problemi segnalati.

Demo da riga di comando

La demo per console Delphi PreflightReport mostra il flusso dei rapporti senza aggiungere un'interfaccia specifica dell'applicazione. Può convalidare un singolo PDF, generare output formattato, confrontare un nuovo rapporto di testo con una baseline oppure elaborare in batch una directory.

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

La modalità per singolo file restituisce il codice di uscita 0 quando i controlli selezionati non segnalano problemi, 1 per errori della riga di comando o di esecuzione e 2 quando viene segnalato un problema o il confronto con la baseline rileva differenze. La modalità directory scrive un file <basename>.preflight.<ext> per ogni PDF e aggiunge un file preflight-summary.csv con percorso sorgente, stato positivo/negativo, numero di problemi e percorso del rapporto.

Note di confronto

ComparePreflightReports è definito per rapporti in testo semplice. Deve ricevere il rapporto di testo della baseline e quello appena generato, anche quando l'output destinato all'utente della stessa esecuzione è JSON, HTML o CSV. Il comparatore normalizza le righe Generated: perché i timestamp cambiano a ogni esecuzione; tutte le altre righe stabili vengono confrontate in ordine con una piccola finestra di avanzamento per mantenere leggibili le differenze di inserimento ed eliminazione.

Vedi anche

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