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
| Tilvalg | Standard | Betydning |
|---|---|---|
DPI | 150 | Ønsket fysisk opløsning, accepteret interval 36 til 1200 |
MaxPages | 1000 | Største antal indlæste kildesider |
MaxPixelsPerPage | 40,000,000 | Største antal sidepixler og største antal pixler i ét kildebillede |
MaxTotalPixels | 500,000,000 | Største akkumulerede antal output-rasterpixler |
MaxRasterBytes | 256 MiB | Største rasterallokering for en side eller et kildebillede, kontrolleret konservativt med fire bytes pr. pixel |
MaxOutputBytes | 256 MiB | Største staged PDF-størrelse, håndhævet før streamallokering og skrivninger |
MaxDecodedStreamBytes | 64 MiB | Begrænser hver filterkæde, hver sides samlede indholdspreflight, individuelle native stream-læsecallbacks, individuelle kodede kildebillede-streams og den native outputvalidator |
MaxTotalDecodedBytes | 256 MiB | Begræ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 |
MaxInputObjects | 200,000 | Største antal allerede indlæste indirekte objekter |
CancellationToken | nil | Lånt token, der tjekkes før arbejdet, under native rendering og dekodning samt før publicering |
Checkpoint | nil | Lå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
- Vektorindhold, skrifttyper, transparens og kildens farverum bliver til RGB-sidepixler; højere DPI forbedrer visuel detalje, men øger hukommelsesforbrug og filstørrelse
- Outputtekst kan ikke søges i eller markeres, og der syntetiseres intet tekstlag eller OCR-output
- Annoteringer, annoteringsudseende, formularfelter, widget-udseende og synlige signaturudseende udelades i stedet for at blive bagt ind i siderasteren
- Digitale signaturer, indlejrede filer, scripts, actions, bogmærker, lag som interaktive kontroller, strukturelle tags og dokumentets oprindelige identitet bevares ikke
- Resultatet bevarer ikke vektorredigerbarhed, oprindelig signaturgyldighed, PDF/UA-tilgængelighed eller kildedokumentets semantik
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