Konverzija učitanog PDF-a u PDF/A-4 raster

HPDFArchivalConversion kreira novi PDF/A-4 dokument iz vidljivog sadržaja stranica učitanog THotPDF dokumenta, koristeći striktan nativni rendering i dostavljeni sRGB ICC profil

Svaka izlazna stranica sadrži bezgubitno komprimovanu RGB raster sliku na zahtevanom DPI, dok se originalne vidljive dimenzije, isečak, rotacija i UserUnit odražavaju u geometriji izlazne stranice

Ulazne tačke

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;

Prvo učitajte izvor i održavajte živim svaki ulazni tok u vlasništvu pozivaoca dok se izvorni dokument ne uništi

Za uobičajeno arhivsko objavljivanje koristite datotečnu ulaznu tačku: ona ispituje postojeću metu na aliasing prema izvoru pre nego što kreira ekskluzivnu privremenu datoteku u ciljnom direktorijumu, validira kompletnu konverziju, izvršava flush datoteke i zamenjuje metu preko MoveFileEx sa MOVEFILE_REPLACE_EXISTING i MOVEFILE_WRITE_THROUGH

Neuspesi konverzije, renderinga, validacije, otkazivanja i objavljivanja zadržavaju postojeću ciljnu datoteku i uklanjaju privremeni izlaz

Ulazna tačka sa tokom zahteva prazno odredište sa mogućnošću pozicioniranja na poziciji nula i odbija poznate alias-e ulaza kroz IsLoadedSourceStreamAlias; bajtove objavljuje tek nakon što kompletan pripremljeni izlaz prođe nativnu validaciju

Neuspeh upisa u odredište pokreće reset na prazan tok u najboljoj nameri, ali proizvoljan uređaj ili custom tok može da odbije taj reset i zadrži delimičan upis; koristite datotečnu ulaznu tačku kada objavljivanje datoteke mora biti atomsko

Opcije i ograničenja resursa

OpcijaPodrazumevanoZnačenje
DPI150Zahtevana fizička rezolucija, prihvaćeni raspon od 36 do 1200
MaxPages1000Maksimalan broj učitanih izvornih stranica
MaxPixelsPerPage40,000,000Maksimalan broj piksela stranice i maksimalan broj piksela pojedinačne izvorne slike
MaxTotalPixels500,000,000Maksimalan broj akumuliranih izlaznih raster piksela
MaxRasterBytes256 MiBMaksimalna raster alokacija po stranici ili izvornoj slici, konzervativno proveravana sa četiri bajta po pikselu
MaxOutputBytes256 MiBMaksimalna veličina pripremljenog PDF-a, sprovođena pre alokacije toka i upisa
MaxDecodedStreamBytes64 MiBOgraničava svaki lanac filtera, kombinovani content preflight svake stranice, pojedinačne nativne callback-ove za čitanje toka, pojedinačne kodovane tokove izvornih slika i nativni validator izlaza
MaxTotalDecodedBytes256 MiBOgraničava dodatni nativni rad filtriranih dekodera tokom konverzije, kombinovani content preflight kroz stranice i akumulirane nativne callback-ove čitanja toka kroz stranice
MaxInputObjects200,000Maksimalan broj već učitanih indirektnih objekata
CancellationTokennilPosuđeni token koji se proverava pre posla, tokom nativnog renderinga i dekodovanja i pre objavljivanja
CheckpointnilPosuđeni sinhroni callback pozivan sa nil sender-om na konverzionim i nativnim kontrolnim tačkama resursa; ne ulazite ponovo u izvorni dokument

Ograničenja dekodovanja računaju rad dekodera i mogu ponovo da naplate isti filtrirani tok tokom preflight-a, kompilacije display-list-e i renderinga; povećanje budžeta je eksplicitna odluka pozivaoca

Preflight piksela pokriva i zahtevanu fizičku rezoluciju i celobrojni DPI nativnog renderera nakon UserUnit skaliranja; veoma male jedinice mogu zahtevati dodatne raster piksele, a razlomljene dimenzije stranice mogu uvesti subpikselni resampling kada se slika mapira nazad na fizičku stranicu

Ograničenja konverzije primenjuju se nakon učitavanja izvora; kada prihvatate nepouzdan ulaz, konfigurišite sopstvena ograničenja resursa učitavača

Graf objekata izvora se zadržava, dok se keševi za čitanje i statistika dekodovanja mogu popuniti; podešavanja renderinga, token za otkazivanje, backend i podešavanja dekod budžeta vraćaju se i na uspehu i na neuspehu

Obezbedite konvertoru ekskluzivan pristup izvornom dokumentu dok privremeno primenjuje ova podešavanja

Rendering i boje

Svaka stranica mora da se renderuje bez nativne fallback dijagnostike, odbačene dijagnostike ili neuspeha zbog nedostajućeg resursa; nepodržani sadržaj odbija konverziju umesto da objavi nepotpunu stranicu

ICC argument mora da opisuje sRGB sa prepoznatim matrix/TRC predstavljanjem, standardnim D50-adaptiranim primarnim bojama i IEC sRGB funkcijom prenosa; nepovezani RGB profili, CMYK profili, neispravni profili i LUT-bazirani profili se odbacuju

Izlaz deklariše sRGB OutputIntent i PDF/A-4 XMP metapodatke; custom proof ili output ICC workflow već konfigurisan na izvoru se odbacuje jer njegova podešavanja dekodera slika ne mogu bezbedno da se reinterpretiraju kao sRGB

FPC build zahteva svoj nativni codec most sa dostupnim LittleCMS i odbija konverziju kada taj color-management backend nedostaje

Kod JPEG i JPX tokova slika, uključujući kodovane inline slike, stvarne codestream dimenzije se pregledaju pre nativnog dekodovanja piksela i moraju se poklapati sa PDF rečnikom slike

JPEG prihvata ograničena 8-bit baseline, extended sequential i progressive zaglavlja; JPX prihvata ograničena J2K SIZ zaglavlja i JP2 kutije obične dužine sa najviše četiri komponente i preciznošću komponenti od najviše 16 bita

Kodovani codec-ovi imaju dodatni konzervativni radni budžet od 64 bajta po izvornom pikselu, a JPX tile metapodaci su ograničeni i sa MaxInputObjects i sa 1024 bajta po tile-u unutar MaxRasterBytes; podrazumevani raster budžet od 256 MiB tako dozvoljava najviše 4,194,304 kodovanih izvornih piksela, a pozivaoci ga mogu eksplicitno povećati za veće slike

JBIG2 konverzija se odbacuje jer se njegove interne alokacije regiona i simbola ne mogu ograničiti iz dostupnog header API-ja; odbacuju se i neterminalni image codec-ovi, JP2 kutije produžene dužine, nepodržani wrapper-i i tokovi wrapped codec-a koji nose DecodeParms

CCITT fax parametri moraju da zadrže deklarisane pozitivne dimenzije slike; DecodeParms.Columns i Rows override-i koji se razlikuju od rečnika, uključujući nepoznat Rows=0, odbacuju se pre nativnog dekodovanja

Ove provere ograničavaju poznate profile zaglavlja i alokacija koje ovaj konvertor prihvata i ne obećavaju kompletan sandbox procesne memorije za svaki nativni dekoder

Gubitak informacija i kvaliteta

THPDFArchivalConversionReport daje stanje uspeha i otkazivanja, broj izvornih i renderovanih stranica, raster piksele, izlazne bajtove, brojeve uklonjenih anotacija/obrasaca/priloga, dijagnostiku neuspeha i nalaze nativne validacije

FailureKind razlikuje afkNone, afkConversion, afkBudget i afkCancelled; tipizirani neuspeci budžeta konvertora dostavljaju i BudgetMetric, BudgetObserved i BudgetLimit

Izuzetak na kontrolnoj tački zaustavlja konverziju i prijavljuje se kroz nativni rezultat neuspeha; wrapper-i kojima treba prvobitna kategorija callback izuzetka moraju da je zadrže pre nego što je konvertor uhvati

archive.pdfa4.raster JSON i C ABI operacija zahteva eksplicitno prihvatanje gubitka informacija, čuva handle izvora, dostavlja validirani PDF i izveštaj o gubicima i primenjuje konzervativne ograničenja budžeta posla

Provera usklađenosti

Konvertor ponovo učitava svoj pripremljeni izlaz i pre objavljivanja zahteva ValidatePDFA4 sa osnovnim PDF/A-4 profilom; nativni validator pokriva svoj dokumentovani ograničeni skup pravila i nije dokaz svakog zahteva ISO 19005-4

Za nezavisno prihvatanje može se koristiti veraPDF sa --flavour 4; regresioni fixture sa neugrađenim tekstom, transparentnošću, RGB slikom, linkom, signature vidžetom i prilogom prošao je veraPDF 1.30.2 bez neuspelih pravila ili provera

Pokrenite Tests/Delphi/Run-HotPDFArchivalTests.bat za fokusiranu ne-GUI regresionu seriju testova