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