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