Native Linux C ABI
HotPDFLinuxABI.lpr postaví nativní x86_64 ELF sdílenou knihovnu pojmenovanou libhotpdf.so.1, se SONAME libhotpdf.so.1 a veřejnými symboly přiřazenými do HOTPDF_1.0
Knihovna používá THPDFHeadlessDocument a CPU rendering bez Windows komponenty, aktivního desktopu, PDF čtečky či procesu Pythonu za běhu; Python používají build i akceptační skripty
Build a akceptace
sh Tests/Linux/Build-LinuxABI.sh
sh Tests/Linux/Run-LinuxABIAcceptance.sh
FPC_EXE=/usr/local/bin/fpc HPDF_LINUX_OUTPUT=Tests/Linux/bin/linux-abi331 sh Tests/Linux/Run-LinuxABIAcceptance.sh
Používejte nativní FPC 3.3.1 či novější s odpovídajícími jednotkami FCL a paszlib, C kompilátor, binutils, Fontconfig i instalovaná TrueType písma; akceptační Python prostředí navíc potřebuje pypdf s jeho AES providerem, PyMuPDF, Pillow a NumPy
FPC_EXE, HPDF_LINUX_OUTPUT a PYTHON_EXE vyberou umístění nástrojů; výchozím akceptačním Python prostředím je /opt/hotpdf-python/bin/python
FPC normálně zapíše anonymní export blok do své ELF linker odpovědi; build ten blok pojmenuje pomocí přiložené symbolové mapy, dřív než linkuje, protože přidání druhého pojmenovaného verzního skriptu by s anonymním blokem kolidovalo
Veřejné rozhraní
Zahrňte Lib/hotpdf_abi.h pro sdílené rozložení záznamů i statusové konstanty; hpdf_abi_io_v1_size a hpdf_abi_operation_v1_size reportují skutečné nativní velikosti záznamů
Linux knihovna exportuje ABI odhalení, odhalení schopností, tvorbu a zničení dokumentů, načítání a ukládání callbacků, počítání stránek, hpdf_document_execute_json_v1 i vstupní bod dvoudokumentového hpdf_document_compare_json_v1
Aktuální operace odhalte přes hpdf_capabilities_json_to_io, místo abyste předpokládali sadu operací Windows
| Operace | Chování |
|---|---|
info | Počty stránek, formulářů a podepsaných polí |
text.extract | Unicode text stránek v JSON i volitelném UTF-8 výstupu, s volitelným zero-based polem stránek |
forms.read | Plně kvalifikované názvy polí, Unicode hodnoty, kompletní výběry voleb, typy, příznaky i maximální délky |
forms.fill | Transakční aktualizace textu, voleb, multiselectu, checkboxů i radio, caption push buttonů, odpovídající appearance s vloženými písmy i inkrementální PDF výstup |
annotations.export / annotations.import | Ohraničená anotační výměna XFDF s append transakcemi, přesným Unicode, binárními streamy, referencemi popup/reply, šifrováním i autentizovanou certifikační politikou |
forms.export / forms.import | Ohraničená výměna skalárních i rich dat FDF/XFDF se čtyřmi skutečnými styly na vybranou nakonfigurovanou rich rodinu, šifrované PDF transakce, zregenerovaná appearance, politiky podpisů i synchronní fragmentované callbacky |
render | Cairo PNG výstup se stránkou, dpi, použitím view či print, volbami anotací i výchozí konfigurací optional-content |
sign | Inkrementální podepisování PEM či PFX, stávající či nově vytvořená pole, viditelná appearance i certifikace, tedy i autentizované AES-256 R5/R6 vstupy a volby digestu, metadat, profilu i validovaných důkazů |
signatures.verify | Skutečná verifikace CMS, délky podepsaných revizí, volitelné explicitní vyhodnocení CA důvěry i validace podepsaných revokačních informací |
html.import | Nativní tvorba dokumentů HTML/CSS s Unicode písmy, stránkováním, obrázky, hyperlinky i volitelnými ovládacími prvky AcroForm |
text.draw | Viditelný či neviditelný Unicode text stránek se zachovanými původními streamy stránek i autentizovanými šifrovanými revizemi |
ocr | Skutečné rozpoznání Tesseract s ohraničenou životností podprocesu, výsledky slov i volitelnou prohledávatelnou PDF vrstvou |
pages.import | Importy resource vybraných stránek s nezávislým zdrojovým vstupem i transakčními aktualizacemi cíle |
pdfa.convert | Raster či text/vektor konverze PDF/A-4, s volitelnou opravou písem i validačními požadavky vybraného režimu |
compare / compare.contract | Dvouhandle porovnání počtu stránek, textu stránek, počtu objektů, renderovaného obrázku, struktury i full, plus sémantické kontrahové porovnání s připraveným review výstupem JSON, HTML či anotovaným PDF |
{"schemaVersion":1,"type":"render","page":0,"dpi":150,"usage":"print","annotations":false,
"limits":{"memoryBytes":268435456,"outputBytes":268435456,"pixels":100000000}}
Nativní podepisovací workflow přijmou explicitní identitu PEM či Base64 PFX, volitelná nová pole podpisů i Unicode appearance a certifikační oprávnění; úspěšné podepsání vymění načtený kontext za připravenou podepsanou revizi, zatímco neúspěšné podepsání či publikace zachová původní kontext
Nativní podepisovací volby navážou skutečný výběr SHA256, SHA384 či SHA512, Unicode informace podpisu, právní upřesnění, explicitní trust bajty, validované podepsané revokační důkazy, reálné appearance presety i transportní provenience přihlašovacích údajů či timestampů tvrzenou aplikací
Volitelný viewer stav optional-content dodá explicitní automatické aplikace použití View, Print či Export, zoom, jazyk, uživatelský kontext i manuální výběry v rámci operace přes nezměněné záznamy V1
Operace render přijme usage: "view" či usage: "print", defaultně view; volby odhalte přes capability pole renderUsages, s nezměněnými záznamy callbacků i operací V1
Příznaky obrazovky i tisku anotací řídí vybrané použití a annotations: false potlačí anotace v obou režimech; vynechání optionalContent zachová statickou výchozí konfiguraci, zatímco explicitní objekt aktivuje zdokumentovaná automatická doporučení i manuální výběry v rámci operace
Tests/Linux/Run-LinuxABIRenderUsage.sh verifikuje skutečné PNG pixely pro zdroje plaintext i AES R5/R6, výchozí vypnutý obsah, selhání callbacků, rozpočty, zrušení i zotavení se stejným handlem; závislosti fixtur i volitelný předgenerovaný adresář fixtur popisuje Tests/Linux/HeadlessRenderUsage.en-us.md
Callbacky a životnost
Volby appearance formulářů přijmou Unicode text, exportní hodnoty či kompletní pole výběru, explicitní stavy buttonů, nastavení písem i transakční limity resource
Čtecí i zapisovací callbacky mohou vrátit částečné přenosy; úspěšné přenosy musí udělat kladný pokrok a nesmí přesáhnout vyžádaný počet
Všechny callbacky běží synchronně na volajícím vlákně, tedy i kontroly zrušení uvnitř parsování dokumentu, renderování i kryptografických checkpointů
Callback vstup se zkopíruje do výhradně vytvořeného soukromého dočasného souboru s mode 0600, takže Linux vstupní callbacky i jejich user data musí zůstat platné jen do návratu volání load či execute
Operace nad sdíleným dokumentovým handlem se interně serializují; každé aktivní volání drží nezávislou referenci, takže zničení handlu z progress callbacku zneplatní následné vyhledávání, zatímco aktuální volání může bezpečně dokončit
Z callbacku nerekurzivně nespouštějte jinou operaci nad stejným handlem; sdílenou knihovnu držte načtenou, dokud se nevrátí všechna volání a nebudou zničeny všechny handly
Rozpočty a publikace
JSON vstup je omezený na 4 MiB a 64 úrovní zanoření a odmítá neplatné UTF-8, duplicitní členy, poškozené číselné limity i useknutí parametrů Int64 na Int32
Surové UTF-8 i Unicode escapování nesou tytéž řetězcové hodnoty, tedy i supplementární znaky reprezentované platnými UTF-16 surrogate páry; nespárované surrogate escapování selžou, dřív než mutace dokumentu či binární publikace
Limity operací zahrnují memoryBytes, outputBytes, resultBytes a pixels; dokumentové limity platí i pro dřív načtené handly, zatímco spravované paměťové i renderovací limity neslibují strop RSS procesu
Výstup PDF i PNG se úplně připraví a zkontroluje, dřív než začnou výstupní callbacky; výstupní callback vlastněný volajícím může ponechat částečný přenos po vlastním selhání I/O, ale neúspěšná binární či výsledková publikace nezapíše formulářové editace ani nevymění dřív načtený kontext
Úspěšné mutace PDF zapíší připravený výstup jako aktuální dokument i jeho soukromý zdrojový snapshot, takže následný import FDF či XFDF se stejnou hodnotou vrátí přesně potvrzené PDF bajty s updated=0, se zachováním dřívějších vyplnění formulářů, typovaných rich appearance, nakresleného textu i importovaných stránek
Soukromé staging soubory se odstraní, když se kontext vymění či zničí; úspěšný inkrementální výstup formulářů i podpisů zachová původní zdrojovou předponu i šifrovací politiku
Důkazy
Volitelná archivační oprava písem umožní ohraničenou substituci a vkládání Ghostscript se skutečnou validací PDF/A-4, dřív než callbacky
Nativní anotované review PDF přidává ke sémantickému porovnání skutečně připravený PDF výstup, Unicode zvýraznění i autentizovaná anotační oprávnění P3
Nativní kontrahové porovnání poskytuje ohraničené dvouhandle sémantické porovnání, Unicode review HTML i skutečnou geometrii zdrojových řádků
Obecné nativní porovnávání dokumentů normalizuje objektové grafy i kódování streamů, porovnává skutečné Cairo pixely s explicitními prahy a zachovává stav dokumentu i publikační rozpočty callbacků
Akceptační klient verifikuje skutečná rozložení C hlaviček i verzované vyhledání symbolů, částečné callbacky, 80 souběžných operací se sdíleným handlem, zrušení, Unicode editace, rollback i šifrované podepisování
Nezávislé čtečky pypdf, MuPDF a OpenSSL verifikují skutečná PDF, PNG pixely, zachovaná hesla, bezpečnostní slovníky, ID dokumentů, přesné mezery ByteRange, platné podpisy i odmítání změněných podepsaných bajtů
Headless API dokumentu · Nativní renderování · Zbývající dodací plán