THPDFHeadlessDocument
HPDFHeadlessDocument levert een console document-API voor native Linux en Windows met de bestaande HotPDF-object-parser, Direct File-helpers, font-decoders, content-interpreter, filter-decoders en xref-writer
De document-loader accepteert klassieke cross-reference-tabellen, xref-streams, hybride xref-secties, incrementele Prev-ketens, directe en gecomprimeerde objecten, geërfde pagina-resources, content-arrays, Form XObjects en AcroForm-veldbomen
Hybride side-streams hebben voorrang op de bijbehorende tabel, terwijl nieuwere revisies voorrang hebben op oudere; object-stream-leden worden lui gedecodeerd en geparsd via de gedeelde object-parser
Levenscyclus en eigendom
Create gebruikt THPDFHeadlessDocumentOptions.Default, terwijl de options-overload expliciete budgetten en een annuleringstoken in caller-eigendom accepteert
LoadFromFile sluit het vorige document, opent de bron read-only, laadt de huidige objectgraaf en sluit partiele status bij falen; Close geeft de bron en alle geladen objecten vrij
LoadFromFile(FileName, Password) authenticeert Standard AES-256 R5- of R6-documenten via THPDFHeadlessAES256Security; de originele één-argument-overload gebruikt een leeg wachtwoord
User-wachtwoorden moeten tekstextractie of formulierinvulling verlenen voordat die operaties worden uitgevoerd, terwijl owner-wachtwoorden user-permission-beperkingen omzeilen; verkeerde wachtwoorden, geauthenticeerde Perms-mismatches, geweigerde operaties en misvormde cipher-payloads hebben distincte document-diagnostiek
Directe strings en streams worden ontsleuteld via de gedeelde cryptografische code, gecomprimeerde leden worden alleen met diens container ontsleuteld, en versleutelde incrementele vervangingen blijven versleuteld onder de originele keys en het permission-beleid
Wachtwoorden gebruiken UTF-8-bytes afgekapt op 127 bytes zonder SASLprep-normalisatie; niet-ondersteunde handlers, expliciete Crypt-filters en PDF MAC-policies worden gediagnosticeerd in plaats van genegeerd
Encoded dictionary-keys en resourcenamen worden vóór gebruik gedecodeerd, case blijft significant, en dubbele gedecodeerde keys worden geweigerd; veldvlaggen en MaxLen moeten in het ondersteunde niet-negatieve 32-bit-bereik passen
Instanties zijn niet thread-safe; gebruik één instantie per worker en houd diens annuleringstoken in leven tot de instantie wordt vernietigd
Pagina's en tekst
PageCount rapporteert het aantal page-tree-bladeren; ExtractPageText(PageIndex) accepteert een zero-based index en geeft Unicode-tekst terug opgebouwd vanuit de gedeelde glyph-interpreter
ExtractPageTextBounded past tijdelijke glyph- en streamlimieten toe vóór tekstvoorbereiding en herstelt alle originele resource-options na succes, falen of annulering
GetObjectAccess legt read-only geleende catalog-, information- en object-toegang bloot met begrensde index-allocatie voor native structurele en volledige vergelijking
Tekstdecodering volgt font-encodings, encoding-verschillen, embedded ToUnicode CMaps, expliciete widths en de standard-font-metric-provider; nested Form XObjects passen diens matrices toe en gebruiken diens eigen of geërfde resource-dictionaries
De Linux standard-font-fallback vraagt Fontconfig en installed TrueType-fonts; complexe documentfonts moeten een ondersteunde decodeerstrategie leveren, en ontbrekende fontresources leveren een diagnostiek op
AppendPageText voegt zichtbare of gefitte onzichtbare Unicode-tekst toe met behoud van originele paginacontent en versleutelde security-policies
AppendImportedPages kloont geselecteerde pagina-resource-grafen, geërfde geometrie en zichtbare normale appearances met behoud van bestaande destination-revisies en geauthenticeerd encryptiebeleid
AcroForm-tekstwaarden
FormFieldCount, GetFormField(FieldIndex) en FindFormField(Name) enumereren terminal-velden met volledig gekwalificeerde namen en geërfde veldtypes, vlaggen, maximumlengtes en waarden; indices zijn zero-based, en een ontbrekende naam geeft -1 terug
SetTextFieldValue(FieldIndex, Text) accepteert schrijfbare Tx-velden, schrijft een UTF-16BE PDF-string en zet NeedAppearances=true op het AcroForm-dictionary
Deze value-only-methode leunt op viewer-regeneratie; viewers die appearances niet regenereren kunnen een oude appearance of een lege widget blijven tonen
SetTextFieldValueWithAppearance genereert expliciete Unicode-appearances voor elke bestaande widget met een door de aanroeper geleverd TrueType-font, echte glyph-metrics, Identity-H-encoding, ToUnicode en volledige FontFile2-embedding
Het appearance-profiel ondersteunt single-line- en multiline-tekst, wrapping, comb-cellen, kwartslagrotaties, vaste grootte of auto-fit, uitlijning en optionele native HarfBuzz/FriBidi-complex-shaping
SetChoiceFieldValuesWithAppearance behandelt multiple-selection-listboxen, geërfde opties, gesorteerde export-arrays en elke zichtbare geselecteerde rij; de single-value-helper ondersteunt ook combo-export/display-labels
GetChoiceFieldValues leest de complete geselecteerde export-array; SetButtonFieldValueWithAppearance en SetPushButtonAppearance genereren echte button-statussen en -captions
Nieuwe appearance-objecten en -streams worden afgeklemd vóór veldwijzigingen en blijven versleuteld onder het originele AES-securitybeleid bij opslaan; native Linux Cairo en onafhankelijke readers consumeren dezelfde gegenereerde objecten
Read-only-velden, waarden langer dan MaxLen in UTF-16-code-units, niet-tekstvelden, XFA-formulieren, signed velden en certified-document-permissions worden voor bewerking geweigerd
Gevalideerd DSS/VRI-bewijs voegt geauthenticeerde certificaat- en revocation-data toe aan een incrementele revisie zonder bestaande ByteRange-signatures te wijzigen
Signature-verificatie
SignatureCount enumerert getekende AcroForm-signature-velden en VerifySignature(SignatureIndex, Options) valideert zero-based signatures met de gedeelde parser en de streaming OpenSSL 3 CMS-provider
Het PDF-profiel accepteert adbe.pkcs7.detached en automatisch herkende ETSI.CAdES.detached met hexadecimale of standaard letterlijke Contents; CAdES authenticeert altijd de ESS signing-certificate-binding, terwijl expliciete CA-instellingen trust apart beoordelen
DocTimeStamp met ETSI.RFC3161 authenticeert automatisch echte ingekapselde TSTInfo, ESS, TSA-doel en signer-naam en de exacte PDF-imprint; geconfigureerde timestamp-roots en CRL's beoordelen TSA-trust apart
Verificatie valideert de exacte unsigned gap inclusief diens delimiters en bindt diens gedecodeerde bytes aan de huidige signature-dictionary vóór cryptografische verificatie
Het resultaat onderscheidt integriteit, expliciet beoordeeld CA-vertrouwen en unsigned bytes na de geauthenticeerde revisie; niet-ondersteunde PDF-signature-profielen leveren een getypeerde diagnostiek op
Zie HPDFVerifyHeadlessCMS voor runtime-vereisten en THPDFHeadlessCMSOptions voor budget- en trust-instellingen
Incrementele approval-signatures
SignToFile tekent een bestaand schrijfbaar, niet-getekend Sig-veld en publiceert een onafhankelijk incrementeel bijgewerkte PDF met een door de aanroeper geleverd PEM-certificaat en niet-versleutelde PEM private key
AddSignatureField maakt een pagina-widget en diens AcroForm-links aan, inclusief een nieuwe AcroForm op een platte geïmporteerde PDF; SetSignatureFieldAppearance genereert diens zichtbare caption, en SignPFXToFile laadt een PKCS12-certificaat/key-identiteit met diens keten
CertificationPermission maakt de eerste DocMDP-certification-signature; P2 en P3 staan daaropvolgende approval-signatures in bestaande velden toe, terwijl P1 verdere signatures verwerpt
De originele bronbytes en geladen objectgraaf blijven ongewijzigd; latere approval-signatures behouden eerdere signature-bytes en diens geauthenticeerde revisiegrenzen
Standard AES-256 R5- en R6-encryptie, wachtwoorden, ID's en permissions blijven van kracht, inclusief versleutelde object-stream-bronnen; de signature Contents-string volgt de PDF-vrijstelling van encryptie
Bestaande signature-waarden, read-only-velden, certified-document-policies, geweigerde form-fill-permissions, afwijkende annuleringstokens en uitgeputte uitvoerbudgetten worden geweigerd zonder een uitvoer te publiceren
Document-timestamps
TimestampToFile maakt een echte RFC 3161 document timestamp aan in een bestaand niet-getekend signature-veld zonder een applicatie-signing-key, met een transport in caller-eigendom en expliciete TSA-trust
De writer behoudt originele revisies en AES-security, declareert de ESIC-extensie voor pre-PDF 2.0-invoer en publiceert atomair pas nadat nonce-, imprint-, signature-, certificaat-, geconfigureerde revocation- en seed-checks slagen
Noodzakelijke geauthenticeerde document-timestamp-wijzigingen zijn toegestaan onder DocMDP en FieldMDP; gewone formulierbewerkingen en approval-signatures behouden diens originele beperkingen
FDF- en XFDF-formulier-interchange
SaveAnnotationsXFDFToFile plakt begrensde mapped annotaties aan een onafhankelijke incrementele revisie; HPDFExportHeadlessAnnotationsXFDF geeft diens XFDF-bytes terug
ExportFormData geeft begrensde Unicode-velddata terug, inclusief echte choice-arrays en checkbox- of radio-exportstatussen
ImportFormDataToFile regenereert echte appearances op een privé geauthenticeerde revisie-graaf en publiceert atomair een incrementele PDF met behoud van de geladen bronstatus
ImportRichFormDataToFile importeert het begrensde XHTML-profiel vanuit FDF RV of XFDF value-richtext met echte regular-, bold-, italic- en bold-italic-fontprogramma's
SaveRichTextFieldUpdatesToFile past scalar-velden en originele getypeerde rich-runs toe in één onafhankelijke atomare revisie, met behoud van echte fontprogramma's en PDF numerieke precisie; ongewijzigde beschermde velden vragen matchende gedecodeerde appearances en opgeloste resources voor elke widget
Bestaande encryptie, read-only-vlaggen, geauthenticeerde DocMDP en FieldMDP, originele signatures, annulering en resourcebudgetten blijven gehandhaafd; zie Native FDF- en XFDF-formulierdata voor ondersteunde syntax en scalar-interchange-grenzen
Geleende rendering-toegang
GetRenderAccess(PageIndex) levert de bestaande pagina-dictionary, geërfde resources, font-resolver, object-resolutie, permission-check, annuleringstoken en begrensde decoded-stream-callbacks via THPDFHeadlessRenderAccess
Dit is een seriële read-only geleende view; het document moet geladen en ongewijzigd blijven tot de renderer klaar is, en aanroepers mogen diens blootgelegde objectgraaf niet muteren
De RequireOutputPath-callback van de view checkt een prospectieve uitvoer tegen het canonieke pad en de fysieke bestandsidentiteit van de bron zonder een bestand aan te maken of te wijzigen
Onafhankelijke uitvoer
ExtractPageGlyphs geeft gepositioneerde glyphs terug via de begrensde nested-content-walker; AnalyzePageSemanticText levert semantische tekst en bron-geometrie voor native contractvergelijking
SaveToFile(FileName) kopieert de originele bytes en plakt vervangende objectwaarden, een klassieke xref-tabel en een trailer gelinkt via Prev aan; gecomprimeerde object-leden worden gematerialiseerd als directe objecten in de toegevoegde revisie, en originele stream-bytes worden behouden
De uitvoer mag niet aliasen met het bronpad of de bronbestandsidentiteit; schrijven gebruikt een exclusief aangemaakt staging-bestand in de doeldirectory, flußt het en publiceert het via atomare rename
Budget-, annulerings- of serialisatiefalen behouden een bestaande destination en verwijderen het ongepubliceerde staging-bestand; de bron blijft read-only
Native annotated review PDF exporteert echte Unicode-highlights en zichtbare appearances met geauthenticeerde annotatie-permissions, met behoud van het originele geladen document en signature-revisies
Formaatgrenzen
Het huidige profiel ondersteunt Standard AES-256 R5- en R6-encryptie, diagnosticeert expliciet niet-ondersteunde security-handlers en stream-filters en verwerkt gepensioneerde free-object-generaties die niet door diens writer kunnen worden gerepresenteerd
Bootstrap xref-streams vragen directe dictionary-waarden en een directe begrensde Length; misvormde widths, subsection-overlaps, unsigned offsets boven Int64, gecomprimeerd-lid-mismatches, referentiecycli en geconfigureerde limieten leveren getypeerde diagnostiek op
Gedecodeerde content ondersteunt Flate-, ASCIIHex-, ASCII85- en LZW-filters met ondersteunde predictors en indirecte streamlengtes; image-payloads worden niet gedecodeerd voor tekstextractie
Native signing-workflows dekken signature-velden, zichtbare appearances en certification; geauthenticeerde signed-form-policies, timestamp- en langetermijn-validatie-API's behouden diens expliciete integriteits- en trust-options
Acceptatie
Named rich font families voegen meerdere echte supplied families toe via SetRichTextFieldValueWithFamilies en ImportRichFormDataWithFamiliesToFile, met het bestaande veld-, security- en transactiebeleid
Native rich-text fields leveren getypeerde gestijlde runs, echte embedded stijlfont-appearances, gesynchroniseerde V- en RV-waarden, versleutelde incrementele uitvoer en begrensde transactionele bewerkingen; GetRichTextFieldValue leest opgeslagen of geërfde XHTML
Tests/Linux/Run-HeadlessDocumentTests.sh bouwt een native ELF-executable met gewiste desktop-variabelen en checkt op GUI-library-dependencies; Run-HeadlessDocumentTests-Windows.cmd Win32 en Win64 oefenen dezelfde gedeelde document-API
Zie THPDFHeadlessFormField, EHPDFHeadlessDocumentError en THPDFHeadlessDiagnosticCode voor teruggegeven waarden en getypeerde diagnostiek