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

OperationBeteende
infoAntal sidor, formulär och signerade fält
text.extractUnicode-sidtext i JSON och valfri UTF-8-utdata, med en valfri nollbaserad pages-array
forms.readFullständigt kvalificerade fältnamn, Unicode-värden, kompletta choice-urval, typer, flaggor och maxlängder
forms.fillTransaktionella text-, choice-, multiselect-, checkbox- och radio-uppdateringar, text på tryckknappar, matchande inbäddade teckensnittsappearances och inkrementell PDF-utdata
annotations.export / annotations.importAvgränsat annoterings-XFDF-utbyte med tilläggstransaktioner, exakt Unicode, binära strömmar, popup-/svarsreferenser, kryptering och autentiserad certifieringspolicy
forms.export / forms.importAvgrä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
renderCairo PNG-utdata med sida, dpi, view- eller print-användning, annoteringsalternativ och standardkonfigurationen för optional content
signInkrementell 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.verifyVerklig CMS-verifiering, signerade revisionslängder, valfri explicit CA-tillitsbedömning och validering av signerad återkallningsinformation
html.importNativ HTML/CSS-dokumentskapande med Unicode-typsnitt, sidnumrering, bilder, hyperlänkar och valfria AcroForm-kontroller
text.drawSynlig eller osynlig Unicode-sidtext med bevarade ursprungliga sidströmmar och autentiserade krypterade revisioner
ocrVerklig Tesseract-igenkänning med avgränsad barnlivstid, ordresultat och ett valfritt sökbart PDF-lager
pages.importValda sidresursimporter med oberoende källindata och transaktionella måluppdateringar
pdfa.convertRaster- eller text/vektorkonvertering till PDF/A-4, med valfri typsnittsreparation och den valda lägets valideringskrav
compare / compare.contractTvå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