Rasterconversie van een geladen PDF naar PDF/A-4

HPDFArchivalConversion maakt een nieuw PDF/A-4-document uit de zichtbare pagina-inhoud van een geladen THotPDF-document, met strikte native rendering en een meegegeven sRGB ICC-profiel

Elke uitvoerpagina bevat een verliesloos gecomprimeerde RGB-rasterafbeelding op de gevraagde DPI, waarbij de oorspronkelijke zichtbare afmetingen, crop, rotatie en UserUnit in de geometrie van de uitvoerpagina terugkomen

Gebruik het aparte tekst- en vectorbehoudende profiel wanneer originele ingebedde fonts, tekstoperators, vectorpaden, images, OCR-lagen en zichtbare annotatie- of widget-appearances moeten overleven; het rasterprofiel bewaart die structuren niet

Ingangspunten

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;

Laad eerst de bron en houd eventuele input-streams in eigendom van de aanroeper in leven totdat het brondocument is vernietigd

Gebruik het bestandsingangspunt voor gewone archiveringspublicatie: het onderzoekt een bestaand doelbestand op bronaliasing, maakt daarna exclusief een tijdelijk bestand in de doelmap aan, valideert de volledige conversie, spoelt het bestand door en vervangt het doel via MoveFileEx met MOVEFILE_REPLACE_EXISTING en MOVEFILE_WRITE_THROUGH

Bij mislukte conversie, rendering, validatie, annulering of publicatie blijft een bestaand doelbestand staan en wordt de tijdelijke uitvoer verwijderd

Het streamingangspunt vereist een lege, seekbare bestemming op positie nul en wijst bekende aliassen van de invoer af via IsLoadedSourceStreamAlias; bytes worden pas gepubliceerd nadat de complete gestage uitvoer native validatie heeft doorstaan

Een mislukte schrijfpoging naar de bestemming leidt tot een best-effort-reset naar een lege stream, maar een willekeurig apparaat of een custom stream kan die reset weigeren en een gedeeltelijke schrijfactie achterlaten; gebruik het bestandsingangspunt wanneer bestandspublicatie atomisch moet zijn

Opties en resourcegrenzen

OptieStandaardBetekenis
DPI150Gevraagde fysieke resolutie, geaccepteerd bereik 36 tot en met 1200
MaxPages1000Maximaal aantal geladen bronpagina's
MaxPixelsPerPage40,000,000Maximaal aantal paginapixels en maximale pixels per afzonderlijke bronafbeelding
MaxTotalPixels500,000,000Maximaal geaccumuleerd aantal uitvoerrasterpixels
MaxRasterBytes256 MiBMaximale rasterallocatie per pagina of bronafbeelding, conservatief gecontroleerd op vier bytes per pixel
MaxOutputBytes256 MiBMaximale grootte van de gestage PDF, afgedwongen vóór streamallocatie en schrijfacties
MaxDecodedStreamBytes64 MiBBegrenst elke filterketen, de gecombineerde content-preflight per pagina, afzonderlijke native stream-read-callbacks, afzonderlijke gecodeerde bronafbeeldingsstreams en de native uitvoervalidator
MaxTotalDecodedBytes256 MiBBegrenst aanvullende native gefilterde-decoderwerkzaamheden tijdens de conversie, gecombineerde content-preflight over pagina's en geaccumuleerde native stream-read-callbacks over pagina's
MaxInputObjects200,000Maximaal aantal al geladen indirecte objecten
CancellationTokennilGeleend token dat wordt gecontroleerd vóór het werk, tijdens native rendering en decoding en vóór publicatie
CheckpointnilGeleende synchrone callback die met een nil-sender wordt aangeroepen bij conversie- en native resource-checkpoints; betreed het brondocument niet opnieuw

Decodelimieten tellen decoderwerk en kunnen dezelfde gefilterde stream opnieuw belasten tijdens preflight, display-listcompilatie en rendering; een budget verhogen is een expliciete beslissing van de aanroeper

Pixelpreflight dekt zowel de gevraagde fysieke resolutie als de integer-DPI van de native renderer na UserUnit-schaling; zeer kleine units kunnen extra rasterpixels vereisen en fractionele pagina-afmetingen kunnen subpixel-resampling introduceren wanneer de afbeelding terug op de fysieke pagina wordt gemapt

Conversiegrenzen gelden na het laden van de bron; configureer de eigen resourcelimieten van de loader wanneer je niet-vertrouwde invoer accepteert

De bronobjectgraaf blijft behouden, terwijl read-caches en decodestatistieken gevuld kunnen worden; renderinginstellingen, annuleringstoken, backend en decode-budgetinstellingen worden bij succes en falen hersteld

Geef de converter exclusieve toegang tot zijn brondocument terwijl het deze instellingen tijdelijk toepast

Rendering en kleur

Elke pagina moet renderen zonder native fallback-diagnostiek, zonder weggelaten diagnostiek en zonder een missing-resource-fout; niet-ondersteunde inhoud wijst de conversie af in plaats van een incomplete pagina te publiceren

Het ICC-argument moet sRGB beschrijven met een herkende matrix/TRC-representatie, de standaard D50-geadapteerde primaries en de IEC sRGB-transferfunctie; niet-verwante RGB-profielen, CMYK-profielen, misvormde profielen en op LUT gebaseerde profielen worden geweigerd

De uitvoer declareert een sRGB OutputIntent en PDF/A-4 XMP-metadata; een custom proof- of uitvoer-ICC-workflow die al op de bron is geconfigureerd, wordt geweigerd omdat diens image-decoderinstellingen niet veilig als sRGB kunnen worden geherinterpreteerd

De FPC-build vereist zijn native codec-bridge met LittleCMS en wijst de conversie af wanneer dat color-management-backend ontbreekt

Van JPEG- en JPX-beeldstreams, inclusief gecodeerde inline afbeeldingen, worden de werkelijke codestream-afmetingen gecontroleerd vóór native pixeldecoding en die moeten overeenkomen met de PDF-imagedictionary

JPEG accepteert begrensde 8-bit baseline-, extended sequential- en progressive-headers; JPX accepteert begrensde J2K SIZ-headers en JP2-boxes van gewone lengte met ten hoogste vier componenten en componentprecisie van ten hoogste 16 bits

Gecodeerde codecs hebben een extra conservatief werkingsbudget van 64 bytes per bronpixel, en JPX tile-metadata wordt zowel door MaxInputObjects als door 1024 bytes per tile binnen MaxRasterBytes beperkt; het standaardrasterbudget van 256 MiB staat daarom ten hoogste 4,194,304 gecodeerde bronpixels toe, en aanroepers kunnen het expliciet verhogen voor grotere afbeeldingen

JBIG2-conversie wordt geweigerd omdat diens interne regio- en symboolallocaties niet via de beschikbare header-API begrensd kunnen worden; niet-terminale image-codecs, JP2-boxes met extended length, niet-ondersteunde wrappers en wrapped codec-streams met DecodeParms worden ook geweigerd

CCITT-faxparameters moeten de opgegeven positieve afbeeldingsafmetingen behouden; DecodeParms.Columns- en Rows-overrides die afwijken van de dictionary, inclusief onbekende Rows=0, worden vóór native decoding geweigerd

Deze controles begrenzen de bekende header- en allocatieprofielen die deze converter accepteert en beloven geen volledige procesgeheugen-sandbox voor elke native decoder

Informatie- en kwaliteitsverlies

THPDFArchivalConversionReport levert succes- en annuleringsstatus, aantallen bron- en gerenderde pagina's, rasterpixels, uitvoerbytes, aantallen verwijderde annotaties/formulieren/bijlagen, een faaldiagnostiek en de native validatiebevindingen

FailureKind onderscheidt afkNone, afkConversion, afkBudget en afkCancelled; getypeerde converter-budgetfouten leveren ook BudgetMetric, BudgetObserved en BudgetLimit

Een checkpoint-exception stopt de conversie en wordt gemeld via het native faalresultaat; wrappers die de oorspronkelijke callback-exceptioncategorie nodig hebben, moeten die vasthouden voordat de converter hem vangt

De archive.pdfa4.raster-JSON- en C ABI-operatie vereist expliciete acceptatie van informatieverlies, behoudt de bronhandle, levert de gevalideerde PDF en het verliesrapport en past conservatieve job-budgetlimieten toe

Conformiteitsverificatie

De converter laadt zijn gestage uitvoer opnieuw en vereist vóór publicatie ValidatePDFA4 met het basis-PDF/A-4-profiel; de native validator dekt zijn gedocumenteerde begrensde regelset en is geen bewijs dat aan elke ISO 19005-4-vereiste is voldaan

Voor onafhankelijke acceptatie kun je veraPDF met --flavour 4 gebruiken; de regressiefixture met niet-ingebedde tekst, transparantie, een RGB-afbeelding, een link, een signature-widget en een bijlage doorstond veraPDF 1.30.2 zonder gefaalde regels of controles

Draai Tests/Delphi/Run-HotPDFArchivalTests.bat voor de gerichte niet-GUI-regressiesuite