Conversione da PDF caricato a raster PDF/A-4

HPDFArchivalConversion crea un nuovo documento PDF/A-4 dal contenuto visibile delle pagine di un documento THotPDF caricato, usando rendering nativo rigoroso e un profilo ICC sRGB fornito dal chiamante

Ogni pagina di output contiene un'immagine raster RGB compressa lossless ai DPI richiesti, con le dimensioni visibili originali, crop, rotazione e UserUnit riportate nella geometria della pagina di output

Usate il profilo separato che preserva testo e vettori quando devono sopravvivere i font incorporati originali, gli operatori testuali, i percorsi vettoriali, le immagini, i layer OCR e gli appearance visibili di annotazioni o widget; il profilo raster non preserva quelle strutture

Punti di ingresso

function HPDFConvertLoadedToPDFA4Raster(Source: THotPDF;
  Destination: TStream; const SRGBProfile: TBytes;
  const Options: THPDFArchivalConversionOptions;
  out Report: THPDFArchivalConversionReport): Boolean;

function HPDFConvertLoadedToPDFA4RasterFile(Source: THotPDF;
  const TargetFileName: string; const SRGBProfile: TBytes;
  const Options: THPDFArchivalConversionOptions;
  out Report: THPDFArchivalConversionReport): Boolean;

Caricare prima la sorgente e mantenere vivo ogni stream di input di proprietà del chiamante finché il documento sorgente non viene distrutto

Usare il punto di ingresso su file per la pubblicazione di archiviazione ordinaria: sonda un target esistente per aliasing della sorgente prima di creare un file temporaneo esclusivo nella directory del target, valida la conversione completa, esegue il flush del file e sostituisce il target con MoveFileEx usando MOVEFILE_REPLACE_EXISTING e MOVEFILE_WRITE_THROUGH

I fallimenti di conversione, rendering, validazione, cancellation e pubblicazione conservano un file target esistente e rimuovono l'output temporaneo

Il punto di ingresso su stream richiede una destinazione vuota e seekable alla posizione zero e respinge gli alias noti dell'input tramite IsLoadedSourceStreamAlias; pubblica i byte solo dopo che l'intero output staged ha superato la validazione nativa

Un fallimento di scrittura sulla destinazione innesca un reset best-effort a stream vuoto, ma un dispositivo arbitrario o uno stream custom possono respingere il reset e conservare una scrittura parziale; usare il punto di ingresso su file quando la pubblicazione del file deve essere atomica

Opzioni e limiti delle risorse

OpzionePredefinitoSignificato
DPI150Risoluzione fisica richiesta, intervallo accettato da 36 a 1200
MaxPages1000Numero massimo di pagine sorgente caricate
MaxPixelsPerPage40,000,000Massimo di pixel per pagina e massimo di pixel per singola immagine sorgente
MaxTotalPixels500,000,000Massimo di pixel raster accumulati in output
MaxRasterBytes256 MiBAllocazione raster massima per pagina o immagine sorgente, verificata in modo conservativo a quattro byte per pixel
MaxOutputBytes256 MiBDimensione massima del PDF staged, applicata prima dell'allocazione dello stream e delle scritture
MaxDecodedStreamBytes64 MiBLimita ogni catena di filtri, il preflight combinato del contenuto di ogni pagina, i singoli callback nativi di lettura stream, i singoli stream di immagini sorgente codificate e il validator nativo dell'output
MaxTotalDecodedBytes256 MiBLimita il lavoro aggiuntivo dei decoder nativi filtrati lungo la conversione, il preflight combinato del contenuto tra pagine e i callback nativi di lettura stream accumulati tra pagine
MaxInputObjects200,000Numero massimo di oggetti indiretti già caricati
CancellationTokennilToken preso in prestito, verificato prima del lavoro, durante rendering e decodifica nativi e prima della pubblicazione
CheckpointnilCallback sincrono preso in prestito, invocato con sender nil ai checkpoint di conversione e delle risorse native; non rientrare nel documento sorgente

I limiti di decodifica conteggiano il lavoro del decoder e possono addebitare di nuovo lo stesso stream filtrato durante preflight, compilazione della display list e rendering; aumentare un budget è una decisione esplicita del chiamante

Il preflight dei pixel copre sia la risoluzione fisica richiesta sia il valore intero di DPI del renderer nativo dopo lo scaling di UserUnit; unità molto piccole possono richiedere pixel raster aggiuntivi, e dimensioni di pagina frazionarie possono introdurre resampling subpixel quando l'immagine viene riportata sulla pagina fisica

I limiti di conversione si applicano dopo il caricamento della sorgente; configurare i limiti di risorse propri del loader quando si accetta input non fidato

Il grafo di oggetti della sorgente viene conservato, mentre le cache di lettura e le statistiche di decodifica possono risultare popolate; le impostazioni di rendering, cancellation token, backend e budget di decodifica vengono ripristinate sia a successo sia a fallimento

Dare al convertitore accesso esclusivo al proprio documento sorgente mentre applica temporaneamente queste impostazioni

Rendering e colore

Ogni pagina deve effettuare il rendering senza diagnostica di fallback nativo, diagnostica scartata o fallimento per risorsa mancante; il contenuto non supportato respinge la conversione invece di pubblicare una pagina incompleta

L'argomento ICC deve descrivere sRGB con una rappresentazione matrix/TRC riconosciuta, le primarie standard adattate a D50 e la funzione di trasferimento IEC sRGB; profili RGB non correlati, profili CMYK, profili malformati e profili basati su LUT vengono respinti

L'output dichiara un OutputIntent sRGB e metadati XMP PDF/A-4; un workflow ICC di proof o output personalizzato già configurato sulla sorgente viene respinto, perché le sue impostazioni di image decoder non possono essere reinterpretate in sicurezza come sRGB

La build FPC richiede il proprio bridge codec nativo con LittleCMS disponibile e respinge la conversione quando quel backend di color management manca

Gli stream immagine JPEG e JPX, incluse le immagini inline codificate, hanno le dimensioni effettive del codestream ispezionate prima della decodifica nativa dei pixel e devono coincidere con il dizionario immagine del PDF

JPEG accetta header 8-bit baseline, extended sequential e progressive con limiti; JPX accetta header J2K SIZ con limiti e box JP2 di lunghezza ordinaria con al massimo quattro componenti e precisione di componente al massimo 16 bit

I codec codificati hanno un budget di lavoro conservativo aggiuntivo di 64 byte per pixel sorgente, e i metadati tile JPX sono limitati sia da MaxInputObjects sia da 1024 byte per tile entro MaxRasterBytes; il budget raster predefinito di 256 MiB consente quindi al massimo 4,194,304 pixel sorgente codificati, e i chiamanti possono aumentarlo esplicitamente per immagini più grandi

La conversione JBIG2 viene respinta perché le sue allocazioni interne di regioni e simboli non possono essere limitate tramite l'API di header disponibile; vengono respinti anche i codec immagine non terminali, i box JP2 di lunghezza estesa, i wrapper non supportati e gli stream codec con DecodeParms

I parametri fax CCITT devono conservare le dimensioni immagine positive dichiarate; gli override di DecodeParms.Columns e Rows diversi dal dizionario, incluso un Rows=0 sconosciuto, vengono respinti prima della decodifica nativa

Questi controlli limitano i profili noti di header e allocazione accettati da questo convertitore e non promettono una sandbox completa della memoria di processo per ogni decoder nativo

Perdita di informazioni e di qualità

THPDFArchivalConversionReport fornisce stato di successo e cancellation, conteggi di pagine sorgente e renderizzate, pixel raster, byte di output, conteggi di annotazioni/form/allegati rimossi, una diagnostica di fallimento e le segnalazioni della validazione nativa

FailureKind distingue afkNone, afkConversion, afkBudget e afkCancelled; i fallimenti tipizzati di budget del convertitore forniscono anche BudgetMetric, BudgetObserved e BudgetLimit

Un'eccezione di checkpoint ferma la conversione e viene riportata tramite il risultato di fallimento nativo; i wrapper che richiedono la categoria originale dell'eccezione del callback devono conservarla prima che il convertitore la catturi

L'operazione archive.pdfa4.raster JSON e C ABI richiede l'accettazione esplicita della perdita di informazioni, preserva l'handle della sorgente, consegna il PDF validato e il report di perdita e applica cap conservativi al budget per job

Verifica di conformità

Il convertitore ricarica il proprio output staged e richiede ValidatePDFA4 con il profilo base PDF/A-4 prima della pubblicazione; il validator nativo copre il proprio set di regole documentato e delimitato e non è una prova di ogni requisito ISO 19005-4

L'accettazione indipendente può usare veraPDF con --flavour 4; la fixture di regressione contenente testo non incorporato, trasparenza, un'immagine RGB, un link, un widget di firma e un allegato ha superato veraPDF 1.30.2 senza regole o controlli falliti

Eseguire Tests/Delphi/Run-HotPDFArchivalTests.bat per la suite di regressione non-GUI mirata