Převod načteného PDF na rastrové PDF/A-4

HPDFArchivalConversion vytvoří nový dokument PDF/A-4 z viditelného obsahu stránek načteného dokumentu THotPDF, přičemž použije striktní nativní renderování a dodaný sRGB ICC profil

Každá výstupní stránka obsahuje bezztrátově komprimovaný RGB rastrový obrázek v požadovaném DPI, přičemž původní viditelné rozměry, ořez, rotaci i UserUnit nese geometrie výstupní stránky

Když musí přežít původní embedded písma, textové operátory, vektorové path, obrázky, OCR vrstvy a viditelné vzhledy annotací či widgetů, použijte samostatný profil zachovávající text a vektory; rastrový profil tyto struktury nezachovává

Vstupní body

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;

Nejprve načtěte zdroj a každý vstupní stream vlastněný volajícím udržujte naživu, dokud se nezničí zdrojový dokument

Pro běžné archivní publikování použijte souborový vstupní bod: ten před vytvořením exkluzivního dočasného souboru v cílovém adresáři zjistí, zda cíl není alias zdroje, ověří kompletní konverzi, vyprázdní soubor na disk a nahradí cíl přes MoveFileEx s MOVEFILE_REPLACE_EXISTING a MOVEFILE_WRITE_THROUGH

Selhání konverze, renderování, ověření, zrušení i publikování ponechá existující cílový soubor a dočasný výstup odstraní

Streamový vstupní bod vyžaduje prázdný, vyhledávatelný cíl na pozici nula a známé aliasy vstupu odmítne přes IsLoadedSourceStreamAlias; bajty publikuje až poté, co kompletní připravený výstup projde nativním ověřením

Selhání zápisu do cíle spustí reset na prázdný stream po nejlepším úsilí, ale libovolné zařízení nebo vlastní stream může reset odmítnout a částečný zápis zachovat; pokud musí být publikování souboru atomické, použijte souborový vstupní bod

Volby a meze zdrojů

VolbaVýchozíVýznam
DPI150Požadované fyzické rozlišení, přijímaný rozsah 36 až 1200
MaxPages1000Maximální počet načtených zdrojových stránek
MaxPixelsPerPage40,000,000Maximální počet pixelů stránky a maximální počet pixelů jednoho zdrojového obrázku
MaxTotalPixels500,000,000Maximální počet akumulovaných výstupních rastrových pixelů
MaxRasterBytes256 MiBMaximální alokace rastru stránky nebo zdrojového obrázku, konzervativně počítaná čtyři bajty na pixel
MaxOutputBytes256 MiBMaximální velikost připraveného PDF, vynucená před alokací streamu a zápisy
MaxDecodedStreamBytes64 MiBOhraničuje každý řetězec filtrů, kombinovaný content preflight každé stránky, jednotlivé nativní callbacky čtení streamu, jednotlivé zakódované streamy zdrojových obrázků i nativní validátor výstupu
MaxTotalDecodedBytes256 MiBOhraničuje dodatečnou práci nativních filtrovaných dekodérů v průběhu konverze, kombinovaný content preflight napříč stránkami i kumulované nativní callbacky čtení streamu napříč stránkami
MaxInputObjects200,000Maximální počet už načtených nepřímých objektů
CancellationTokennilPřejatý token kontrolovaný před prací, během nativního renderování a dekódování i před publikováním
CheckpointnilPřejatý synchronní callback volaný s odesílatelem nil na konverzních i nativních zdrojových checkpoitech; nevnorujte se zpět do zdrojového dokumentu

Limity dekódování počítají práci dekodéru a mohou tentýž filtrovaný stream účtovat znovu během preflightu, kompilace display listu i renderování; zvýšení limitu je explicitní rozhodnutí volajícího

Pixelový preflight zahrnuje požadované fyzické rozlišení i celočíselné DPI nativního rendereru po škálování UserUnit; velmi malé jednotky mohou vyžadovat další rastrové pixely a neceločíselné rozměry stránky mohou při mapování obrázku zpět na fyzickou stránku vnést subpixelový resampling

Meze konverze platí až po načtení zdroje; vlastní limity zdrojů loaderu nastavte, když přijímáte nedůvěryhodný vstup

Graf zdrojových objektů zůstává zachovaný, zatímco se mohou naplnit read cache a statistiky dekódování; nastavení renderování, token zrušení, backend i limity dekódování se obnoví při úspěchu i při selhání

Dejte konvertoru výhradní přístup ke zdrojovému dokumentu po dobu, kdy dočasně aplikuje tato nastavení

Renderování a barvy

Každá stránka se musí vyrenderovat bez nativní fallback diagnostiky, zahozené diagnostiky nebo selhání kvůli chybějícímu zdroji; nepodporovaný obsah konverzi odmítne místo publikování nekompletní stránky

Argument ICC musí popisovat sRGB s rozpoznanou reprezentací matrix/TRC, standardními primárními barvami adaptovanými na D50 a přenosovou funkcí IEC sRGB; nesouvisející RGB profily, CMYK profily, poškozené profily i profily založené na LUT se odmítnou

Výstup deklaruje sRGB OutputIntent a XMP metadata PDF/A-4; vlastní proof či výstupní ICC workflow už nakonfigurované na zdroji se odmítne, protože jeho nastavení image dekodérů nelze bezpečně přeinterpretovat jako sRGB

Build FPC vyžaduje svůj nativní codec bridge s dostupným LittleCMS a konverzi odmítne, když tento backend správy barev chybí

U streamů obrázků JPEG a JPX, včetně zakódovaných inline obrázků, se skutečné rozměry codestreamu zkontrolují před nativním dekódováním pixelů a musí souhlasit s PDF slovníkem obrázku

JPEG přijímá ohraničené hlavičky 8bit baseline, extended sequential i progressive; JPX přijímá ohraničené hlavičky J2K SIZ a JP2 boxy běžné délky s nejvýše čtyřmi komponentami a přesností komponent nejvýše 16 bitů

Zakódované kodeky mají dodatečnou konzervativní pracovní mez 64 bajtů na zdrojový pixel a metadata JPX tile se omezují jak přes MaxInputObjects, tak na 1024 bajtů na tile v rámci MaxRasterBytes; výchozí rastrová mez 256 MiB proto dovolí nejvýše 4,194,304 zakódovaných zdrojových pixelů a volající ji pro větší obrázky mohou explicitně zvýšit

Konverze JBIG2 se odmítne, protože její interní alokace regionů a symbolů nelze z dostupného header API ohraničit; odmítnou se i nonterminální image kodeky, JP2 boxy prodloužené délky, nepodporované wrappery i streamy zabalených kodeků nesoucí DecodeParms

Faxové parametry CCITT musí zachovat deklarované kladné rozměry obrázku; přepisy DecodeParms.Columns a Rows odlišné od slovníku, včetně neznámého Rows=0, se odmítnou před nativním dekódováním

Tyto kontroly ohraničují známé header a alokační profily přijímané tímto konvertorem a neslibují kompletní sandbox procesní paměti pro každý nativní dekodér

Ztráta informací a kvality

THPDFArchivalConversionReport přináší stav úspěchu a zrušení, počty zdrojových a vyrenderovaných stránek, rastrové pixely, výstupní bajty, počty odstraněných anotací/formulářů/příloh, diagnostiku selhání i nálezy nativního ověření

FailureKind rozlišuje afkNone, afkConversion, afkBudget a afkCancelled; typovaná selhání limitů konvertoru dodají navíc BudgetMetric, BudgetObserved a BudgetLimit

Výjimka z checkpointu konverzi zastaví a nahlásí se přes nativní výsledek selhání; wrappery, které potřebují původní kategorii výjimky callbacku, si ji musí zapamatovat dřív, než ji konvertor zachytí

JSON a C ABI operace archive.pdfa4.raster vyžaduje explicitní přijetí ztráty informací, zachovává handle zdroje, dodá ověřené PDF i report ztrát a aplikuje konzervativní stropy limitů úlohy

Ověření shody

Konvertor znovu načte svůj připravený výstup a před publikováním vyžaduje ValidatePDFA4 se základním profilem PDF/A-4; nativní validátor pokrývá svůj zdokumentovaný ohraničený soubor pravidel a není důkazem splnění každého požadavku ISO 19005-4

Pro nezávislé přijetí lze použít veraPDF s --flavour 4; regresní fixture obsahující nevložený text, průhlednost, RGB obrázek, odkaz, signature widget i přílohu prošla veraPDF 1.30.2 bez jediného nezdařeného pravidla či kontroly

Pro zaměřenou non-GUI regresní sadu spusťte Tests/Delphi/Run-HotPDFArchivalTests.bat