Konvertering af indlæst PDF til PDF/A-4-raster

HPDFArchivalConversion opretter et nyt PDF/A-4-dokument ud fra det synlige sideindhold i et indlæst THotPDF-dokument med striks native rendering og en angivet sRGB ICC-profil

Hver outputside indeholder et tabsfrit komprimeret RGB-rasterbillede med den ønskede DPI, hvor de oprindelige synlige dimensioner, beskæring, rotation og UserUnit afspejles i outputsidens geometri

Brug den separate tekst- og vektorbevarende profil, når originale indlejrede skrifttyper, tekstoperatorer, vektorstier, billeder, OCR-lag og synlige annotation- eller widget-appearances skal overleve; raster-profilen bevarer ikke disse strukturer

Indgangspunkter

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;

Indlæs kilden først, og hold input-streams ejet af kalderen i live, til kildedokumentet destrueres

Brug fil-indgangspunktet til almindelig arkivpublicering: det undersøger et eksisterende mål for aliasing med kilden, før der oprettes en eksklusiv midlertidig fil i målmappen, validerer den fulde konvertering, flusher filen og erstatter målet med MoveFileEx med MOVEFILE_REPLACE_EXISTING og MOVEFILE_WRITE_THROUGH

Fejl under konvertering, rendering, validering, annullering eller publicering bevarer en eksisterende målfil og fjerner det midlertidige output

Stream-indgangspunktet kræver en tom, søgbar destination i position nul og afviser kendte aliasser for inputtet via IsLoadedSourceStreamAlias; det publicerer bytes først, efter det komplette stagede output har bestået native validering

En skrivefejl på destinationen udløser en best effort-tilbagestilling til en tom stream, men en vilkårlig enhed eller custom stream kan afvise tilbagestillingen og beholde en delvis skrivning; brug fil-indgangspunktet, når filpublicering skal være atomar

Tilvalg og ressourcegrænser

TilvalgStandardBetydning
DPI150Ønsket fysisk opløsning, accepteret interval 36 til 1200
MaxPages1000Største antal indlæste kildesider
MaxPixelsPerPage40,000,000Største antal sidepixler og største antal pixler i ét kildebillede
MaxTotalPixels500,000,000Største akkumulerede antal output-rasterpixler
MaxRasterBytes256 MiBStørste rasterallokering for en side eller et kildebillede, kontrolleret konservativt med fire bytes pr. pixel
MaxOutputBytes256 MiBStørste staged PDF-størrelse, håndhævet før streamallokering og skrivninger
MaxDecodedStreamBytes64 MiBBegrænser hver filterkæde, hver sides samlede indholdspreflight, individuelle native stream-læsecallbacks, individuelle kodede kildebillede-streams og den native outputvalidator
MaxTotalDecodedBytes256 MiBBegrænser supplerende native filtreret dekodearbejde på tværs af konverteringen, samlet indholdspreflight på tværs af sider og akkumulerede native stream-læsecallbacks på tværs af sider
MaxInputObjects200,000Største antal allerede indlæste indirekte objekter
CancellationTokennilLånt token, der tjekkes før arbejdet, under native rendering og dekodning samt før publicering
CheckpointnilLånt synkront callback, der kaldes med en nil-sender ved konverterings- og native ressource-checkpoints; gå ikke genind i kildedokumentet

Dekodegrænser tæller dekodearbejde og kan opkræve den samme filtrerede stream igen under preflight, display-list-kompilering og rendering; et højere budget er en eksplicit beslutning for kalderen

Pixel-preflight dækker både den ønskede fysiske opløsning og den native renderers heltals-DPI efter UserUnit-skalering; meget små enheder kan kræve ekstra rasterpixler, og ikke-heltals sidedimensioner kan introducere subpixel-resampling, når billedet mappes tilbage på den fysiske side

Konverteringsgrænserne gælder efter kildeindlæsning; konfigurer loaderens egne ressourcegrænser, når du accepterer input, du ikke stoler på

Kildens objektgraf bevares, mens læse-cacher og dekodestatistik kan blive udfyldt; indstillinger for rendering, cancellation token, backend og dekodebudget gendannes ved både succes og fejl

Giv konverteren eksklusiv adgang til sit kildedokument, mens den midlertidigt anvender disse indstillinger

Rendering og farve

Hver side skal rendere uden en native fallback-diagnostik, en droppet diagnostik eller en manglende-ressource-fejl; ikke-understøttet indhold afviser konverteringen i stedet for at publicere en ufuldstændig side

ICC-argumentet skal beskrive sRGB med en genkendt matrix/TRC-repræsentation, de standardiserede D50-tilpassede primærvalører og IEC's sRGB-transferfunktion; ikke-relaterede RGB-profiler, CMYK-profiler, misdannede profiler og LUT-baserede profiler afvises

Outputtet deklarerer en sRGB OutputIntent og PDF/A-4 XMP-metadata; et custom proof- eller output-ICC-workflow, der allerede er konfigureret på kilden, afvises, fordi dets billeddekode-indstillinger ikke sikkert kan genfortolkes som sRGB

FPC-bygget kræver sin native codec-bridge med LittleCMS tilgængelig og afviser konvertering, når den farvestyrings-backend mangler

JPEG- og JPX-billede-streams, herunder kodede inline-billeder, får deres faktiske codestream-dimensioner inspiceret før native pixeldekodning og skal stemme overens med PDF-billedordbogen

JPEG accepterer afgrænsede 8-bit baseline-, extended sequential- og progressive-headere; JPX accepterer afgrænsede J2K SIZ-headere og JP2-bokse i almindelig længde med højst fire komponenter og komponentpræcision på højst 16 bit

Kodede codecs har et ekstra konservativt arbejdsbudget på 64 bytes pr. kildepixel, og JPX-tile-metadata begrænses af både MaxInputObjects og 1024 bytes pr. tile inden for MaxRasterBytes; standardbudgettet på 256 MiB raster tillader derfor højst 4,194,304 kodede kildepixler, og kalderen kan eksplicit hæve det til større billeder

JBIG2-konvertering afvises, fordi dens interne region- og symbolallokeringer ikke kan begrænses via det tilgængelige header-API; ikke-terminale billedcodecs, JP2-bokse med udvidet længde, ikke-understøttede wrappers og indpakkede codec-streams med DecodeParms afvises også

CCITT-faxparametre skal bevare de deklarerede positive billeddimensioner; DecodeParms.Columns- og Rows-overrides, der afviger fra ordbogen, herunder ukendt Rows=0, afvises før native dekodning

Disse tjek afgrænser de kendte header- og allokeringsprofiler, som konverteren accepterer, og lover ikke en komplet proceshukommelses-sandbox for hver native dekoder

Informations- og kvalitetstab

THPDFArchivalConversionReport leverer succes- og annulleringstilstand, antal kilde- og renderede sider, rasterpixler, outputbytes, antal fjernede annoteringer/formularer/vedhæftninger, en fejl-diagnostik og de native valideringsfund

FailureKind adskiller afkNone, afkConversion, afkBudget og afkCancelled; typede converter-budgetfejl leverer også BudgetMetric, BudgetObserved og BudgetLimit

En checkpoint-exception standser konverteringen og rapporteres gennem det native fejlresultat; wrappers, der skal bruge den oprindelige callback-exceptionkategori, skal gemme den, før konverteren fanger den

archive.pdfa4.raster JSON- og C ABI-operationen kræver eksplicit accept af informationstab, bevarer kilde-handlen, leverer den validerede PDF og tab-rapporten og anvender konservative jobbudget-grænser

Konformitetsverifikation

Konverteren genindlæser sit stagede output og kræver ValidatePDFA4 med basis-PDF/A-4-profilen før publicering; den native validator dækker sit dokumenterede afgrænsede regelsæt og er ikke et bevis for alle ISO 19005-4-krav

Uafhængig accept kan bruge veraPDF med --flavour 4; regression-fixtureen med ikke-indlejret tekst, transparens, et RGB-billede, et link, en signatur-widget og en vedhæftning bestod veraPDF 1.30.2 uden fejlende regler eller tjek

Kør Tests/Delphi/Run-HotPDFArchivalTests.bat for den fokuserede ikke-GUI regressionssuite