Native Linux C ABI
HotPDFLinuxABI.lpr bygger ett native x86_64-ELF-delat bibliotek med namnet libhotpdf.so.1, med SONAME libhotpdf.so.1 och publika symboler tilldelade HOTPDF_1.0
Biblioteket använder THPDFHeadlessDocument och CPU-rendering utan någon Windows-komponent, aktivt skrivbord, PDF-visare eller Python-process vid körning; Python används av bygg- och acceptansskripten
Bygge och acceptans
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
Använd native FPC 3.2.2 eller nyare med FCL och paszlib, en C-kompilator, binutils, Fontconfig och installerade TrueType-teckensnitt; Python-miljön för acceptansen behöver dessutom pypdf med dess AES-leverantör, PyMuPDF, Pillow och NumPy
FPC_EXE, HPDF_LINUX_OUTPUT och PYTHON_EXE väljer verktygens platser; standardmiljön för acceptans-Python är /opt/hotpdf-python/bin/python
FPC skriver normalt ett anonymt exportblock i sin ELF-länkarrespons; bygget ger det blocket ett namn via den incheckade symbolkartan före länkningen, eftersom ett andra namngivet versionsskript skulle krocka med det anonyma blocket
Publikt gränssnitt
Inkludera Lib/hotpdf_abi.h för den delade postlayouten och statuskonstanterna; hpdf_abi_io_v1_size och hpdf_abi_operation_v1_size redovisar de verkliga native-poststorlekarna
Linux-biblioteket exporterar ABI-upptäckt, kapacitetsupptäckt, dokumentskapande och -förstörelse, inläsning och sparande av callbacks, sidräkning, hpdf_document_execute_json_v1 och ingångspunkten hpdf_document_compare_json_v1 för två dokument
Upptäck aktuella operationer via hpdf_capabilities_json_to_io i stället för att anta Windows-operationsetet
| Operation | Beteende |
|---|---|
info | Antal sidor, formulär och signerade fält |
text.extract | Unicode-sidtext i JSON och valfri UTF-8-utdata, med en valfri nollbaserad pages-array |
forms.read | Fullständigt kvalificerade fältnamn, Unicode-värden, kompletta choice-urval, typer, flaggor och maxlängder |
forms.fill | Transaktionella text-, choice-, multiselect-, checkbox- och radio-uppdateringar, text på tryckknappar, matchande inbäddade teckensnittsappearances och inkrementell PDF-utdata |
annotations.export / annotations.import | Avgränsat annoterings-XFDF-utbyte med tilläggstransaktioner, exakt Unicode, binära strömmar, popup-/svarsreferenser, kryptering och autentiserad certifieringspolicy |
forms.export / forms.import | Avgränsat skalärt och rich FDF/XFDF-utbyte med fyra verkliga stilar per vald konfigurerad rich-familj, krypterade PDF-transaktioner, omgenererade appearances, signaturpolicyer och synkrona fragmenterade callbacks |
render | Cairo PNG-utdata med sida, dpi, view- eller print-användning, annoteringsalternativ och standardkonfigurationen för optional content |
sign | Inkrementell PEM- eller PFX-signering, befintliga eller nyskapade fält, synliga appearances och certifiering, inklusive autentiserade AES-256 R5/R6-indata och alternativ för sammandrag, metadata, profil och validerade belägg |
signatures.verify | Verklig CMS-verifiering, signerade revisionslängder, valfri explicit CA-tillitsbedömning och validering av signerad återkallningsinformation |
html.import | Nativ HTML/CSS-dokumentskapande med Unicode-typsnitt, sidnumrering, bilder, hyperlänkar och valfria AcroForm-kontroller |
text.draw | Synlig eller osynlig Unicode-sidtext med bevarade ursprungliga sidströmmar och autentiserade krypterade revisioner |
ocr | Verklig Tesseract-igenkänning med avgränsad barnlivstid, ordresultat och ett valfritt sökbart PDF-lager |
pages.import | Valda sidresursimporter med oberoende källindata och transaktionella måluppdateringar |
pdfa.convert | Raster- eller text/vektorkonvertering till PDF/A-4, med valfri typsnittsreparation och den valda lägets valideringskrav |
compare / compare.contract | Tvåhandles-jämförelse av sidantal, sidtext, objektantal, renderad bild, struktur och fullständig jämförelse, plus semantisk kontraktjämförelse med förberedd granskningsutdata i JSON, HTML eller annoterad PDF |
{"schemaVersion":1,"type":"render","page":0,"dpi":150,"usage":"print","annotations":false,
"limits":{"memoryBytes":268435456,"outputBytes":268435456,"pixels":100000000}}
Native signeringsarbetsflöden accepterar en explicit PEM- eller Base64 PFX-identitet, valfria nya signaturfält och Unicode-appearances samt certifieringsbehörigheter; lyckad signering ersätter den laddade kontexten med den förberedda signerade revisionen, medan misslyckad signering eller publicering bevarar den ursprungliga kontexten
Native signeringsalternativ binder verkligt val av SHA256, SHA384 eller SHA512, Unicode-signaturinformation, juridiskt intygande, explicita tillitsbyte, validerade signerade återkallningsbelägg, riktiga appearance-förinställningar samt applikationshävdad legitimations- eller tidsstempel-transportproveniens
Det valfria tillståndet för optional content-visare tillhandahåller explicita automatiska View-, Print- eller Export-tillämpningar, zoom, språk, användarkontext och operation-lokala manuella val via oförändrade V1-poster
render-operationen accepterar usage: "view" eller usage: "print", med view som standard; upptäck valen via kapacitetsarrayen renderUsages, med oförändrade V1-callback- och operationsposter
Annoteringarnas skärm- och utskriftsflaggor följer vald användning, och annotations: false undertrycker annoteringar i båda lägena; att utelämna optionalContent behåller den statiska standardkonfigurationen, medan ett uttryckligt objekt aktiverar de dokumenterade automatiska rekommendationerna och operationsspecifika manuella valen
Tests/Linux/Run-LinuxABIRenderUsage.sh verifierar verkliga PNG-pixlar för vanliga och AES R5/R6-källor, inaktiverat innehåll som standard, callbackfel, budgeter, avbrott och återhämtning med samma handle; se Tests/Linux/HeadlessRenderUsage.en-us.md för fixture-beroenden och den valfria föregenererade fixture-katalogen
Callbacks och livstid
Alternativ för formulärappearances accepterar Unicode-text, exportvärden eller kompletta urvalsarrayer, explicita knapptillstånd, teckensnittsinställningar och transaktionella resursgränser
Läs- och skrivcallbacks får returnera partiella överföringar; lyckade överföringar måste göra positivt framsteg och får inte överskrida det begärda antalet
Alla callbacks körs synkront på anropande tråd, inklusive avbrottskontroller inuti dokumentparsning, rendering och kryptografiska kontrollpunkter
Callback-indata kopieras till en exklusivt skapad privat temporär fil med läge 0600, så Linux-indatacallbacks och deras användardata behöver bara förbli giltiga tills laddnings- eller exekveringsanropet returnerar
Operationer på ett delat dokumenthandle serialiseras internt; varje aktivt anrop håller en oberoende referens, så att förstörelse av ett handle från en progress-callback ogiltigförklarar efterföljande uppslag samtidigt som det aktuella anropet får avslutas säkert
Kör inte rekursivt en annan operation på samma handle från dess callback; håll det delade biblioteket inläst tills alla anrop har returnerat och varje handle har förstörts
Budgeter och publicering
JSON-indata begränsas till 4 MiB och 64 nästlingsnivåer, och avvisar ogiltig UTF-8, duplicerade medlemmar, felformade numeriska gränser och Int64-till-Int32-parametertrunkering
Rå UTF-8 och Unicode-escapes bär samma strängvärden, inklusive tilläggstecken representerade av giltiga UTF-16-surrogatpar; oparade surrogat-escapes misslyckas innan dokumentet muteras eller binär utdata publiceras
Operationsgränser omfattar memoryBytes, outputBytes, resultBytes och pixels; dokumentgränser gäller också tidigare laddade handles, medan gränser för hanterat minne och rendering inte lovar något tak för processens RSS
PDF- och PNG-utdata är helt förberedd och kontrollerad innan utdata-callbacks börjar; ett utdata-callback som anroparen äger kan behålla en partiell överföring efter sitt eget I/O-fel, men misslyckad binär eller resultatpublicering genomför inte formulärredigeringar eller byter en tidigare laddad kontext
Lyckade PDF-ändringar verkställer den förberedda utdata som både aktuellt dokument och dess privata källögonblicksbild, så att en efterföljande import av FDF eller XFDF med samma värden returnerar exakt de genomförda PDF-bytena med updated=0, med tidigare formulärifyllningar, typade rich-appearances, ritad text och importerade sidor behållna
Privata staging-filer tas bort när kontexten byts eller förstörs; lyckad inkrementell formulär- och signaturutdata bevarar originalkällans prefix och krypteringspolicy
Belägg
Valfri arkiv-teckensnittsreparation möjliggör avgränsad Ghostscript-ersättning och -inbäddning med äkta PDF/A-4-validering före callbacks
Native annoterad gransknings-PDF lägger till verklig förberedd PDF-utdata, Unicode-överstrykningar och autentiserade P3-annoteringsbehörigheter till semantisk jämförelse
Native kontraktjämförelse tillhandahåller avgränsad semantisk tvåhandles-jämförelse, Unicode-gransknings-HTML och verklig källradsgeometri
Allmän native dokumentjämförelse normaliserar objektgrafer och strömkodning, jämför riktiga Cairo-pixlar med explicita trösklar och bevarar dokumenttillstånd och callback-publiceringsbudgeter
Acceptansklienten verifierar verkliga C-headerlayouter och versionshanterad symboluppslagning, partiella callbacks, 80 samtidiga delade-handle-operationer, avbrott, Unicode-redigeringar, rollback och krypterad signering
Fristående pypdf-, MuPDF- och OpenSSL-läsare verifierar de verkliga PDF-filerna, PNG-pixlar, behållna lösenord, security-dictionaries, dokument-ID:n, exakta ByteRange-gap, giltiga signaturer och avvisning av ändrade signerade byte
Headless dokument-API · Native rendering · Återstående leveransplan