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
| Opcija | Podrazumevano | Značenje |
|---|---|---|
DPI | 150 | Zahtevana fizička rezolucija, prihvaćeni raspon od 36 do 1200 |
MaxPages | 1000 | Maksimalan broj učitanih izvornih stranica |
MaxPixelsPerPage | 40,000,000 | Maksimalan broj piksela stranice i maksimalan broj piksela pojedinačne izvorne slike |
MaxTotalPixels | 500,000,000 | Maksimalan broj akumuliranih izlaznih raster piksela |
MaxRasterBytes | 256 MiB | Maksimalna raster alokacija po stranici ili izvornoj slici, konzervativno proveravana sa četiri bajta po pikselu |
MaxOutputBytes | 256 MiB | Maksimalna veličina pripremljenog PDF-a, sprovođena pre alokacije toka i upisa |
MaxDecodedStreamBytes | 64 MiB | Ogranič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 |
MaxTotalDecodedBytes | 256 MiB | Ograničava dodatni nativni rad filtriranih dekodera tokom konverzije, kombinovani content preflight kroz stranice i akumulirane nativne callback-ove čitanja toka kroz stranice |
MaxInputObjects | 200,000 | Maksimalan broj već učitanih indirektnih objekata |
CancellationToken | nil | Posuđeni token koji se proverava pre posla, tokom nativnog renderinga i dekodovanja i pre objavljivanja |
Checkpoint | nil | Posuđ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
- Vektorski sadržaj, fontovi, transparentnost i izvorni prostori boja postaju RGB pikseli stranice; povećani DPI poboljšava vizuelni detalj ali povećava upotrebu memorije i veličinu datoteke
- Izlazni tekst nije pretraživ ni selektabilan, i ne sintetizuje se sloj teksta ni OCR izlaz
- Anotacije, izgledi anotacija, polja obrazaca, izgledi vidžeta i vidljivi izgledi potpisa izostavljaju se umesto da se ugrade u raster stranice
- Digitalni potpisi, ugrađene datoteke, skripte, akcije, obeleživači, slojevi kao interaktivne kontrole, strukturne oznake i identitet originalnog dokumenta ne zadržavaju se
- Rezultat ne čuva vektorsku izmenljivost, validnost originalnog potpisa, PDF/UA pristupačnost niti semantiku izvornog dokumenta
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