THPDFHeadlessDocument
HPDFHeadlessDocument offre un'API documentale da console per Linux e Windows nativi usando il parser di oggetti HotPDF esistente, gli helper Direct File, i decoder font, l'interprete di contenuto, i decoder di filtri e il writer xref
Il loader di documenti accetta tabelle di riferimenti incrociati classiche, stream xref, sezioni xref ibride, catene incrementali Prev, oggetti diretti e compressi, risorse di pagina ereditate, array di contenuto, Form XObjects e alberi di campi AcroForm
Gli side stream ibridi hanno precedenza sulla tabella allegata, mentre le revisioni più recenti hanno precedenza sulle più vecchie; i membri degli object-stream vengono decodificati e analizzati in modo lazy tramite il parser di oggetti condiviso
Ciclo di vita e ownership
Create usa THPDFHeadlessDocumentOptions.Default, mentre l'overload con opzioni accetta budget espliciti e un token di cancellazione di proprietà del chiamante
LoadFromFile chiude il documento precedente, apre la sorgente in sola lettura, carica il grafo di oggetti corrente e chiude lo stato parziale in caso di fallimento; Close rilascia la sorgente e tutti gli oggetti caricati
LoadFromFile(FileName, Password) autentica documenti Standard AES-256 R5 o R6 attraverso THPDFHeadlessAES256Security; l'overload originale a un solo argomento usa una password vuota
Le password utente devono concedere estrazione del testo o compilazione dei form prima che tali operazioni vengano eseguite, mentre le password owner bypassano le restrizioni sui permessi utente; password errate, mismatch Perms autenticati, operazioni negate e payload di cifrari malformati hanno diagnostica distinta del documento
Le stringhe e gli stream diretti vengono decifrati attraverso il codice crittografico condiviso, i membri compressi vengono decifrati solo insieme al proprio contenitore, e le sostituzioni incrementali cifrate restano cifrate sotto le chiavi e la policy di permessi originali
Le password usano byte UTF-8 troncati a 127 byte senza normalizzazione SASLprep; handler non supportati, filtri Crypt espliciti e policy PDF MAC vengono diagnosticati, non ignorati
Le chiavi dei dizionari codificate e i nomi delle risorse vengono decodificati prima dell'uso, il case resta significativo, e le chiavi decodificate duplicate vengono rifiutate; i field flag e MaxLen devono stare nel range non negativo a 32 bit supportato
Le istanze non sono thread-safe; usate un'istanza per worker e tenete vivo il suo token di cancellazione finché l'istanza non viene distrutta
Pagine e testo
PageCount riporta il numero di foglie dell'albero pagine; ExtractPageText(PageIndex) accetta un indice zero-based e restituisce testo Unicode assemblato dall'interprete di glifi condiviso
ExtractPageTextBounded applica limiti temporanei a glifi e stream prima della preparazione del testo e ripristina tutte le opzioni originali delle risorse dopo successo, fallimento o cancellazione
GetObjectAccess espone accesso borrowed in sola lettura a catalogo, informazioni e oggetti con allocazione di indici limitata per il confronto nativo strutturale e completo
La decodifica del testo segue gli encoding dei font, le differenze di encoding, i CMaps ToUnicode incorporati, le larghezze esplicite e il provider di metriche dei font standard; i Form XObjects annidati applicano le proprie matrici e usano i dizionari di risorse propri o ereditati
Il fallback dei font standard su Linux richiede Fontconfig e font TrueType installati; i font complessi del documento devono fornire una strategia di decodifica supportata, e le risorse font mancanti producono una diagnostica
AppendPageText aggiunge testo Unicode visibile o invisibile adattato conservando il contenuto originale di pagina e le policy di sicurezza cifrate
AppendImportedPages clona i grafi di risorse delle pagine selezionate, la geometria ereditata e gli appearance normali visibili preservando le revisioni di destinazione esistenti e la policy di cifratura autenticata
Valori testuali AcroForm
FormFieldCount, GetFormField(FieldIndex) e FindFormField(Name) enumerano i campi terminali usando nomi completamente qualificati e tipi, flag, lunghezze massime e valori ereditati; gli indici sono zero-based, e un nome mancante restituisce -1
SetTextFieldValue(FieldIndex, Text) accetta campi Tx scrivibili, scrive una stringa PDF UTF-16BE e imposta NeedAppearances=true sul dizionario AcroForm
Questo metodo solo-valore si affida alla rigenerazione del viewer; i viewer che non rigenerano gli appearance possono continuare a mostrare un appearance vecchio o un widget vuoto
SetTextFieldValueWithAppearance genera appearance Unicode espliciti per ogni widget esistente usando un font TrueType fornito dal chiamante, metriche glifo reali, encoding Identity-H, ToUnicode e embedding FontFile2 completo
Il profilo appearance supporta testo a riga singola e multilinea, wrapping, celle comb, rotazioni a quarti di giro, dimensione fissa o auto-fit, allineamento e shaping complesso nativo HarfBuzz/FriBidi opzionale
SetChoiceFieldValuesWithAppearance gestisce list box a selezione multipla, opzioni ereditate, array export ordinati e ogni riga selezionata visibile; l'helper a valore singolo supporta anche etichette export/display dei combo
GetChoiceFieldValues legge l'array export completo selezionato; SetButtonFieldValueWithAppearance e SetPushButtonAppearance generano stati e caption reali dei bottoni
Nuovi oggetti appearance e stream vengono limitati prima delle modifiche ai campi e restano cifrati sotto la policy di sicurezza AES originale al salvataggio; Cairo su Linux nativo e i reader indipendenti consumano gli stessi oggetti generati
Campi read-only, valori più lunghi di MaxLen in code unit UTF-16, campi non testuali, form XFA, campi firmati e permessi di documenti certificati vengono rifiutati per l'editing
I documenti firmati usano politiche autenticate DocMDP e FieldMDP: gli aggiornamenti dei form consentiti preservano le revisioni firmate esistenti, mentre i campi bloccati, le restrizioni P1 e i tentativi di sovrascrivere campi firma firmati vengono rifiutati
Evidenza DSS/VRI validata aggiunge dati autenticati di certificati e revoche a una revisione incrementale senza modificare le firme ByteRange esistenti
Verifica delle firme
SignatureCount enumera i campi firma AcroForm firmati e VerifySignature(SignatureIndex, Options) valida le firme zero-based usando il parser condiviso e il provider CMS streaming OpenSSL 3
Il profilo PDF accetta adbe.pkcs7.detached e ETSI.CAdES.detached riconosciuti automaticamente con Contents esadecimali o literal standard; CAdES autentica sempre il binding ESS del certificato di firma, mentre le impostazioni CA esplicite valutano il trust separatamente
DocTimeStamp con ETSI.RFC3161 autentica automaticamente TSTInfo incapsulato genuino, ESS, purpose TSA e nome del firmatario e l'imprint PDF esatto; le root dei timestamp configurate e le CRL valutano separatamente il trust della TSA
La verifica valida il gap non firmato esatto inclusi i suoi delimitatori e associa i propri byte decodificati al dizionario firma corrente prima della verifica crittografica
Il risultato distingue integrità, trust CA esplicitamente valutato e byte non firmati dopo la revisione autenticata; i profili firma PDF non supportati producono una diagnostica tipizzata
Vedere HPDFVerifyHeadlessCMS per i requisiti runtime e THPDFHeadlessCMSOptions per budget e impostazioni di trust
Firme di approvazione incrementali
SignToFile firma un campo Sig esistente, scrivibile e non firmato e pubblica un PDF incrementally updated indipendente usando un certificato PEM fornito dal chiamante e una chiave privata PEM non cifrata
AddSignatureField crea un widget di pagina e i suoi link AcroForm, incluso un AcroForm nuovo su un PDF importato semplice; SetSignatureFieldAppearance genera la caption visibile, e SignPFXToFile carica un'identità certificato/chiave PKCS12 con la sua catena
CertificationPermission crea la prima firma di certificazione DocMDP; P2 e P3 consentono firme di approvazione successive nei campi esistenti, mentre P1 rifiuta ulteriori firme
I byte sorgente originali e il grafo di oggetti caricati restano invariati; le firme di approvazione successive preservano i byte delle firme precedenti e i loro confini di revisione autenticati
La cifratura Standard AES-256 R5 e R6, le password, gli ID e i permessi restano in vigore, incluse le sorgenti object-stream cifrate; la stringa Contents della firma segue l'esenzione dalla cifratura del PDF
Valori di firma esistenti, campi read-only, policy di documenti certificati, permessi di compilazione negati, token di cancellazione divergenti e budget di output esauriti vengono rifiutati senza pubblicare un output
Timestamp dei documenti
TimestampToFile crea un document timestamp RFC 3161 genuino in un campo firma esistente non firmato senza una chiave di firma dell'applicazione, usando un trasporto TSA di proprietà del chiamante e trust TSA esplicito
Il writer preserva le revisioni originali e la sicurezza AES, dichiara l'estensione ESIC per input pre-PDF 2.0 e pubblica atomicamente solo dopo che nonce, imprint, firma, certificato, revoche configurate e controlli seed sono passati
Le modifiche autenticate necessarie al document timestamp sono permesse sotto DocMDP e FieldMDP; le modifiche ordinarie al form e le firme di approvazione conservano le proprie restrizioni originali
Interchange FDF e XFDF
ExportAnnotationsFDF esporta grafi di oggetti di annotazioni limitati e le loro risorse di appearance condivise; SaveAnnotationsFDFToFile prepara sostituzioni nominate e accodamenti in una revisione incrementale atomica indipendente
Il profilo binario FDF delle annotazioni preserva la politica di cifratura e firme del documento autenticato, riferimenti di pagina GoTo locali sensibili al contesto e pubblicazione esatta invariata; lascia il documento caricato invariato dopo successo e fallimento
SaveAnnotationsXFDFToFile accoda annotazioni mappate limitate a una revisione incrementale indipendente; HPDFExportHeadlessAnnotationsXFDF restituisce i loro byte XFDF
ExportFormData restituisce dati di campo Unicode limitati, incluse scelte array reali e stati export di checkbox e radio
ImportFormDataToFile rigenera appearance genuini su un grafo di revisione autenticato privato e pubblica atomicamente un PDF incrementale preservando lo stato della sorgente caricata
ImportRichFormDataToFile importa il profilo XHTML limitato da FDF RV o XFDF value-richtext con programmi font regular, bold, italic e bold-italic reali
SaveRichTextFieldUpdatesToFile applica campi scalari e run rich tipizzati originali in una revisione atomica indipendente, preservando programmi font reali e precisione numerica PDF; i campi protetti invariati richiedono appearance decodificati e risorse risolte corrispondenti per ogni widget
Cifratura esistente, flag read-only, DocMDP e FieldMDP autenticati, firme originali, cancellazione e budget di risorse restano applicati; vedere Native FDF and XFDF form data per la sintassi supportata e i confini dell'interchange scalare
Accesso rendering borrowed
GetRenderAccess(PageIndex) fornisce il dizionario pagina esistente, le risorse ereditate, il resolver font, la risoluzione oggetti, il controllo permessi, il token di cancellazione e i callback limitati di stream decodificati attraverso THPDFHeadlessRenderAccess
È una vista borrowed seriale in sola lettura; il documento deve restare caricato e invariato finché il renderer non finisce, e i chiamanti non devono mutare il grafo di oggetti esposto
Il callback RequireOutputPath della vista confronta un output prospectivo con il percorso canonico e l'identità fisica del file della sorgente senza creare o modificare file
Output indipendente
ExtractPageGlyphs restituisce glifi posizionati attraverso il walker limitato di contenuto annidato; AnalyzePageSemanticText fornisce testo semantico e geometria sorgente per il confronto contrattuale nativo
SaveToFile(FileName) copia i byte originali e accoda valori di oggetti sostitutivi, una tabella xref classica e un trailer collegato tramite Prev; i membri compressi degli oggetti vengono materializzati come oggetti diretti nella revisione accodata, e i byte degli stream originali sono preservati
L'output non deve essere alias del percorso o dell'identità file della sorgente; la scrittura usa uno staging file creato in modo esclusivo nella directory di destinazione, ne fa il flush e lo pubblica con rename atomico
I fallimenti di budget, cancellazione o serializzazione preservano una destinazione esistente ed eliminano lo staging file non pubblicato; la sorgente resta in sola lettura
PDF di revisione annotato nativo esporta highlight Unicode reali e appearance visibili con permessi di annotazione autenticati, conservando il documento caricato originale e le revisioni delle firme
Confini del formato
Il profilo corrente supporta cifratura Standard AES-256 R5 e R6, diagnostica esplicita di handler di sicurezza e filtri stream non supportati, e rifiuta generazioni di free-object ritirate che il suo writer non può rappresentare
Gli stream xref bootstrap richiedono valori di dizionario diretti e una Length diretta limitata; larghezze malformate, sovrapposizioni di sottosezioni, offset senza segno sopra Int64, mismatch di membri compressi, cicli di riferimenti e limiti configurati producono diagnostica tipizzata
Il contenuto decodificato supporta filtri Flate, ASCIIHex, ASCII85 e LZW con predictor supportati e lunghezze di stream indirette; i payload immagine non vengono decodificati per l'estrazione testo
Workflow di firma nativi coprono campi firma, appearance visibili e certificazione; le policy di form firmati autenticate e le API di timestamp e validazione a lungo termine conservano le proprie opzioni esplicite di integrità e trust
Accettazione
Famiglie di font rich nominate aggiungono più famiglie fornite reali attraverso SetRichTextFieldValueWithFamilies e ImportRichFormDataWithFamiliesToFile, con le esistenti policy di campo, sicurezza e transazione
Campi rich text nativi forniscono run stilizzati tipizzati, appearance reali con font di stile incorporati, valori V e RV sincronizzati, output incrementale cifrato e modifiche transazionali limitate; GetRichTextFieldValue legge XHTML memorizzato o ereditato
Tests/Linux/Run-HeadlessDocumentTests.sh compila un eseguibile ELF nativo con variabili desktop azzerate e verifica le dipendenze da librerie GUI; Run-HeadlessDocumentTests-Windows.cmd Win32 e Win64 esercitano la stessa API documentale condivisa
Vedere THPDFHeadlessFormField, EHPDFHeadlessDocumentError e THPDFHeadlessDiagnosticCode per i valori restituiti e la diagnostica tipizzata
Rimozione delle annotazioni
Rimuovete le annotazioni di pagina per identità esatta di pagina e NM Unicode tramite SaveAnnotationRemovalsToFile, con cascate di popup e risposte, preparazione limitata e output separato atomico
Il documento caricato resta invariato; una selezione invariata copia la revisione corrente esatta, e la rimozione incrementale conserva i byte storici