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
| CheckFileCompliance | Esegue 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. |
|---|---|
| CreatePreflightReport | Esegue 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. |
| CreatePreflightReportEx | Restituisce lo stesso rapporto in formato testo (0), JSON (1), HTML (2) o CSV (3). I valori di formato sconosciuti usano il testo come ripiego. |
| SavePreflightReport | Scrive il rapporto in testo semplice come UTF-8 e crea la directory padre quando necessario. |
| SavePreflightReportEx | Scrive un rapporto di testo, JSON, HTML o CSV come UTF-8 e crea la directory padre quando necessario. |
| ComparePreflightReports | Confronta 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
| Text | Il 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. |
|---|---|
| JSON | Un 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. |
| HTML | Un 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. |
| CSV | Le 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