PDF caricato a PDF/A-4 con preservazione di testo e vettori

HPDFArchivalConversion offre un profilo di preservazione per documenti caricati i cui font visibili, spazi colore e risorse di rendering possono soddisfare PDF/A-4 senza sostituire il contenuto delle pagine

Il convertitore conserva gli operatori di testo originali, i path vettoriali, le immagini, la geometria di pagina e i layer di testo OCR esistenti, appiattisce gli appearance visibili normali di annotazioni e widget in Form XObjects vettoriali, ripara i problemi di metadati e struttura supportati e valida il risultato serializzato prima della pubblicazione

Questo profilo non rasterizza mai una pagina: RasterizedPages resta zero, anche quando l'OCR renderizza una bitmap temporanea di riconoscimento e accoda testo invisibile ricercabile

L'accettazione runtime copre Delphi Win32 e Win64; FPC Windows compila l'implementazione da sorgenti fresche, e gli header pubblici generati compilano con C++Builder Win32 e Win64x

Punti di ingresso

function HPDFConvertLoadedToPDFA4Preserving(Source: THotPDF;
  Destination: TStream; const SRGBProfile: TBytes;
  const Options: THPDFArchivalPreservationOptions;
  out Report: THPDFArchivalPreservationReport): Boolean;

function HPDFConvertLoadedToPDFA4PreservingFile(Source: THotPDF;
  const TargetFileName: string; const SRGBProfile: TBytes;
  const Options: THPDFArchivalPreservationOptions;
  out Report: THPDFArchivalPreservationReport): Boolean;

Caricate prima la sorgente, tenete vivo ogni stream di input di proprietà del chiamante e date al convertitore accesso esclusivo al documento durante l'operazione

Options := THPDFArchivalPreservationOptions.Default;
if not HPDFConvertLoadedToPDFA4PreservingFile(Source, TargetFileName,
  SRGBProfile, Options, Report) then
  raise Exception.Create(Report.Conversion.Diagnostic);

Prova di preservazione

Il convertitore scatta uno snapshot del grafo sorgente correntemente modificato sotto una transazione del grafo e riporta la sorgente indietro dopo la serializzazione, poi esegue tutto il lavoro di conversione su un clone caricato indipendente

Gli stream di contenuto di pagina decodificati originali devono restare byte-identici e raggiungibili dalle pagine originali nel loro ordine originale dopo il reload dell'output

Gli alberi di risorse di pagina e gli alberi di risorse degli appearance normali trattenuti vengono attraversati con limiti su oggetti e ricorsione; i programmi font incorporati, le mappe ToUnicode, le immagini, i profili ICC e i Form XObjects annidati conservano i propri payload codificati originali, verificati con SHA-256 streaming e controllati per la raggiungibilità continuata dalle pagine di output

Gli stream di contenuto indipendenti racchiudono gli operatori originali di pagina con guardie del graphics state e contengono gli operatori appearance accodati, evitando il percorso nativo di append a stream singolo che riscriverebbe uno stream di contenuto originale

TextAndVectorContentPreserved diventa true solo dopo che validazione dell'output nativo e controlli di preservazione sono passati; viene azzerato quando la conversione o la pubblicazione su file fallisce

Gestione degli appearance

Fornire un appearance normale esistente supporta testo arbitrario con font incorporato già rappresentato correttamente in quell'appearance, incluso Unicode; il convertitore conserva quell'appearance invece di sostituire un font di sistema

Il flattening rimuove l'interazione delle annotazioni, i campi editabili, i calcoli, le azioni e i campi firma mantenendo gli appearance visibili; ogni annotazione coinvolta e ogni appearance sintetizzato produce una entry di perdita con la propria pagina sorgente, indice dell'annotazione e numero di oggetto quando disponibili

Colore, font e perdite esplicite

L'argomento ICC richiesto è un profilo sRGB matrix/TRC accettato dal validatore archivistico esistente; ogni profilo di output esistente deve avere esattamente gli stessi byte decodificati del profilo fornito, altrimenti la conversione viene rifiutata per evitare di reinterpretare la condizione di output esistente

Il convertitore aggiunge un output intent sRGB PDF/A solo quando necessario, sincronizza il serializzatore reale a un header PDF 2.0 e invoca la riparazione limitata di metadati e struttura base PDF/A-4

Non incorpora programmi font visibili mancanti, non ricodifica il testo originale, non ricolora operatori DeviceCMYK, non sostituisce una condizione di output esistente e non appiattisce la trasparenza di pagina in una bitmap; i findings nativi di preflight irrisolti rifiutano la pubblicazione

Le sorgenti cifrate devono essere decifrate prima della conversione; i campi firma richiedono AllowSignatureInvalidation esplicito, e i file incorporati esistenti richiedono RemoveEmbeddedFiles esplicito perché questo profilo punta al PDF/A-4 base

Losses riporta anche l'invalidazione delle firme, la rimozione dei file incorporati, la rimozione dei dizionari Info legacy e la rimozione di metadati proibiti di catalogo o presentazione

XMP esistente viene trattenuto quando supportato; quando i metadati vengono generati, le informazioni supportate di titolo, autore, soggetto e parole chiave vengono trasferite, mentre i campi Info legacy arbitrari non hanno garanzia di sopravvivenza

OCR e budget

AddOCRToImagePages ha default false; abilitandolo si riconoscono le pagine prive di testo estraibile e si accoda testo invisibile senza sostituire il contenuto originale o i layer OCR esistenti

Impostate OCREngine a un engine dell'applicazione o lasciatelo nil per l'engine OCR ASCII limitato integrato, la cui copertura di lingue e tipografia resta quella del profilo di riconoscimento integrato

OCROptions controlla risoluzione del riconoscimento e budget delle parole, mentre il convertitore forza skip-pages-with-text, la conservazione dei layer OCR esistenti e l'omissione di un nuovo gruppo optional-content

Limits usa THPDFArchivalConversionOptions.Default per numero di pagine, numero di oggetti, byte di output in staging, lavoro per singolo stream, lavoro cumulativo sugli stream, cancellazione e checkpoint sincroni; i limiti sui pixel raster si applicano solo quando l'OCR renderizza bitmap di riconoscimento

Gli altri default sono 1.024 entry di perdita, 1.048.576 code unit di testo estratto o atteso e 4.000.000 di token di contenuto per passata di validazione nativa

L'hashing dei payload delle risorse conteggia i byte codificati contro gli stessi budget di lavoro per stream; verifica sorgente e verifica output consumano entrambe lavoro cumulativo, quindi grandi collezioni di scansioni possono richiedere un MaxTotalDecodedBytes esplicitamente aumentato anche se la verifica delle risorse usa un buffer hash fisso di 64 KiB

I budget si applicano dopo il caricamento della sorgente e limitano separatamente snapshot e output in staging di proprietà del convertitore; configurate i limiti del loader quando accettate input non fidato

Pubblicazione e validazione

L'API su stream richiede una destinazione vuota e seekable a posizione zero e rifiuta alias della sorgente; copia i byte in staging solo dopo che reload, validazione nativa, controlli di preservazione e controlli di cancellazione sono riusciti

Un fallimento di scrittura sulla destinazione innesca un reset best-effort; uno stream custom arbitrario può rifiutare quel reset, quindi usate il punto di ingresso su file per la pubblicazione atomica su file

L'API su file sonda per alias della sorgente, crea un file temporaneo esclusivo accanto al target, ne fa il flush e sostituisce il target con MoveFileEx solo dopo che tutti i controlli sono passati; i fallimenti precedenti conservano un target esistente e rimuovono il file temporaneo

InitialValidationIssues, Repair, Conversion.ValidationIssues, dettagli OCR, conteggi stream, conteggi testo estratto e perdite esplicite restano disponibili per ispezione

La validazione nativa copre le regole PDF/A-4 supportate di HotPDF e non è una certificazione universale di PDF arbitrari; l'accettazione di regressione usa inoltre verifiche indipendenti pypdf e MuPDF più validazione veraPDF PDF/A-4 sugli artifact di appearance generati e OCR nativo

La regressione su corpus reale include guide Word e di libreria con font incorporati e una collezione di scansioni cinesi di 380 pagine, mentre un report commerciale con font non incorporati e contenuto DeviceCMYK è un caso di rifiuto esplicito

Comandi di regressione

powershell -File Tests/Delphi/Run-ArchivalPreservationTests.ps1 -Platform Win32
powershell -File Tests/Delphi/Run-ArchivalPreservationTests.ps1 -Platform Win64
python Tests/Delphi/Fixtures/ArchivalPreservation/verify_preserving_output.py
verapdf --format xml --flavour 4 Tests/Delphi/generated/ArchivalPreservation/appearance.pdf Tests/Delphi/generated/ArchivalPreservation/ocr.pdf Tests/Delphi/generated/ArchivalPreservation/native-appearance.pdf

Il runner Delphi sopprime il lancio del viewer e include sia i fixture di preservazione sia quelli di regressione raster esistenti; l'accettazione veraPDF indipendente usa l'attuale profilo di validazione PDF/A-4

Argomenti correlati

Raster archival conversion offre un profilo separato con perdita esplicita di testo e vettori originali quando il rendering nativo è supportato