THPDFHeadlessDocument

HPDFHeadlessDocument stellt eine Konsolen-Dokument-API für natives Linux und Windows bereit und nutzt den vorhandenen HotPDF-Objektparser, Direct-File-Helfer, Schriftdekoder, den Content-Interpreter, Filterdekoder und den xref-Writer

Der Dokumentlader akzeptiert klassische Cross-Reference-Tabellen, xref-Streams, hybride xref-Abschnitte, inkrementelle Prev-Ketten, direkte und komprimierte Objekte, geerbte Seitenressourcen, Content-Arrays, Form XObjects und AcroForm-Feldbäume

Hybride Side-Streams haben Vorrang vor der begleitenden Tabelle, neuere Revisionen vor älteren; Objektstream-Mitglieder werden träge über den gemeinsamen Objektparser dekodiert und geparst

Lebenszyklus und Besitz

Create nutzt THPDFHeadlessDocumentOptions.Default, während die Options-Überladung explizite Budgets und ein Cancellation-Token im Aufruferbesitz akzeptiert

LoadFromFile schließt das vorherige Dokument, öffnet die Quelle read-only, lädt den aktuellen Objektgraphen und schließt bei Fehlschlag den Teilladezustand; Close gibt die Quelle und alle geladenen Objekte frei

LoadFromFile(FileName, Password) authentifiziert Standard-AES-256-R5- oder -R6-Dokumente über THPDFHeadlessAES256Security; die ursprüngliche Ein-Argument-Überladung nutzt ein leeres Passwort

Benutzerpasswörter müssen Textextraktion oder Formularfüllung gewähren, bevor diese Operationen laufen, während Owner-Passwörter Benutzerberechtigungsbeschränkungen umgehen; falsche Passwörter, authentifizierte Perms-Abweichungen, verweigerte Operationen und fehlerhafte Cipher-Payloads haben eigene Dokumentdiagnosen

Direkte Strings und Streams werden über den gemeinsamen Kryptografiecode entschlüsselt, komprimierte Mitglieder nur mit ihrem Container, und verschlüsselte inkrementelle Ersetzungen bleiben unter den ursprünglichen Schlüsseln und der Berechtigungspolicy verschlüsselt

Passwörter verwenden UTF-8-Bytes, gekürzt bei 127 Bytes, ohne SASLprep-Normalisierung; nicht unterstützte Handler, explizite Crypt-Filter und PDF-MAC-Policies werden diagnostiziert statt ignoriert

Kodierte Dictionary-Schlüssel und Ressourcennamen werden vor der Nutzung dekodiert, Groß-/Kleinschreibung bleibt bedeutsam, und doppelte dekodierte Schlüssel werden abgelehnt; Feldflags und MaxLen müssen in den unterstützten nichtnegativen 32-Bit-Bereich passen

Instanzen sind nicht thread-safe; nutzen Sie eine Instanz pro Worker und halten Sie ihr Cancellation-Token am Leben, bis die Instanz zerstört ist

Seiten und Text

PageCount meldet die Zahl der Seitenbaumblätter; ExtractPageText(PageIndex) akzeptiert einen nullbasierten Index und liefert Unicode-Text, zusammengesetzt aus dem gemeinsamen Glyph-Interpreter

ExtractPageTextBounded legt temporäre Glyph- und Stream-Limits vor der Textaufbereitung an und stellt nach Erfolg, Fehlschlag oder Abbruch alle ursprünglichen Ressourcenoptionen wieder her

GetObjectAccess legt read-only geliehene Katalog-, Informations- und Objektzugriffe offen, mit begrenzter Indexallokation für nativ strukturellen und vollständigen Vergleich

Textdekodierung folgt Schriftkodierungen, Encoding-Differenzen, eingebetteten ToUnicode-CMaps, expliziten Breiten und dem Standardfont-Metrikprovider; verschachtelte Form XObjects wenden ihre Matrizen an und nutzen ihre eigenen oder geerbten Ressourcendictionaries

Der Linux-Standardfont-Fallback braucht Fontconfig und installierte TrueType-Schriften; komplexe Dokumentschriften müssen eine unterstützte Dekodierstrategie mitbringen, und fehlende Schriftressourcen erzeugen eine Diagnose

AppendPageText ergänzt sichtbaren oder eingepassten unsichtbaren Unicode-Text und bewahrt dabei ursprünglichen Seiteninhalt und verschlüsselte Sicherheitspolicies

AppendImportedPages klont ausgewählte Seitenressourcengraphen, geerbte Geometrie und sichtbare normale Appearances und bewahrt vorhandene Zielrevisionen und authentifizierte Verschlüsselungspolicy

AcroForm-Textwerte

FormFieldCount, GetFormField(FieldIndex) und FindFormField(Name) zählen Endfelder mit vollständig qualifizierten Namen und geerbten Feldtypen, Flags, Maximallängen und Werten auf; Indizes sind nullbasiert, ein fehlender Name liefert -1

SetTextFieldValue(FieldIndex, Text) akzeptiert schreibbare Tx-Felder, schreibt einen UTF-16BE-PDF-String und setzt NeedAppearances=true im AcroForm-Dictionary

Diese reine Wertmethode verlässt sich auf die Viewer-Regenerierung; Viewer, die keine Appearances regenerieren, zeigen eventuell weiter eine alte Appearance oder ein leeres Widget

SetTextFieldValueWithAppearance erzeugt für jedes vorhandene Widget explizite Unicode-Appearances, mit einer vom Aufrufer gelieferten TrueType-Schrift, echten Glyphmetriken, Identity-H-Kodierung, ToUnicode und vollständiger FontFile2-Einbettung

Das Appearance-Profil unterstützt ein- und mehrzeiligen Text, Umbruch, Comb-Zellen, Vierteldrehungen, feste Größe oder Auto-Fit, Ausrichtung und optionales natives HarfBuzz/FriBidi-Complex-Shaping

SetChoiceFieldValuesWithAppearance behandelt Mehrfachauswahl-Listenboxen, geerbte Optionen, sortierte Exportarrays und jede sichtbare ausgewählte Zeile; der Einzelwert-Helfer unterstützt auch Combo-Export-/Anzeige-Labels

GetChoiceFieldValues liest das vollständige gewählte Exportarray; SetButtonFieldValueWithAppearance und SetPushButtonAppearance erzeugen echte Button-Zustände und Beschriftungen

Neue Appearance-Objekte und Streams werden vor Feldänderungen begrenzt und bleiben beim Speichern unter der ursprünglichen AES-Sicherheitspolicy verschlüsselt; natives Linux-Cairo und unabhängige Reader konsumieren dieselben erzeugten Objekte

Read-only-Felder, Werte über MaxLen in UTF-16-Codeeinheiten, Nicht-Text-Felder, XFA-Formulare, signierte Felder und Zertifizierungsdokument-Berechtigungen werden fürs Editing abgelehnt

Signierte Dokumente nutzen authentifizierte DocMDP- und FieldMDP-Policies: erlaubte Formular-Updates bewahren vorhandene signierte Revisionen, während gesperrte Felder, P1-Einschränkungen und Versuche, signierte Signaturfelder zu überschreiben, zurückgewiesen werden

Validierte DSS/VRI-Nachweise ergänzen eine inkrementelle Revision um authentifizierte Zertifikats- und Widerrufsdaten, ohne vorhandene ByteRange-Signaturen zu ändern

Signaturverifikation

SignatureCount zählt signierte AcroForm-Signaturfelder auf, und VerifySignature(SignatureIndex, Options) validiert nullbasierte Signaturen mit dem gemeinsamen Parser und dem Streaming-OpenSSL-3-CMS-Provider

Das PDF-Profil akzeptiert adbe.pkcs7.detached und automatisch erkanntes ETSI.CAdES.detached mit hexadezimalen oder standardmäßigen literalen Contents; CAdES authentifiziert stets die ESS-Signaturzertifikat-Bindung, während explizite CA-Einstellungen Vertrauen separat bewerten

DocTimeStamp mit ETSI.RFC3161 authentifiziert automatisch echte eingekapselte TSTInfo, ESS, TSA-Zweck und Signaturgebername sowie den exakten PDF-Imprint; konfigurierte Timestamp-Roots und CRLs bewerten TSA-Vertrauen separat

Die Verifikation validiert die exakte unsignierte Lücke einschließlich ihrer Begrenzer und bindet ihre dekodierten Bytes an das aktuelle Signaturdictionary, bevor kryptografisch verifiziert wird

Das Ergebnis unterscheidet Integrität, explizit bewertetes CA-Vertrauen und unsignierte Bytes nach der authentifizierten Revision; nicht unterstützte PDF-Signaturprofile erzeugen eine getypte Diagnose

Siehe HPDFVerifyHeadlessCMS für Laufzeitvoraussetzungen und THPDFHeadlessCMSOptions für Budgets und Trust-Einstellungen

Inkrementelle Zustimmungssignaturen

SignToFile signiert ein vorhandenes schreibbares, unsigniertes Sig-Feld und veröffentlicht eine unabhängige inkrementell aktualisierte PDF, mit einem vom Aufrufer gelieferten PEM-Zertifikat und unverschlüsseltem PEM-Privatschlüssel

AddSignatureField erzeugt ein Seitenwidget und seine AcroForm-Verknüpfungen, einschließlich eines neuen AcroForm auf einer schlicht importierten PDF; SetSignatureFieldAppearance generiert dessen sichtbare Beschriftung, und SignPFXToFile lädt eine PKCS12-Zertifikats-/Schlüssel-Identität mit ihrer Kette

CertificationPermission erzeugt die erste DocMDP-Zertifizierungssignatur; P2 und P3 erlauben nachfolgende Zustimmungssignaturen in vorhandenen Feldern, während P1 weitere Signaturen ablehnt

Die ursprünglichen Quellbytes und der geladene Objektgraph bleiben unverändert; spätere Zustimmungssignaturen bewahren frühere Signaturbytes und ihre authentifizierten Revisionsgrenzen

Standard-AES-256-R5- und -R6-Verschlüsselung, Passwörter, IDs und Berechtigungen bleiben wirksam, einschließlich verschlüsselter Objektstream-Quellen; der Signatur-Contents-String folgt der PDF-Ausnahme von der Verschlüsselung

Vorhandene Signaturwerte, Read-only-Felder, Zertifizierungsdokument-Policies, verweigerte Formularfüll-Berechtigungen, abweichende Cancellation-Tokens und ausgeschöpfte Ausgabenbudgets werden abgelehnt, ohne eine Ausgabe zu veröffentlichen

Dokument-Timestamps

TimestampToFile erzeugt einen echten RFC-3161-Dokument-Timestamp in einem vorhandenen unsignierten Signaturfeld, ohne einen Anwendungssignaturschlüssel, mit einem TSA-Transport im Aufruferbesitz und explizitem TSA-Vertrauen

Der Writer bewahrt ursprüngliche Revisionen und AES-Sicherheit, deklariert die ESIC-Erweiterung für Eingaben vor PDF 2.0 und veröffentlicht erst atomar, nachdem Nonce-, Imprint-, Signatur-, Zertifikats-, konfigurierte Widerrufs- und Seed-Prüfungen bestanden sind

Notwendige authentifizierte Dokument-Timestamp-Änderungen sind unter DocMDP und FieldMDP erlaubt; gewöhnliche Formularänderungen und Zustimmungssignaturen behalten ihre ursprünglichen Beschränkungen

FDF- und XFDF-Formularaustausch

ExportAnnotationsFDF exportiert begrenzte Annotation-Objektgraphen und ihre geteilten Appearance-Ressourcen; SaveAnnotationsFDFToFile bereitet benannte Ersetzungen vor und hängt in einer unabhängigen atomaren PDF-Revision an

Das binäre FDF-Annotation-Profil bewahrt die Verschlüsselungs- und Signatur-Policy des authentifizierten Dokuments, kontextsensitive lokale GoTo-Seitenreferenzen und exakt unveränderte Veröffentlichung; es lässt das geladene Dokument nach dem Speichern unverändert

SaveAnnotationsXFDFToFile hängt begrenzte gemappte Annotationen an eine unabhängige inkrementelle Revision an; HPDFExportHeadlessAnnotationsXFDF liefert ihre XFDF-Bytes

ExportFormData liefert begrenzte Unicode-Felddaten, einschließlich echter Choice-Arrays und Checkbox- oder Radio-Exportzustände

ImportFormDataToFile regeneriert echte Appearances auf einem privaten authentifizierten Revisionsgraphen und veröffentlicht atomar eine inkrementelle PDF, während der geladene Quellzustand bewahrt wird

ImportRichFormDataToFile importiert das begrenzte XHTML-Profil aus FDF RV oder XFDF value-richtext, mit echten Regular-, Bold-, Italic- und Bold-Italic-Schriftprogrammen

SaveRichTextFieldUpdatesToFile wendet Skalarfelder und originale Typed Rich Runs in einer unabhängigen atomaren Revision an und bewahrt echte Schriftprogramme und PDF-Zahlenpräzision; unveränderte geschützte Felder verlangen passende dekodierte Appearances und aufgelöste Ressourcen für jedes Widget

Vorhandene Verschlüsselung, Read-only-Flags, authentifiziertes DocMDP und FieldMDP, ursprüngliche Signaturen, Abbruch und Ressourcenbudgets bleiben durchgesetzt; siehe Native FDF- und XFDF-Formulardaten für unterstützte Syntax und Skalar-Austauschgrenzen

Geliehener Rendering-Zugriff

GetRenderAccess(PageIndex) stellt das vorhandene Seitendictionary, geerbte Ressourcen, den Schriftresolver, Objektauflösung, Berechtigungsprüfung, Cancellation-Token und begrenzte dekodierte Stream-Callbacks über THPDFHeadlessRenderAccess bereit

Das ist eine serielle read-only geliehene Ansicht; das Dokument muss geladen und unverändert bleiben, bis der Renderer fertig ist, und Aufrufer dürfen den offenlegten Objektgraphen nicht verändern

Der RequireOutputPath-Callback der Ansicht prüft eine anvisierte Ausgabe gegen den kanonischen Pfad der Quelle und die physische Dateiidentität, ohne eine Datei zu erzeugen oder zu ändern

Unabhängige Ausgabe

ExtractPageGlyphs liefert positionierte Glyphen über den begrenzten Nested-Content-Walker; AnalyzePageSemanticText stellt semantischen Text und Quellgeometrie für nativen Vertragsvergleich bereit

SaveToFile(FileName) kopiert die ursprünglichen Bytes und hängt Ersetzungsobjektwerte, eine klassische xref-Tabelle und einen über Prev verknüpften Trailer an; komprimierte Objektmitglieder werden in der angehängten Revision als direkte Objekte materialisiert, und ursprüngliche Stream-Bytes bleiben erhalten

Die Ausgabe darf nicht Alias des Quellpfads oder der Dateiidentität sein; das Schreiben nutzt eine exklusiv erzeugte Staging-Datei im Zielverzeichnis, flusht sie und veröffentlicht sie per atomarem Umbenennen

Budget-, Abbruch- oder Serialisierungsfehler bewahren eine vorhandene Destination und löschen die unveröffentlichte Staging-Datei; die Quelle bleibt read-only

Natives annotiertes Prüf-PDF exportiert echte Unicode-Highlights und sichtbare Appearances mit authentifizierten Anmerkungsrechten und bewahrt das ursprüngliche geladene Dokument und die Signaturrevisionen

Formatgrenzen

Das aktuelle Profil unterstützt Standard-AES-256-R5- und -R6-Verschlüsselung, diagnostiziert ausdrücklich nicht unterstützte Security-Handler und Stream-Filter und weist ausgediente Free-Object-Generationen zurück, die sein Writer nicht darstellen kann

Bootstrap-xref-Streams verlangen direkte Dictionary-Werte und eine direkte begrenzte Length; fehlerhafte Breiten, Subsection-Überlappungen, vorzeichenlose Offsets über Int64, Unstimmigkeiten komprimierter Mitglieder, Referenzzyklen und konfigurierte Limits erzeugen getypte Diagnosen

Dekodierter Inhalt unterstützt Flate-, ASCIIHex-, ASCII85- und LZW-Filter mit unterstützten Prädiktoren und indirekten Stream-Längen; Bild-Payloads werden für die Textextraktion nicht dekodiert

Native Signierworkflows decken Signaturfelder, sichtbare Appearances und Zertifizierung ab; authentifizierte Signaturformular-Policies sowie Timestamp- und Langzeitvalidierungs-APIs behalten ihre expliziten Integritäts- und Trust-Optionen

Abnahme

Benannte Rich-Font-Familien ergänzen mehrere echte gelieferte Familien über SetRichTextFieldValueWithFamilies und ImportRichFormDataWithFamiliesToFile, mit den vorhandenen Feld-, Sicherheits- und Transaktionspolicies

Native Rich-Text-Felder bieten Typed Styled Runs, echte Embedded-Stilfont-Appearances, synchronisierte V- und RV-Werte, verschlüsselte inkrementelle Ausgabe und begrenzte transaktionale Änderungen; GetRichTextFieldValue liest gespeichertes oder geerbtes XHTML

Tests/Linux/Run-HeadlessDocumentTests.sh baut eine native ELF-Executable mit geleerten Desktop-Variablen und prüft auf GUI-Bibliotheksabhängigkeiten; Run-HeadlessDocumentTests-Windows.cmd Win32 und Win64 üben dieselbe gemeinsame Dokument-API aus

Siehe THPDFHeadlessFormField, EHPDFHeadlessDocumentError und THPDFHeadlessDiagnosticCode für Rückgabewerte und getypte Diagnosen

Annotation-Entfernung

Seitenannotationen über exakte Seiten- und Unicode-NM-Identität mit SaveAnnotationRemovalsToFile entfernen, mit Popup- und Antwort-Kaskaden, begrenzter Vorbereitung und atomarer separater Ausgabe

Das geladene Dokument bleibt unverändert; eine unveränderte Auswahl kopiert die exakte aktuelle Revision, und inkrementelle Entfernung bewahrt historische Bytes