Native Linux C ABI

HotPDFLinuxABI.lpr bouwt een native x86_64 ELF shared library genaamd libhotpdf.so.1, met SONAME libhotpdf.so.1 en publieke symbolen toegewezen aan HOTPDF_1.0

De library gebruikt THPDFHeadlessDocument en CPU-rendering zonder een Windows-component, een actieve desktop, een PDF-viewer of een Python-proces tijdens runtime; Python wordt gebruikt door de build- en acceptatiescripts

Build en acceptatie

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

Gebruik native FPC 3.2.2 of nieuwer met FCL en paszlib, een C-compiler, binutils, Fontconfig en installed TrueType-fonts; de acceptatie-Python-omgeving vraagt daarnaast pypdf met diens AES-provider, PyMuPDF, Pillow en NumPy

FPC_EXE, HPDF_LINUX_OUTPUT en PYTHON_EXE kiezen toollocaties; de default acceptatie-Python-omgeving is /opt/hotpdf-python/bin/python

FPC schrijft normaal een anoniem exportblok in diens ELF linker-response; de build benoemt dat blok met de ingecheckte symbolenkaart vóór het linken, want het toevoegen van een tweede benoemde version script zou conflicteren met het anonieme blok

Publieke interface

Include Lib/hotpdf_abi.h voor de gedeelde record-layout en statusconstanten; hpdf_abi_io_v1_size en hpdf_abi_operation_v1_size rapporteren echte native recordgroottes

De Linux-library exporteert ABI-discovery, capability-discovery, documentcreatie en -destructie, callback loading en saving, pagina-telling, hpdf_document_execute_json_v1 en het twee-documenten-hpdf_document_compare_json_v1-entrypoint

Ontdek de huidige operaties via hpdf_capabilities_json_to_io in plaats van de Windows-operatieset aan te nemen

OperatieGedrag
infoPagina-, formulier- en signed-field-aantallen
text.extractUnicode-paginatekst in JSON en optionele UTF-8-uitvoer, met een optionele zero-based pages-array
forms.readVolledig gekwalificeerde veldnamen, Unicode-waarden, complete choice-selecties, types, vlaggen en maximumlengtes
forms.fillTransactionele tekst-, choice-, multiselect-, checkbox- en radio-updates, pushbutton-captions, matchende embedded-font-appearances en incrementele PDF-uitvoer
annotations.export / annotations.importBegrensde annotation XFDF-uitwisseling met append-transacties, exacte Unicode, binaire streams, popup/reply-referenties, encryptie en geauthenticeerd certification-beleid
forms.export / forms.importBegrensde scalar- en rich FDF/XFDF-interchange met vier echte stijlen per geselecteerde geconfigureerde rich-family, versleutelde PDF-transacties, geregenereerde appearances, signature-policies en synchrone gefragmenteerde callbacks
renderCairo PNG-uitvoer met pagina, dpi, view- of print-usage, annotatie-options en de default optional-content-configuratie
signIncrementele PEM- of PFX-signing, bestaande of nieuw aangemaakte velden, zichtbare appearances en certification, inclusief geauthenticeerde AES-256 R5/R6-invoer en digest-, metadata-, profiel- en gevalideerde evidence-options
signatures.verifyEchte CMS-verificatie, signed-revisie-lengtes, optionele expliciete CA-trust-evaluatie en validatie van signed revocation-informatie
compare / compare.contractTwo-handle page-count-, page-text-, object-count-, rendered-image-, structural- en full-vergelijking, plus semantische contractvergelijking met voorbereide JSON-, HTML- of geannoteerde PDF-review-uitvoer
{"schemaVersion":1,"type":"render","page":0,"dpi":150,"usage":"print","annotations":false,
 "limits":{"memoryBytes":268435456,"outputBytes":268435456,"pixels":100000000}}

Native signing-workflows accepteren een expliciete PEM- of Base64-PFX-identiteit, optionele nieuwe signature-velden en Unicode-appearances, en certification-permissions; geslaagde signing vervangt de geladen context door de voorbereide signed revisie, terwijl gefaalde signing of publicatie de oorspronkelijke context behoudt

Native signing-options binden echte SHA256-, SHA384- of SHA512-selectie, Unicode-signature-informatie, legal attestation, expliciete trust-bytes, gevalideerd signed revocation-bewijs, echte appearance-presets en door de applicatie geclaimde credential- of timestamp-transport-provenance

De optionele optional-content viewer state levert expliciete automatische View-, Print- of Export-usage-toepassingen, zoom, taal, gebruikerscontext en operation-lokale handmatige selecties via ongewijzigde V1-records

De render-operatie accepteert usage: "view" of usage: "print", defaultend naar view; ontdek de keuzes via de capability renderUsages-array, met ongewijzigde V1-callback- en operation-records

Annotation screen- en print-vlaggen volgen de gekozen usage; annotations: false onderdrukt annotaties in beide modi, en de default optional-content-configuratie geldt voor pagina-, XObject- en annotatie-content zonder interactieve viewer-usage-toepassingen uit te voeren

Tests/Linux/Run-LinuxABIRenderUsage.sh verifieert echte PNG-pixels voor plain- en AES R5/R6-bronnen, default-off content, callback-fouten, budgetten, annulering en same-handle-herstel; zie Tests/Linux/HeadlessRenderUsage.en-us.md voor fixture-dependencies en de optionele pre-gegenereerde fixture-directory

Callbacks en levensduur

Form appearance-options accepteren Unicode-tekst, exportwaarden of complete selectie-arrays, expliciete button-statussen, fontinstellingen en transactionele resourcelimieten

Read- en write-callbacks mogen partiele transfers teruggeven; geslaagde transfers moeten positieve voortgang maken en mogen het gevraagde aantal niet overschrijden

Alle callbacks draaien synchroon op de aanroepende thread, inclusief annuleringschecks binnen documentparsing, rendering en cryptografische checkpoints

Callback-invoer wordt gekopieerd naar een exclusief aangemaakt privé-tijdelijk bestand met mode 0600, dus Linux-invoer-callbacks en diens user data hoeven alleen geldig te blijven tot de load- of execute-aanroep terugkeert

Operaties op een gedeelde document-handle serialiseren intern; elke actieve aanroep houdt een onafhankelijke referentie vast, dus een handle uit een progress-callback vernietigen invalideert daaropvolgende opzoek terwijl de huidige aanroep veilig kan afronden

Voer niet recursief een andere operatie op dezelfde handle uit vanuit diens callback; houd de shared library geladen tot alle aanroepen zijn teruggekeerd en elke handle is vernietigd

Budgetten en publicatie

JSON-invoer is begrensd op 4 MiB en 64 nesting-niveaus en verwerpt ongeldige UTF-8, dubbele leden, misvormde numerieke limieten en Int64-naar-Int32-parameter-afkapping

Raw UTF-8 en Unicode-escapes dragen dezelfde stringwaarden, inclusief supplementary characters gerepresenteerd door geldige UTF-16-surrogate pairs; ongepaarde surrogate-escapes falen vóór documentmutatie of binaire publicatie

Operation-limieten omvatten memoryBytes, outputBytes, resultBytes en pixels; documentlimieten gelden ook voor eerder geladen handles, terwijl managed memory- en rendering-limieten geen proces-RSS-cap garanderen

PDF- en PNG-uitvoer is volledig voorbereid en gecheckt voordat output-callbacks beginnen; een output-callback in caller-eigendom kan een partiele transfer vasthouden na diens eigen I/O-fout, maar gefaalde binary- of resultaatpublicatie commit geen formulierbewerkingen en vervangt geen eerder geladen context

Geslaagde PDF-mutaties committen de voorbereide uitvoer als zowel het huidige document als diens privé-bron-snapshot, dus een daaropvolgende FDF- of XFDF-import met dezelfde waarde geeft de exacte gecommitte PDF-bytes terug met updated=0, met behoud van eerdere formulierinvullingen, getypeerde rich-appearances, getekende tekst en geïmporteerde pagina's

Privé staging-bestanden worden verwijderd wanneer de context wordt vervangen of vernietigd; geslaagde incrementele formulier- en signature-uitvoer behoudt de oorspronkelijke bronprefix en het encryptiebeleid

Bewijs

Optionele archival font repair zet begrensde Ghostscript-substitutie en -embedding aan met echte PDF/A-4-validatie vóór callbacks

Native annotated review PDF voegt echte voorbereide PDF-uitvoer, Unicode-highlights en geauthenticeerde P3-annotatiepermissions toe aan semantische vergelijking

Native contract comparison levert begrensde two-handle-semantische vergelijking, Unicode-review-HTML en echte bronregel-geometrie

Algemene native documentvergelijking normaliseert objectgrafen en stream-encoding, vergelijkt echte Cairo-pixels met expliciete drempels en behoudt documentstatus en callback-publicatiebudgetten

De acceptatie-client verifieert echte C header-layouts en versioned symbol-lookup, partiele callbacks, 80 concurrende shared-handle-operaties, annulering, Unicode-bewerkingen, rollback en versleutelde signing

Onafhankelijke pypdf-, MuPDF- en OpenSSL-readers verifiëren de echte PDF's, PNG-pixels, behouden wachtwoorden, security-dictionaries, document-ID's, exacte ByteRange-gaps, geldige signatures en rejectie van gewijzigde signed bytes

Headless document API · Native rendering · Remaining delivery plan