THPDFHeadlessDocument
HPDFHeadlessDocument tillhandahåller ett konsoldokument-API för native Linux och Windows med den befintliga HotPDF-objektparsern, Direct File-hjälpfunktioner, teckensnittsavkodare, innehållstolk, filteravkodare och xref-skrivare
Dokumentinläsaren accepterar klassiska korsreferenstabeller, xref-strömmar, hybrida xref-sektioner, inkrementella Prev-kedjor, direkta och komprimerade objekt, ärvda sidresurser, innehållsarrayer, Form XObjects och AcroForm-fältträd
Hybrida sideströmmar har företräde framför den medföljande tabellen, medan nyare revisioner har företräde framför äldre; objektströmsmedlemmar avkodas och tolkas lättviktigt via den gemensamma objektparsern
Livscykel och ägande
Create använder THPDFHeadlessDocumentOptions.Default, medan överlastningen med alternativ accepterar explicita budgeter och en av anroparen ägd cancellation token
LoadFromFile stänger det tidigare dokumentet, öppnar källan skrivskyddad, laddar den aktuella objektgrafen och stänger partiellt tillstånd vid fel; Close släpper källan och alla laddade objekt
LoadFromFile(FileName, Password) autentiserar Standard AES-256 R5- eller R6-dokument via THPDFHeadlessAES256Security; den ursprungliga överlastningen med ett argument använder ett tomt lösenord
Användarlösenord måste ge textextraktion eller formulärifyllning innan dessa operationer körs, medan ägarlösenord kringgår användarbehörighetsbegränsningar; fel lösenord, matchningsfel mot autentiserade Perms, nekade operationer och felformade chiffernyttolaster har distinkta dokumentdiagnoser
Direkta strängar och strömmar dekrypteras via den gemensamma kryptokoden, komprimerade medlemmar dekrypteras bara med sin behållare, och krypterade inkrementella ersättningar förblir krypterade under de ursprungliga nycklarna och behörighetspolicyn
Lösenord använder UTF-8-byte som trunkeras vid 127 byte utan SASLprep-normalisering; hanterare som inte stöds, explicita Crypt-filter och PDF MAC-policyer diagnostiseras i stället för att ignoreras
Kodade dictionary-nycklar och resursnamn avkodas före användning, skiftläge förblir betydelsefullt, och duplicerade avkodade nycklar avvisas; fältflaggor och MaxLen måste rymmas i det stödda icke-negativa 32-bitarsintervallet
Instanser är inte trådsäkra; använd en instans per arbetare och håll dess cancellation token vid liv tills instansen är förstörd
Sidor och text
PageCount redovisar antalet sidträdsblad; ExtractPageText(PageIndex) accepterar ett nollbaserat index och returnerar Unicode-text sammansatt från den gemensamma glyftolken
ExtractPageTextBounded tillämpar tillfälliga glyf- och strömgränser före textförberedelsen och återställer alla ursprungliga resursalternativ efter framgång, fel eller avbrott
GetObjectAccess exponerar skrivskyddad lånad katalog-, informations- och objektåtkomst med avgränsad indexallokering för native strukturell och fullständig jämförelse
Textavkodning följer teckensnittskodningar, kodningsskillnader, inbäddade ToUnicode-CMaps, explicita bredder och leverantören av standardteckensnittsmått; nästlade Form XObjects tillämpar sina matriser och använder egna eller ärvda resursdictionaries
Reserven för standardteckensnitt i Linux kräver Fontconfig och installerade TrueType-teckensnitt; komplexa dokumentteckensnitt måste tillhandahålla en stödd avkodningsstrategi, och saknade teckensnittsresurser ger en diagnos
AppendPageText lägger till synlig eller anpassad osynlig Unicode-text medan ursprungligt sidinnehåll och krypterade säkerhetspolicyer behålls
AppendImportedPages klonar valda sidresursgrafer, ärvd geometri och synliga normal-appearances medan befintliga destinationsrevisioner och autentiserad krypteringspolicy bevaras
AcroForm-textvärden
FormFieldCount, GetFormField(FieldIndex) och FindFormField(Name) räknar upp terminalfält med fullständigt kvalificerade namn och ärvda fälttyper, flaggor, maxlängder och värden; index är nollbaserade, och ett saknat namn returnerar -1
SetTextFieldValue(FieldIndex, Text) accepterar skrivbara Tx-fält, skriver en UTF-16BE PDF-sträng och sätter NeedAppearances=true på AcroForm-dictionaryn
Denna metod med enbart värde förlitar sig på att visaren regenererar; visare som inte regenererar appearances kan fortsätta visa ett gammalt utseende eller en tom widget
SetTextFieldValueWithAppearance genererar explicita Unicode-appearances för varje befintlig widget med ett av anroparen tillhandahållet TrueType-teckensnitt, verkliga glyfmått, Identity-H-kodning, ToUnicode och full FontFile2-inbäddning
Appearance-profilen stöder text på en rad och flerradig text, radbrytning, comb-celler, kvartsvartsrotationer, fast storlek eller automatisk anpassning, justering samt valfri native HarfBuzz/FriBidi-komplex formning
SetChoiceFieldValuesWithAppearance hanterar listor med flerval, ärvda alternativ, sorterade exportarrayer och varje synlig vald rad; hjälpfunktionen med ett värde stöder också combo-export-/visningsetiketter
GetChoiceFieldValues läser hela den valda exportarrayen; SetButtonFieldValueWithAppearance och SetPushButtonAppearance genererar verkliga knapptillstånd och texter
Nya appearance-objekt och strömmar begränsas före fältändringar och förblir krypterade under den ursprungliga AES-säkerhetspolicyn när de sparas; native Linux Cairo och fristående läsare konsumerar samma genererade objekt
Skrivskyddade fält, värden längre än MaxLen i UTF-16-kodenheter, icke-textfält, XFA-formulär, signerade fält och certifierade dokumentbehörigheter avvisas för redigering
Signerade dokument använder autentiserade DocMDP- och FieldMDP-policyer: tillåtna formuläruppdateringar bevarar befintliga signerade revisioner, medan låsta fält, P1-begränsningar och försök att skriva över signerade signaturfält avvisas
Validerade DSS/VRI-belägg lägger till autentiserade certifikat- och återkallningsdata till en inkrementell revision utan att ändra befintliga ByteRange-signaturer
Signaturverifiering
SignatureCount räknar upp signerade AcroForm-signaturfält och VerifySignature(SignatureIndex, Options) validerar nollbaserade signaturer med den gemensamma parsern och den strömmande OpenSSL 3 CMS-leverantören
PDF-profilen accepterar adbe.pkcs7.detached och automatiskt igenkänd ETSI.CAdES.detached med hexadecimala eller standardliterala Contents; CAdES autentiserar alltid ESS-bindningen av signeringscertifikat, medan explicita CA-inställningar bedömer tillit separat
DocTimeStamp med ETSI.RFC3161 autentiserar automatiskt äkta inkapslad TSTInfo, ESS, TSA-ändamål och signatarnamn samt exakt PDF-avtryck; konfigurerade tidsstempelrötter och CRL:er bedömer TSA-tillit separat
Verifieringen validerar det exakta osignerade gapet inklusive dess avgränsare och binder dess avkodade byte till den aktuella signaturdictionaryn före den kryptografiska verifieringen
Resultatet skiljer integritet, explicit bedömd CA-tillit och osignerade byte efter den autentiserade revisionen; PDF-signaturprofiler som inte stöds ger en typad diagnos
Se HPDFVerifyHeadlessCMS för körtidskrav och THPDFHeadlessCMSOptions för budgeter och tillitsinställningar
Inkrementella godkännandesignaturer
SignToFile signerar ett befintligt skrivbart, osignerat Sig-fält och publicerar en fristående inkrementellt uppdaterad PDF med ett av anroparen tillhandahållet PEM-certifikat och okrypterad PEM-privatnyckel
AddSignatureField skapar en sidwidget och dess AcroForm-länkar, inklusive en ny AcroForm på en vanlig importerad PDF; SetSignatureFieldAppearance genererar dess synliga text, och SignPFXToFile laddar en PKCS12-certifikat-/nyckelidentitet med dess kedja
CertificationPermission skapar den första DocMDP-certifieringssignaturen; P2 och P3 tillåter efterföljande godkännandesignaturer i befintliga fält, medan P1 avvisar ytterligare signaturer
De ursprungliga källbytena och den laddade objektgrafen förblir oförändrade; senare godkännandesignaturer bevarar tidigare signaturbyte och deras autentiserade revisionsgränser
Standard AES-256 R5- och R6-kryptering, lösenord, ID:n och behörigheter förblir i kraft, inklusive krypterade objektströmskällor; signatursträngen Contents följer PDF:ns undantag från kryptering
Befintliga signaturvärden, skrivskyddade fält, policyer för certifierade dokument, nekade formulärifyllningsbehörigheter, divergerande cancellation tokens och uttömda utdata-budgeter avvisas utan att någon utdata publiceras
Dokumenttidsstämplar
TimestampToFile skapar en äkta RFC 3161-dokumenttidsstämpel i ett befintligt osignerat signaturfält utan någon applikationssigneringsnyckel, med en av anroparen ägd TSA-transport och explicit TSA-tillit
Skrivaren bevarar ursprungliga revisioner och AES-säkerhet, deklarerar ESIC-utökningen för indata äldre än PDF 2.0 och publicerar atomärt först när kontroller av nonce, avtryck, signatur, certifikat, konfigurerad återkallning och seed har godkänts
Nödvändiga autentiserade dokumenttidsstämpeländringar tillåts under DocMDP och FieldMDP; vanliga formulärredigeringar och godkännandesignaturer behåller sina ursprungliga begränsningar
FDF- och XFDF-formulärutbyte
SaveAnnotationsXFDFToFile lägger till avgränsade mappade annoteringar till en fristående inkrementell revision; HPDFExportHeadlessAnnotationsXFDF returnerar deras XFDF-byte
ExportFormData returnerar avgränsad Unicode-fältdata, inklusive verkliga choice-arrayer och exportlägen för checkbox eller radio
ImportFormDataToFile genererar äkta appearances på nytt i en privat autentiserad revisionsgraf och publicerar atomärt en inkrementell PDF medan den laddade källstatusen bevaras
ImportRichFormDataToFile importerar den avgränsade XHTML-profilen från FDF RV eller XFDF value-richtext med verkliga program för rak, fet, kursiv och fet kursiv stil
SaveRichTextFieldUpdatesToFile tillämpar skalära fält och ursprungliga typade rich-runs i en fristående atomär revision och bevarar verkliga teckensnittsprogram och PDF-numerisk precision; oförändrade skyddade fält kräver matchande avkodade appearances och uppslagna resurser för varje widget
Befintlig kryptering, read-only-flaggor, autentiserade DocMDP och FieldMDP, ursprungliga signaturer, avbrott och resursbudgeter upprätthålls fortfarande; se Native FDF- och XFDF-formulärdata för stödd syntax och gränser för skalärt utbyte
Lånad renderingsåtkomst
GetRenderAccess(PageIndex) tillhandahåller den befintliga siddictionaryn, ärvda resurser, teckensnittsuppslagare, objektuppslagning, behörighetskontroll, cancellation token och avgränsade callbacks för avkodade strömmar via THPDFHeadlessRenderAccess
Detta är en seriell skrivskyddad lånad vy; dokumentet måste förbli laddat och oförändrat tills renderaren är klar, och anropare får inte mutera dess exponerade objektgraf
Vyns RequireOutputPath-callback kontrollerar en blivande utdata mot källans kanoniska sökväg och fysiska filidentitet utan att skapa eller ändra en fil
Fristående utdata
ExtractPageGlyphs returnerar positionerade glyfer genom den avgränsade vandringen i nästlat innehåll; AnalyzePageSemanticText tillhandahåller semantisk text och källgeometri för native kontraktjämförelse
SaveToFile(FileName) kopierar originalbytena och lägger till ersättningsobjektvärden, en klassisk xref-tabell och en trailer länkad via Prev; komprimerade objektmedlemmar materialiseras som direkta objekt i den tillagda revisionen, och ursprungliga strömbyte bevaras
Utdata får inte aliasa källsökvägen eller filidentiteten; skrivningen använder en exklusivt skapad staging-fil i destinationskatalogen, spolar den och publicerar den med atomärt namnbyte
Budget-, avbrotts- eller serialiseringsfel bevarar en befintlig destination och tar bort den opublicerade staging-filen; källan förblir skrivskyddad
Native annoterad gransknings-PDF exporterar verkliga Unicode-överstrykningar och synliga appearances med autentiserade annoteringsbehörigheter och behåller det ursprungliga laddade dokumentet och signaturrevisionerna
Formatgränser
Den aktuella profilen stöder Standard AES-256 R5- och R6-kryptering, diagnostiserar explicit hanterare och strömfilter som inte stöds och avvisar borttagna free-object-generationer som dess skrivare inte kan representera
Bootstrap-xref-strömmar kräver direkta dictionary-värden och en direkt avgränsad Length; felformade bredder, överlappande undersektioner, teckenlösa offset över Int64, matchningsfel hos komprimerade medlemmar, referenscykler och konfigurerade gränser ger typade diagnoser
Avkodat innehåll stöder filtren Flate, ASCIIHex, ASCII85 och LZW med stödda prediktorer och indirekta strömlängder; bildnyttolaster avkodas inte för textextraktion
Native signeringsarbetsflöden täcker signaturfält, synliga appearances och certifiering; autentiserade policyer för signerade formulär samt API:er för tidsstämpel och långtidsvalidering behåller sina explicita integritets- och tillitsalternativ
Acceptans
Namngivna rich-teckensnittsfamiljer lägger till flera verkliga tillhandahållna familjer via SetRichTextFieldValueWithFamilies och ImportRichFormDataWithFamiliesToFile, med den befintliga fält-, säkerhets- och transaktionspolicyn
Native rich text-fält tillhandahåller typade stilade runs, verkliga inbäddade stils-teckensnittsappearances, synkroniserade V- och RV-värden, krypterad inkrementell utdata och avgränsade transaktionella redigeringar; GetRichTextFieldValue läser lagrad eller ärvd XHTML
Tests/Linux/Run-HeadlessDocumentTests.sh bygger en native ELF-körbar med tömda skrivbordsvariabler och kontrollerar GUI-biblioteksberoenden; Run-HeadlessDocumentTests-Windows.cmd Win32 och Win64 kör samma gemensamma dokument-API
Se THPDFHeadlessFormField, EHPDFHeadlessDocumentError och THPDFHeadlessDiagnosticCode för returnerade värden och typade diagnoser