Native Linux C ABI
HotPDFLinuxABI.lpr bygger et native x86_64 ELF delt bibliotek navngivet libhotpdf.so.1 med SONAME libhotpdf.so.1 og public symboler tildelt HOTPDF_1.0
Biblioteket bruger THPDFHeadlessDocument og CPU-rendering uden en Windows-komponent, et aktivt skrivebord, en PDF-viewer eller en Python-proces ved runtime; Python bruges af build- og accept-scriptene
Build og accept
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
Brug native FPC 3.3.1 eller nyere med matchende FCL- og paszlib-units, en C-compiler, binutils, Fontconfig og installerede TrueType-fonte; accept-Python-miljøet behøver også pypdf med dets AES-provider, PyMuPDF, Pillow og NumPy
FPC_EXE, HPDF_LINUX_OUTPUT og PYTHON_EXE vælger værktøjsplaceringer; standard accept-Python-miljøet er /opt/hotpdf-python/bin/python
FPC skriver normalt en anonym exportblok ind i sin ELF-linker-response; buildet navngiver den blok med det indcheckede symbolmap inden linking, fordi en anden navngiven version script ville konflikte med den anonyme blok
Public interface
Inkluder Lib/hotpdf_abi.h for det delte record-layout og statuskonstanter; hpdf_abi_io_v1_size og hpdf_abi_operation_v1_size rapporterer faktiske native record-størrelser
Linux-biblioteket eksporterer ABI-discovery, capability-discovery, dokumentoprettelse og -destruktion, callback-indlæsning og -gemning, sideoptælling, hpdf_document_execute_json_v1 samt todokument-hpdf_document_compare_json_v1-indgangspunktet
Opdag aktuelle operationer gennem hpdf_capabilities_json_to_io i stedet for at antage Windows-operationssættet
| Operation | Adfærd |
|---|---|
info | Side-, formular- og signeret felt-antal |
text.extract | Unicode sidetekst i JSON og valgfri UTF-8-output med et valgfrit nul-baseret pages-array |
forms.read | Fuldt kvalificerede feltnavne, Unicode-værdier, komplette choice-markeringer, typer, flag og maksimale længder |
forms.fill | Transaktionelle tekst-, choice-, multiselect-, checkbox- og radio-opdateringer, push-button-captions, matchende indlejret-font-appearances og inkrementel PDF-output |
annotations.export / annotations.import | Afgrænset annotation XFDF-udveksling med append-transaktioner, eksakt Unicode, binære streams, popup/svar-referencer, kryptering og autentificeret certificeringspolitik |
forms.export / forms.import | Afgrænset scalar- og rich FDF/XFDF-udveksling med fire rigtige styles pr. valgt konfigureret rich-familie, krypterede PDF-transaktioner, regenererede appearances, signaturpolitikker og synkrone fragmenterede callbacks |
render | Cairo PNG-output med side, dpi, view- eller print-brug, annotation-options og default optional content-konfigurationen |
sign | Inkrementel PEM- eller PFX-signering, eksisterende eller nyligt oprettede felter, synlige appearances og certificering, inklusive autentificerede AES-256 R5/R6-input og digest-, metadata-, profil- og valideret evidence-options |
signatures.verify | Faktisk CMS-verifikation, signeret revisionslængder, valgfri eksplicit CA-trust-evaluering og validering af signeret revocation-information |
html.import | Native HTML/CSS dokumentoprettelse med Unicode-fonte, paginering, billeder, hyperlinks og valgfrie AcroForm-kontroller |
text.draw | Synlig eller usynlig Unicode sidetekst med bevarede originale sidestreams og autentificerede krypterede revisioner |
ocr | Rigtig Tesseract-genkendelse med afgrænset barn-levetid, ordresultater og et valgfrit søgbart PDF-lag |
pages.import | Valgte side ressource-importer med uafhængig kilde-input og transaktionelle destinationsopdateringer |
pdfa.convert | Raster- eller tekst/vektor PDF/A-4-konvertering med valgfri font-reparation og den valgte modes valideringskrav |
compare / compare.contract | To-handle sideantal-, sidetekst-, objektantal-, rendered image-, strukturel og fuld sammenligning plus semantisk kontraktsammenligning med forberedt JSON-, HTML- eller annoteret PDF-review-output |
{"schemaVersion":1,"type":"render","page":0,"dpi":150,"usage":"print","annotations":false,
"limits":{"memoryBytes":268435456,"outputBytes":268435456,"pixels":100000000}}
Native signeringsworkflows accepterer en eksplicit PEM- eller Base64 PFX-identitet, valgfrie nye signaturfelter og Unicode-appearances samt certificeringstilladelser; succesfuld signering erstatter den indlæste kontekst med den forberedte signerede revision, mens mislykket signering eller publicering bevarer den originale kontekst
Native signerings-options binder faktisk SHA256-, SHA384- eller SHA512-valg, Unicode signaturinformation, juridisk attestation, eksplicitte trust-bytes, valideret signeret revocation-evidence, rigtige appearance-presets og applikationshævdet legitimations- eller timestamp-transportproveniens
Den valgfrie optional content viewer-tilstand leverer eksplicitte automatiske View-, Print- eller Export-usage-applications, zoom, sprog, brugerkontekst og operations-lokale manuelle markeringer gennem uændrede V1-records
render-operationen accepterer usage: "view" eller usage: "print" med view som standard; opdag valgene gennem capability renderUsages-arrayet med uændrede V1-callback- og operations-records
Annotations screen- og print-flag følger den valgte brug, og annotations: false undertrykker annotationer i begge tilstande; udeladelse af optionalContent beholder den statiske default-konfiguration, mens et eksplicit objekt aktiverer de dokumenterede automatiske anbefalinger og operations-lokale manuelle markeringer
Tests/Linux/Run-LinuxABIRenderUsage.sh verificerer rigtige PNG-pixels for plain- og AES R5/R6-kilder, default-off indhold, callback-fejl, budgetter, cancellation og same-handle-genopretning; se Tests/Linux/HeadlessRenderUsage.en-us.md for fixture-afhængigheder og den valgfrie pre-genererede fixture-mappe
Callbacks og levetid
Form appearance-options accepterer Unicode-tekst, exportværdier eller komplette markerings-arrays, eksplicitte button-tilstande, fontindstillinger og transaktionelle ressourcelgrænser
Læse- og skrive-callbacks må returnere delvise overførsler; succesfulde overførsler skal gøre positiv fremgang og må ikke overstige det anmodede antal
Alle callbacks afvikles synkront på den kaldende tråd, inklusive cancellation-tjek inde i dokumentparsing, rendering og kryptografiske checkpoints
Callback-input kopieres til en eksklusivt oprettet privat midlertidig fil med mode 0600, så Linux input-callbacks og deres user data kun behøver at forblive gyldige, indtil load- eller execute-kaldet returnerer
Operationer på et delt dokumenthandle serialiseres internt; hvert aktivt kald holder en uafhængig reference, så at destruere et handle fra en progress-callback invaliderer efterfølgende opslag, mens det aktuelle kald får lov at afslutte sikkert
Rekursivt at afvikle en anden operation på samme handle fra dets callback bør undgås; hold det delte bibliotek indlæst, indtil alle kald er returneret, og hvert handle er destrueret
Budgetter og publicering
JSON-input er begrænset til 4 MiB og 64 nesting-niveauer og afviser ugyldig UTF-8, duplikerede members, misdannede numeriske grænser og Int64-til-Int32 parameterafklipning
Rå UTF-8 og Unicode-escapes bærer samme strengværdier, inklusive supplementary-tegn repræsenteret af gyldige UTF-16 surrogate-par; uparede surrogate-escapes fejler inden dokumentmutation eller binær publicering
Operationsgrænser inkluderer memoryBytes, outputBytes, resultBytes og pixels; dokumentgrænser gælder også tidligere indlæste handles, mens managed hukommelse og renderingsgrænser ikke lover en proces-RSS-loft
PDF- og PNG-output er fuldt forberedt og tjekket, før output-callbacks begynder; en kalder-ejet output-callback kan beholde en delvis overførsel efter egen I/O-fejl, men mislykket binær eller resultatpublicering committerer ikke formularedigeringer eller erstatter en tidligere indlæst kontekst
Succesfulde PDF-mutationer committerer det forberedte output som både det aktuelle dokument og dets private kildesnapshot, så en efterfølgende samme-værdi FDF- eller XFDF-import returnerer de eksakte committede PDF-bytes med updated=0 og beholder tidligere formulardfyldninger, typede rich-appearances, tegnet tekst og importerede sider
Private staging-filer fjernes, når konteksten erstattes eller destrueres; succesfuldt inkrementelt formular- og signaturoutput bevarer det originale kildepræfiks og krypteringspolitik
Evidence
Valgfri arkiveringsfont-reparation aktiverer afgrænset Ghostscript-substitution og -indlejring med rigtig PDF/A-4-validering inden callbacks
Native annoteret review-PDF tilføjer faktisk forberedt PDF-output, Unicode-highlights og autentificerede P3-annotationstilladelser til semantisk sammenligning
Native kontraktsammenligning leverer afgrænset to-handle semantisk sammenligning, Unicode review-HTML og rigtig kildelinje-geometri
Generel native dokumentsammenligning normaliserer objektgrafer og stream-encoding, sammenligner rigtige Cairo-pixels med eksplicitte tærskler og bevarer dokumenttilstand og callback-publiceringsbudgetter
Accept-klienten verificerer rigtige C header-layouts og versioneret symbolopslag, delvise callbacks, 80 samtidige shared handle-operationer, cancellation, Unicode-redigeringer, rollback og krypteret signering
Uafhængige pypdf-, MuPDF- og OpenSSL-readers verificerer de rigtige PDF'er, PNG-pixels, bevarede adgangskoder, security dictionaries, dokument-ID'er, eksakte ByteRange-gaps, gyldige signaturer og afvisning af ændrede signerede bytes
Headless dokument-API · Native rendering · Tilbageværende leveringsplan