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