Core portabile Linux
Il core portabile compila il modello di oggetti esistente, il parser di oggetti semplici, gli helper Direct File I/O, l'interprete dei content stream, gli helper dei valori PDF, il writer di xref e trailer, il backend Flate e le primitive AES in programmi Linux nativi con Free Pascal
HPDFPlatform fornisce veri file mappati POSIX e letture posizionali, creazione di file temporanei, sincronizzazione dei worker e byte casuali del sistema operativo; l'adattatore Windows preserva il comportamento nativo esistente di file e mapping
Ambito di accettazione
Tests/Linux/Run-PortableCoreTests.sh compila un eseguibile console ELF x86_64 nativo, cancella le variabili di display del desktop, verifica le dipendenze delle librerie GUI ed esegue otto gruppi di regressioni con un timeout
I controlli coprono escape del parser e riferimenti indiretti, valori PDF invarianti e filtri di stream, finestre mappate e offset di sparse file oltre 4 GiB, stream di spill asincroni compressi, known answer Flate e AES, hash MD5 di file, IV casuali del sistema operativo, serializzazione xref classica valida, conteggi di pagine Direct File e lookup di oggetti, e posizioni di testo e glifi nei content stream
La fixture a una pagina generata viene scritta dal writer esistente e letta indipendentemente attraverso gli helper Direct File condivisi; i controlli del contenuto usano sia il resolver identità Latin-1 esistente sia il resolver dei font di pagina con differenze di encoding e larghezze esplicite
Dati font e decodifica del testo
HPDFFontData separa da GDI la decodifica esistente di nomi glifo, encoding e CMap sfnt; il rendering nativo dei glifi incorporati su Windows e il decoder HPDFTextExtraction esistente usano la stessa implementazione
THPDFTrueTypeData espone lookup CMap supportato, mappatura inversa da glifo a Unicode e avanzamenti orizzontali hmtx per un'immagine sfnt a font singolo
HPDFBaseFontMetrics usa avanzamenti canonici dei font standard per dodici nomi esatti Helvetica/Times/Courier e i caratteri decodificati supportati, conserva il fallback GDI di Windows e Fontconfig di Linux per gli altri font e preserva le larghezze PDF esplicite
Contratti della piattaforma e degli helper font
THPDFPlatformHandle è un handle signed di larghezza nativa e HPDFInvalidFileHandle è -1; HPDFOpenReadOnlyFile e HPDFCloseFile gestiscono gli handle di lettura, mentre HPDFFileSize e HPDFReadFileAt usano posizioni Int64 e i chiamanti devono gestire le letture parziali
HPDFMappingGranularity fornisce l'allineamento degli offset richiesto; HPDFCreateReadOnlyMapping restituisce zero in caso di fallimento, HPDFMapReadOnly mappa l'intervallo richiesto, e HPDFUnmapReadOnly / HPDFCloseMapping rilasciano la vista e il mapping
HPDFCreateTemporaryFile crea in modo esclusivo un file il cui percorso e la cui pulizia appartengono al chiamante; HPDFInitializeLock / HPDFDeleteLock gestiscono le sezioni critiche native
THPDFPlatformEvent è un alias di TEvent; HPDFCreateEvent, HPDFWaitEvent, HPDFSignalEvent e HPDFResetEvent gestiscono la sincronizzazione, e il chiamante libera gli event dopo l'arresto del worker
HPDFSecureRandomBytes riempie il buffer richiesto dal sistema operativo oppure solleva un'eccezione
HPDFGlyphNameToUnicode, HPDFUnicodeToGlyphName, HPDFStdEncGlyphName, HPDFMacExpertEncGlyphName e HPDFBaseEncToUnicode conservano il comportamento esistente di nomi ed encoding; HPDFBaseFontFamilyToken rimuove i suffissi di subset e stile, mentre HPDFIsStandardTextFont riconosce gli alias Helvetica, Times e Courier
HPDFMeasureBaseFontWidths usa il provider GDI di Windows o Fontconfig su Linux e le metriche orizzontali sfnt condivise; THPDFTrueTypeData e THPDFUnicodeByGID forniscono l'API condivisa dei dati font
Tipi Direct File condivisi
HPDFDirectFileTypes possiede le definizioni esistenti THPDFKeyType, THPDFProtection, THPDFProtectOptions, THPDFDirectXrefEntry, THPDFDirectObjectSource e THPDFDirectFileState
Questa separazione permette a HPDFDirectFileIO di usare gli stessi record e tipi di permessi senza importare l'implementazione del componente e della GUI
HPDFDoc conserva alias e costanti di valori enum sotto i nomi originali; gli ordinali degli enum e i layout dei record restano invariati
Inizializzazione dei programmi Linux
I programmi nativi Free Pascal devono mettere cthreads per primo nell'elenco uses prima di usare thread worker; il test del core portabile carica anche cwstring per fornire il gestore di conversione Unicode
Usare FPC 3.2.2 o successivo con le sue unit FCL e paszlib, un runtime C, Fontconfig con font TrueType installati, e gli strumenti file, ldd e timeout; FPC_EXE e HPDF_LINUX_OUTPUT selezionano il compilatore e la directory di output isolata
La versione minima di FPC supportata è 3.3.1 su ogni piattaforma; la nuova acceptance registra il build reale del compilatore e l'identità delle sorgenti, mentre i risultati dei compilatori più vecchi restano evidenza storica
Integrazioni native dei documenti
L'API nativa dei documenti headless carica grafi classici, xref-stream, ibridi e a oggetti compressi, risolve le risorse di pagine e Form, estrae testo Unicode, modifica i campi AcroForm supportati, importa pagine e pubblica revisioni incrementali con i byte sorgente preservati
Il C ABI Linux versionato espone handle di documenti ELF reali e callback C sincroni per queste operazioni native; THotPDF resta la separata integrazione del componente Windows
I flussi di lavoro nativi dei documenti forniscono import di HTML, testo di pagina visibile e invisibile, OCR reale con Tesseract e conversione in PDF/A-4 raster; gli import di pagine e la conversione d'archivio testo/vettoriale validata preservano le risorse originali, e la riparazione esplicita dei font d'archivio aggiunge l'incorporamento sostitutivo limitato
Contratti degli adattatori di piattaforma, proprietà dei tipi Direct File, confini di regressione e collegamenti alle evidenze dei flussi di lavoro nativi e del deployment sono in Tests/Linux/Readme.en-us.md
Il documento headless ora accetta il profilo limitato Standard AES-256 R5/R6 descritto da THPDFHeadlessAES256Security, inclusi permessi proprietario/utente, oggetti compressi e salvataggi incrementali di moduli cifrati
Dipendenze di runtime, contenuto supportato, budget, permessi, identità sorgente e contratti di output sono in rendering nativo Cairo e pubblicazione nativa atomica delle firme
Le appearance Unicode dei moduli supportano testo multilinea, celle comb, rotazioni, maschere password e shaping opzionale HarfBuzz/FriBidi; API native separate gestiscono campi choice e button, famiglie di font fornite e rich text tipizzato con revisioni cifrate preservate
I flussi di lavoro nativi di firma includono identità PEM/PFX, nuovi campi di firma, appearance visibili e certificazione; il trasporto esplicito dei timestamp, il trust e l'evidenza validata di revoca trattengono i loro requisiti crittografici e di pubblicazione documentati
Confini delle capacità rimanenti
Il profilo di sicurezza dei documenti headless supporta Standard AES-256 R5/R6; gli altri security handler restano fuori da quel profilo invece di diventare supportati tramite l'adattatore portable-core
Rendering di annotazioni più ampio, CSS/layout generale del rich text, grafi completi di azioni e risorse FDF e compatibilità generale dell'XFA dinamico restano attivi nel piano di completamento delle capacità; le integrazioni native implementate sopra sono disponibili indipendentemente da quel lavoro restante