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

OperaceChování
infoPočty stránek, formulářů a podepsaných polí
text.extractUnicode text stránek v JSON i volitelném UTF-8 výstupu, s volitelným zero-based polem stránek
forms.readPlně kvalifikované názvy polí, Unicode hodnoty, kompletní výběry voleb, typy, příznaky i maximální délky
forms.fillTransakč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.importOhranič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.importOhranič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
renderCairo PNG výstup se stránkou, dpi, použitím view či print, volbami anotací i výchozí konfigurací optional-content
signInkrementá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.verifySkutečná verifikace CMS, délky podepsaných revizí, volitelné explicitní vyhodnocení CA důvěry i validace podepsaných revokačních informací
html.importNativní tvorba dokumentů HTML/CSS s Unicode písmy, stránkováním, obrázky, hyperlinky i volitelnými ovládacími prvky AcroForm
text.drawViditelný či neviditelný Unicode text stránek se zachovanými původními streamy stránek i autentizovanými šifrovanými revizemi
ocrSkutečné rozpoznání Tesseract s ohraničenou životností podprocesu, výsledky slov i volitelnou prohledávatelnou PDF vrstvou
pages.importImporty resource vybraných stránek s nezávislým zdrojovým vstupem i transakčními aktualizacemi cíle
pdfa.convertRaster či text/vektor konverze PDF/A-4, s volitelnou opravou písem i validačními požadavky vybraného režimu
compare / compare.contractDvouhandle 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