HotPDF Release Notes
Cronologia delle versioni per funzionalità visibili all'utente, correzioni, aggiornamenti di compatibilità e modifiche della documentazione di HotPDF
Nota: vengono conservati solo gli ultimi 800 record di modifiche
Last release
- Ultima versione: 2.974.0; Data di rilascio: 2026-10-11
Version 2.974.0
Added
- Rimozione delle annotazioni di pagina per pagina esatta e nome Unicode, incluse le cascate di popup e reply, tramite API native limitate, transazioni Windows, job JSON e callback versionati con permessi autenticati e rollback della pubblicazione
Version 2.973.0
Added
- Scambio di annotazioni FDF binarie con risorse appearance preservate, grafi di oggetti condivisi e destinazioni di azioni locali tramite API native, scambio Windows e callback versionati
Version 2.972.0
Added
- Rendering delle appearance predefinite delle annotazioni con stato del testo preservato, adattamento automatico, spaziatura rich-text e clipping del testo, incluse le modalità di rendering da 4 a 7
Version 2.971.1
Fixed
- Prevenzione dei fallimenti di range-check nella cache pubblica degli shaped-run sulle build Windows con FPC 3.3.1 preservando la moltiplicazione hash modulare esplicita a 32 bit, l'isolamento esatto delle cache-key e l'evizione LRU
Version 2.971.0
Added
- Riconoscimento del :scope radice e ammissione delle pseudo classi statiche hover, active e focus con stato di interazione inattivo, preservando negazioni, selettori logici e relativi, query di supporto e appearance FDF/XFDF salvate
Version 2.970.0
Added
- Valutazione dei gruppi @supports nativi del rich-text e delle importazioni supports() con query su dichiarazioni e selettori supportati, condizioni nidificate limitate, probe consapevoli del namespace, ripristino dalla cancellazione e appearance FDF/XFDF salvate calcolate
Version 2.969.0
Added
- Valutazione di espressioni finite di calc, min, max e clamp, lunghezze di viewport relative alla radice ed esplicite e metriche di riga e spaziatura del font finale nella decodifica nativa del rich-text, nelle appearance di campo salvate e nelle importazioni rich FDF/XFDF
Fixed
- Ammissione uniforme di dimensioni media minime esatte, risoluzione e dimensioni iniziali dei font su tutti i target dei compilatori, continuando a rifiutare i valori sotto il limite supportato
Version 2.968.0
Added
- Valutazione delle preferenze esplicite del rich-text per schema di colori, reduced motion, trasparenza e dati, contrasto, colori forzati e invertiti e disponibilità di scripting, preservando preferenze omesse sconosciute e appearance salvate calcolate
Version 2.967.0
Added
- Applicazione di fogli di stile rich-text collegati e importati forniti dal chiamante con insiemi di titoli preferred o alternate condivisi, risoluzione limitata di URI e base del documento e pubblicazione transazionale FDF/XFDF nativa, Windows e Linux
Version 2.966.0
Added
- Valutazione delle media query native del rich-text con profili espliciti print/screen, condizioni nidificate e intervalli di feature limitati, trattenendo gli stili calcolati nelle appearance salvate e nelle importazioni transazionali FDF/XFDF
Version 2.965.0
Added
- Creazione, clonazione e modifica transazionale di alberi di form XFA nativi, preservando identità dei nodi superstiti, rollback degli eventi, occorrenze empty-merge supportate e pacchetti di form salvati indipendentemente dai template originali
Version 2.964.0
Added
- Generazione di appearance native plain, rich, shaped e family da font OpenType CFF2 completi alle coordinate di variazione predefinite, preservando identità dei glyph, Unicode, larghezze e permessi di embedding nell'output statico CID-keyed CFF 1 limitato
Version 2.963.0
Added
- Applicazione di dichiarazioni di namespace CSS con scope e selettori qualificati ai campi rich-text nativi e alle transazioni di form Windows/Linux, preservando appearance calcolate, lookup del namespace limitato, pubblicazione no-op esatta e compatibilità con build checked
Version 2.962.0
Added
- Andata a capo del testo delle annotazioni con font raw generato ai confini di spazi e trattini tra gli style run, preservando caratteri codificati completi, interruzioni forzate, dimensionamento automatico e cancellazione limitata
Version 2.961.0
Added
- Rendering delle appearance di testo delle annotazioni mancanti con i programmi font originali Type1C, CIDFontType0C e Type1 puro, preservando mappature Unicode, dimensionamento automatico, spaziatura, altezza di riga e risorse immutabili limitate
Version 2.960.0
Added
- Trasporto delle appearance Form normal, rollover e down dello Stamp XFDF standard con risorse font e immagini incorporati, grafi aciclici limitati, transazioni native autenticate e callback Windows/Linux esistenti
Version 2.959.0
Added
- Applicazione di liste not complesse, liste is e where permissive, relazioni has ancorate e posizioni nth-child filtrate ai fogli di stile rich-text interni nativi, preservando specificità dei selettori, valori calcolati, font e appearance transazionali FDF/XFDF
Version 2.958.0
Added
- Accesso alle collezioni di figli del Data DOM nativo live tramite indici numerici read-only in JavaScript e FormCalc, preservando l'ordine attuale dei figli, i riferimenti trattenuti agli script-object, i cloni indipendenti, i valori salvati e le appearance PDF
Fixed
- Rifiuto di assegnazione numerica, eliminazione e definizione di proprietà sia sulle collezioni attuali sia all'interno di script-object lessicali trattenuti, con rollback degli eventi limitato e retry
Version 2.957.0
Added
- Applicazione di selettori di attributi, combinatori di fratelli, pseudo classi strutturali e posizionali, corrispondenza del linguaggio ereditata e negazione composta ai fogli di stile rich-text interni nativi, preservando valori calcolati reali, font, appearance salvate e importazioni transazionali FDF/XFDF
Version 2.956.1
Fixed
- Risoluzione dei percorsi delle liste di figli dei nodi FormCalc attraverso il compilatore di eventi reale, preservando collezioni live di form/proprietà, accesso agli item del Data DOM, replay limitato, valori nativi salvati e appearance PDF
Version 2.956.0
Added
- Generazione di appearance di campo native plain, rich e shaped da font OpenType CFF completi, preservando identità dei glyph per nome, charset CID-keyed reali, mappature Unicode, permessi di embedding e risorse font condivise; le appearance FreeText mancanti vengono renderizzate con i valori OpenType incorporati predefiniti
Fixed
- Limitazione del parsing CFF e delle metriche dei glyph, trattenendo la cancellazione e i reader immutabili per stile, e preservazione del comportamento TrueType su sei target di compilatori nativi
Version 2.955.1
Security
- Rifiuto dei shared secret X25519 e X448 tutti a zero dopo la serializzazione canonica dei byte, inclusi gli input low-order le cui componenti deboli del campo sono diverse da zero, con il risultato dell'accordo mantenuto falso con un secret vuoto e una diagnostica fresca
Fixed
- Preservazione delle costanti portabili SHA3/SHAKE e dell'aritmetica intenzionale modulo-2^64 per l'accordo di chiavi quando l'overflow degli interi e i range check sono abilitati, inclusi gli scambi full-width P-256, P-384 e P-521 su Free Pascal a 32 bit
Version 2.955.0
Added
- Aggiunge collezioni di figli form/property JavaScript live con length, letture indicizzate, item, namedItem, iterazione e cloni indipendenti; trattiene l'identità del proprietario attraverso eventi, modifiche di istanze ripetute e creazione implicita di proprietà, con valori nativi salvati e appearance PDF
Fixed
- Mantiene le liste live trattenute attaccate al loro proprietario di evento attuale, rifiuta i proprietari rimossi senza ritargettare un'altra istanza e preserva valori nativi, stato trattenuto e rollback del journal sotto fallimenti di allocazione di collezioni, operazione e deadline
Version 2.954.0
Added
- Applica fogli di stile XHTML interni ai campi rich-text nativi e alle importazioni FDF/XFDF con selettori di tipo, classe e ID, combinatori di discendente e figlio, selettori raggruppati, escape di identificatori Unicode, specificità, importance e ordine di origine
Fixed
- Preserva stili calcolati nei valori salvati reali e nelle appearance dei widget, con scansione e corrispondenza limitate, cancellazione, byte no-op commessi esatti e rollback transazionale dei callback
Version 2.953.0
Added
- Aggiunge collezioni indipendenti di nodi di query XFA con operazioni all, classAll, classIndex, clone e membership, riferimenti trattenuti stabili, replay transazionale limitato e consumo nativo del PDF salvato
Fixed
- Mantiene gli instance manager interrogati trattenuti attaccati al grafo di eventi attuale e valuta percorsi SOM ordinari e predicati entro i limiti originali di default-stack e operazione
Version 2.952.0
Added
- Preserva le destinazioni GoToR remote delle annotazioni attraverso lo scambio XFDF nativo, ordinario di Windows e di callback versionati, incluse coordinate esatte, file specification Unicode e comportamento opzionale della finestra
Fixed
- Autentica le importazioni ordinarie di annotazioni di documenti caricati contro i permessi di cifratura originali, le firme e i lock dei campi trattenendo le modifiche consentite del chiamante e il lifetime indipendente della sorgente; legge gli interi ByteRange delle firme senza arrotondamento Single e stacca l'archiviazione condivisa delle stringhe RC4 prima della cifratura
Version 2.951.0
Added
- Rendering di bordi nuvolosi limitati per le annotazioni Square, Circle, Polygon e FreeText senza appearance normali, preservando larghezza, dash, opacità e grafi sorgente; condivisione dei byte di font generati immutabili tra le viste FreeText senza addebiti ripetuti di byte decodificati, trattenendo i budget di parsing e la cancellazione
Version 2.950.0
Added
- Creazione, clonazione, rinomina, inserimento e rimozione di nodi nativi del Data DOM XFA con proprietà limitata, namespace ereditati, riferimenti importati stabili, aggiornamento dei binding e rollback completo dell'evento; attributi UTF-8 e riferimenti FormCalc trattenuti sono preservati attraverso XML salvato e consumer PDF nativi
Version 2.949.0
Added
- La distinzione tra nessuna opzione choice selezionata e un valore di export vuoto selezionato viene preservata nello scambio XFDF nativo, Windows e Linux, con pubblicazione no-op esatta, validazione limitata e caricamento verificato di documenti cifrati
Version 2.948.0
Fixed
- Quattro prodotti di rendering congelati passano sei target reali freschi con 68 asserzioni di budget/ripristino e 26 di aritmetica verificata, 206 vecchi controlli fallback e 42 coppie di composizione su 8820000 componenti RGB ciascuno al massimo 2; MuPDF e Poppler processano ciascuno 42 pagine reali per target ed entrambi i consumer C++Builder freschi passano; esatti pixel raster 1e18 vengono respinti contro 1e18-1 prima di qualsiasi allocazione A8 su ogni target, mentre i fallimenti genuini di composizione della 947.1 rilasciata e i fallimenti di precisione/allocazione candidatev6 restano preservati
Version 2.947.1
Fixed
- Le dichiarazioni esplicite vuote del namespace XML predefinito vengono preservate durante parsing e serializzazione XFA, impedendo ai sottoalberi di dati non qualificati di ereditare il namespace di un antenato dopo salvataggio e ricaricamento
Version 2.947.0
Added
- Rendering di bordi rettangolari smussati e incassati delle annotazioni e didascalie di linea misurate Unicode o rich, preservando opacit\u00e0, offset degli endpoint, appearance esistenti, risorse font limitate e clipping delle annotazioni
Version 2.946.3
Fixed
- xfa.host.resetData viene applicato attraverso eventi nativi senza leggerlo erroneamente come import di Data XML, preservando i valori predefiniti del template, i valori agganciati, gli scope ripetuti, le modifiche in sospeso e il rollback transazionale
Version 2.946.2
Fixed
- L'aritmetica a parole di SHA-1, SHA-256, SHA-384 e SHA-512 \u00e8 corretta con i controlli di intervallo e overflow del compilatore attivi, preservando digest validi e autenticazione delle password AES-256 senza modificare le interfacce pubbliche
Version 2.946.1
Fixed
- Gli attributi XFA presenti-ma-vuoti e nomi, valori, namespace e query indicizzate UTF-8 vengono preservati attraverso la serializzazione XML nativa, i valori predefiniti persistenti delle propriet\u00e0, gli eventi script ripetuti e il rollback transazionale
Version 2.946.0
Added
- Il testo rich temporaneo delle annotazioni viene renderizzato con esplicite autorizzazioni font read-only Preview/Print e byte completi dei font invariati, preservando le politiche di embedding modificabili e gli appearance Screen esistenti senza segnaposto media impliciti
Version 2.945.0
Added
- Le pagine locali delle annotazioni e le destinazioni nominate vengono preservate attraverso lo scambio XFDF nativo e legacy, con token decimali limitati esatti, Adobe XML qualificato, validazione degli attributi duplicati e pubblicazione transazionale tramite callback Windows/Linux
Version 2.944.0
Added
- Gli elementi choice visualizzati e di export XFA vivi sono gestiti attraverso JavaScript e FormCalc, preservando gli alias superstiti, le selezioni duplicate o vuote esatte, le liste native per istanza e gli appearance PDF nativi o legacy salvati entro limiti di mutazione vincolati
Version 2.943.1
Fixed
- Gli esatti byte PDF caricati vengono preservati quando le transazioni native miste scalari e rich tipizzate o i batch vuoti non apportano modifiche, trattenendo le modifiche in sospeso del grafo, le politiche autenticate di firma e cifratura, i limiti delle risorse e la pubblicazione atomica
Version 2.943.0
Added
- L'XFDF mappato delle annotazioni viene scambiato attraverso i file job di Windows e i callback V1 originali con transazioni di append autenticate, dati binari e Unicode limitati, byte no-op esatti e pubblicazione atomica
Version 2.942.0
Added
- Il rendering delle annotazioni supportate prive di appearance normali si appoggia a geometrie temporanee delimitate, estremi di linea, icone e FreeText Unicode, conservando risorse sorgente, rich text, flag view/print e cancellazione
Version 2.941.1
Fixed
- La verifica dell'unicità delle selezioni choice XFA native usa un ordinamento delimitato e cancellabile, preservando i valori export esatti case-sensitive, l'ordine di selezione originale e il comportamento transazionale in caso di fallimento
Version 2.941.0
Added
- La spaziatura lettere e parole CSS nativa e quella typed originale si applica con cascata indipendente a run con shaping, righe fisiche, fitting e appearance salvate, con serializzazione calcolata dei punti, arrotondamento decimale esatto e pubblicazione JSON transazionale su Windows/Linux
Version 2.940.0
Added
- Lo scambio di diciotto tipi di annotazioni mappate passa da operazioni XFDF native e Linux V1 JSON delimitate, preservando contenuti rich Unicode, callout, colori trasparenti, allegati binari, link popup e forward-reply, permessi autenticati e pubblicazione append transazionale
Version 2.939.0
Added
- La creazione di campi combo e liste XFA legacy copre export esatti per istanza ripetuta, etichette di visualizzazione, indici selezionati, posizioni di scorrimento e appearance Unicode con stile, preservando flag di campo alti e rollback per campo grazie a una choice factory separata con font fornito e a una modalità metadata-only
Version 2.938.0
Added
- Il rendering dei quattro intent di colore standard attraversa graphics state, form, immagini, shading, pattern e gruppi di trasparenza, con override dall'immagine, fallback relativo per nomi sconosciuti e caching delle trasformazioni ICC delimitato e cancellabile
Version 2.937.0
Added
- La creazione di gruppi radio XFA legacy indipendenti parte dagli scope reali di istanza ripetuta, preservando export esatti, stati selezionati e didascalie Unicode con stile, con rollback di adozione a intero gruppo e un'API nativa separata per le appearance dei membri con font fornito
Version 2.936.1
Added
- Il parsing di dizionari e trailer PDF validi abilita il controllo di overflow aritmetico trattenendo esplicitamente i low32 bit della moltiplicazione hash FNV
Version 2.936.0
Added
- Le altezze di riga rich-text typed JSON esplicite si legano alle appearance salvate su Windows e Linux, preservando run autoriali, metriche parent fornite, pianificazione aggregata delimitata e aggiornamenti transazionali su campi misti
Version 2.935.1
Added
- I caratteri Unicode supplementari si contano una sola volta nelle appearance password XFA portabili, i valori originali restano e i budget aggregati di glifi si applicano prima di allocare le maschere, con cancellazione a granularità scalare
Version 2.935.0
Added
- Altezza di riga rich-text, lunghezze CSS calcolate, fattori ereditati e metriche del font parent sopravvivono a layout nativo, appearance salvate, file job e callback Windows e import FDF/XFDF JSON Linux, con pianificazione font-metric delimitata
Version 2.934.0
Added
- La creazione di appearance Unicode reali per campi testo, numerici, data e password XFA legacy usa famiglia e stile font effettivi per istanza, risorse font incorporate modificabili, mascheramento password scalare e adozione risorse transazionale
Version 2.933.0
Added
- La valutazione delle funzioni colore cubiche campionate multidimensionali segue la convenzione scalare a quattro nodi esistente, con fallback lineare sulla dimensione corta, lavoro tensoriale delimitato, cancellazione e interpolazione scalare invariata
Version 2.932.0
Added
- La decodifica dei componenti JPEG 2000 signed e unsigned arriva a 26 bit con precisione mista, subsampling e opacità, normalizza i campioni delimitati e ignora le dichiarazioni BitsPerComponent delle immagini JPX prima del rendering
Version 2.931.0
Added
- Gli stati export on, off e neutral delle checkbox XFA legacy, le didascalie Unicode con stile e i bundle di appearance nativi vengono preservati, i nomi PDF speciali vengono codificati in modo coerente e le risorse dirette di pagina tornano disponibili dopo l'adozione annullata dei widget
Version 2.930.0
Added
- La valutazione delle applicazioni d'uso degli optional content automatici usa contesti espliciti di zoom, lingua e utente, selezioni manuali native persistenti e stato operativo Linux JSON delimitato; i rendering context presi in prestito vengono invalidati dopo le modifiche al documento
Version 2.929.0
Added
- Testo scalare, celle comb, etichette choice e segni dei pulsanti si costruiscono dalle famiglie di font regular fornite e ordinate attraverso setter nativi, job Windows e callback versionati Windows/Linux; i metadati scalari ordinari restano e una selezione choice vuota si distingue da un export vuoto selezionato
Version 2.928.0
Added
- Il rendering di dash array e fasi ExtGState usa una scansione delimitata degli array PDF typed, preservando commenti, validazione strict degli operandi, geometria stroke ereditata, cancellazione e array di testo ordinari
Version 2.927.0
Added
- Le didascalie scalari e rich dei pulsanti ApplyXFAAsAcroForm Windows originali vengono dipinte con i programmi famiglia/stile realmente installati, override persistenti per istanza e bundle di appearance nativi normal/down/rollover, registrando le risorse font AcroForm genuine
Version 2.926.0
Added
- L'espansione dello shorthand font CSS inline delimitato produce candidati size, weight, italic e famiglia fornita con cascata indipendente, preservando dimensioni relative ereditate, reset degli stili omessi, priorità important dei componenti e appearance font realmente salvate
Version 2.925.0
Added
- La selezione delle famiglie di font fornite dal chiamante e ordinate copre grafemi rich-text completi con stile tramite file job Windows e callback V1, preservando candidati CSS e typed, transazioni genuine a valore vuoto e budget aggregati di font
Version 2.924.0
Added
- Il rendering dei gruppi optional-content predefiniti del documento e delle espressioni di membership attraversa contenuto di pagina marcato, form XObjects e annotazioni, lo stato nascosto di grafica e testo viene preservato e l'uso view o print esplicito passa dall'interfaccia Linux V1 JSON nativa
Version 2.923.0
Added
- Le liste ordinate di candidati font rich-text sopravvivono nelle appearance native e nel Linux V1 JSON, e i run scalari misti e typed originali si legano a file job Windows e callback V1 invariati con paint preciso, programmi di stile forniti e pubblicazione in due fasi
Version 2.922.0
Added
- La visibilità view o print delle annotazioni native segue le regole Invisible di PDF 2.0, le appearance statiche RichMedia e Projection e le trasformazioni Text implicite vengono riconosciute, e la sostituzione atomica PNG su Windows resta delimitata e cancellabile con diagnostica reale degli errori OS
Version 2.921.0
Added
- Il rendering delle didascalie scalari e XHTML dei pulsanti XFA nativi usa programmi famiglia/stile forniti genuine, separatori inline preservati e padding autoriale, appearance reali normal/down/rollover, visibilità delle didascalie e override persistenti per istanza ripetuta
Version 2.920.1
Fixed
- Le mutazioni PDF riuscite via C ABI Linux nativa restano allineate allo snapshot sorgente committato, così i successivi import FDF o XFDF a valore identico preservano i valori modulo pubblicati esatti, le appearance typed, il testo disegnato e le pagine importate invece di ripristinare byte di input superati
Version 2.920.0
Added
- Il salvataggio di campi scalari misti e run rich-text typed originali avviene in un'unica transazione documento atomica e indipendente, trattenendo valori di appearance precisi e programmi font forniti, preservando policy autenticate e modifiche correnti del grafo, e riconoscendo i no-op genuine su appearance read-only
Version 2.919.0
Added
- La risoluzione dei grafemi Unicode completi con stile passa per famiglie di font candidate fornite esplicitamente, i valori autoriali e gli stili di appearance precisi restano, il fallback nativo opt-in Linux JSON passa da callback V1 invariati e il budget aggregato reale dei font resta invariato durante il caricamento dei programmi configurati
Version 2.918.0
Added
- Il rendering delle didascalie Boolean XFA native parte da XHTML effettivo e font di stile nominati forniti, gli overlay per istanza ripetuta e il runtime XML salvato restano e le riserve automatiche delle didascalie si misurano con gli extent logici finali delle righe di testo
Version 2.917.0
Added
- La selezione dei programmi famiglia/stile nominati e genuine per gli import FDF e XFDF Windows passa per percorsi file annidati o callback font versionati esistenti, e le letture random sincronizzate della sorgente restano isolate dalla pubblicazione transazionale sequenziale
Version 2.916.0
Added
- La decodifica e il rendering di 182 CMap legacy incorporati coprono codici da uno a quattro byte delimitati, writing mode parent e child esatti, mappature Unicode, recupero deterministico dei codici malformati, ereditarietà cancellabile e note di redistribuzione incluse
Version 2.915.0
Added
- Le opzioni selezionate delle liste XFA native restano visibili grazie a finestre di selezione font-metric e indici top persistiti, gli array completi di opzioni e valori si preservano e le modifiche font per istanza ripetuta e il rollback degli eventi restano con preparazione delimitata dei glifi visibili
Version 2.914.1
Fixed
- I cache hit in foreground della memoria si sovrappongono alla cancellazione cooperativa del prefetch dopo l'acquisizione della reale riserva di memoria, la telemetria della cache operativa si preserva e la cancellazione viene ricontrollata dopo attese su lock di cache o riserve, mantenendo l'ordinamento strict dei miss e i thread join
Version 2.914.0
Added
- La creazione delle appearance Boolean XFA native copre sei segni personalizzati, bordi tondi o quadrati, colori e dimensioni dei segni, cinque posizionamenti delle didascalie e font di didascalia incorporati condivisi; gli alias export Unicode reversibili e i distinti stati neutral legali sopravvivono all'esecuzione degli eventi e al reload del PDF salvato
Version 2.913.2
Fixed
- La decodifica dei barcode a matrice ruotati completi precede i frammenti disconnessi e i mismatch esatti dei finder QR vengono rifiutati prima del campionamento a griglia intera, con raggruppamento più stretto, comportamento originale delle barre lineari, budget di scansione atomici e deadline invariata di due secondi
Version 2.913.1
Added
- La risoluzione dei valori XFA impliciti esistenti passa per contesti dati live delimitati senza ripetere il parsing dei selector addebitato sul budget delle operazioni script, preservando le deadline transazionali originali e il comportamento di binding esplicito
Version 2.913.0
Added
- La selezione delle famiglie di font rich native configurate passa dai callback Linux V1 JSON invariati per riempimenti typed e import FDF o XFDF, i programmi famiglia/stile realmente richiesti si caricano con budget aggregati e entrambi i profili rich implementati vengono dichiarati
Version 2.912.0
Added
- Import ed export di FDF o XFDF reali passano da file job Windows e callback V1 con input posseduto immutabile, preparazione del grafo corrente non salvato, appearance rich reali a quattro font, policy AES signed autenticate e commit del contesto solo dopo il successo di entrambi i callback di output
Version 2.911.0
Added
- La creazione di disegni rettangolo, linea e arco XFA nativi e immagini PNG o JPEG inline usa decodifica reale dei campioni, maschere alpha, aspect adattato e posizionamento ruotato, con preparazione delimitata e ownership transazionale sotto cancellazione
Version 2.910.0
Added
- L'adattamento delle appearance di annotazione NoZoom e NoRotate si ancora al rettangolo upper-left trasformato, preservando UserUnit, geometria del modulo adattata, opacità e il clip di pagina reale attraverso scala e rotazione
Version 2.909.0
Added
- La selezione delle famiglie TrueType nominate fornite avviene per singolo run rich e dichiarazione XHTML font-family delimitata, le metriche di stile e le cache dei segni restano per famiglia e i valori rich FDF o XFDF reali si importano con confronto canonico consapevole della famiglia
Version 2.908.1
Fixed
- L'applicazione delle dichiarazioni rich-text inline valide usa priorità important indipendente, basi font-size calcolate di contorno e proprietà ereditate esplicite, preservando i confini delle dichiarazioni tra commenti CSS e valori tra virgolette o funzione
Version 2.908.0
Added
- La creazione di combo box, list box, campi multi-selezione, checkbox e gruppi radio con scope strutturale XFA nativi genuine parte direttamente dai dati runtime salvati, con etichette display/export abbinate, elementi per istanza, flag di accesso e stati di appearance nativi indipendenti
Version 2.907.1
Fixed
- La decodifica dei reali escape esadecimali PDF e dei byte UTF-8 nei campi modulo name-valued ed ereditati preserva gli stati export dei pulsanti con spazi, punteggiatura e Unicode attraverso il reload nativo del documento salvato
Version 2.907.0
Added
- Il rendering delle identità di glifi CFF CID-keyed reali e delle sostituzioni notdef delimitate passa per le reali mappature CID-to-GID dei font, preservando estrazione testo indipendente e controlli di cancellazione durante tutto il parsing dei CMap con escape
Version 2.906.0
Added
- Il posizionamento dei segni combining cross-style usa i bounds reali dei glifi selezionati e le classi combining canoniche in assenza di anchor di attacco, con scale di font indipendenti, stacking stesso lato e direzioni reali risolte degli item per i segni doppi
Version 2.905.1
Fixed
- La risoluzione dei parametri predictor con escape avviene dentro il vero dizionario DecodeParms e il token reale dello stream si individua dopo la sintassi bilanciata del dizionario esterno, preservando i payload xref binari con valore whitespace nel caricamento Windows ordinario
Version 2.905.0
Added
- La creazione di alberi di pagine PDF nativi, campi modificabili ripetuti, pulsanti e testo statico Unicode parte direttamente da XDP e valori runtime salvati su Linux e Windows, con appearance incorporate genuine e preparazione delimitata dei candidati prima dell'output al chiamante
Version 2.904.2
Fixed
- La lettura dei veri dizionari esterni dei cross-reference stream non confonde le impostazioni di crittografia annidate, i nomi delle voci con escape si risolvono e i dizionari di crittografia diretti restano nelle revisioni incrementali Windows ordinarie
Version 2.904.1
Fixed
- I controlli completi di direzione del paragrafo e le bracket abbinate sopravvivono allo shaping standalone automatico e al wrapping semplice dei campi multilinea, con contesti di joining per riga fisica, caching immutabile dei paragrafi e output totale di glifi delimitato
Version 2.904.0
Added
- Il runtime nativo XFA di JavaScript, event journal, Data DOM, XML, FormCalc e locale ICU gira su Linux con lease reali dei moduli condivisi e clock monotoni veri, preservando l'inizializzazione Unicode Windows esistente
Version 2.903.1
Fixed
- I cluster di shaping Unicode directional-only restano a avanzamento di spaziatura caratteri zero, trattenendo i controlli logici, le identità dei glifi e le normali spaziature di cluster visibili e di parola
Version 2.903.0
Added
- Embedding direzionali, override, isolati e contesto di paragrafo a bracket abbinate sopravvivono nelle righe rich con stile mandate a capo, le API di ordinamento derivate dal paragrafo e cached per riga fisica restano delimitate e gli item di riga reali prendono shaping con livelli e script risolti
Version 2.902.0
Added
- Import ed export di FDF e XFDF con stile passano dai reali callback C ABI JSON Linux, i font face configurati genuine si incorporano, le policy di firma e i byte privati sorgente esatti restano per gli import no-op, e lo stato corrente del documento si pubblica solo dopo il successo di entrambi gli output dei callback
Version 2.901.0
Added
- Il rendering degli shading mesh a patch Coons e tensor usa geometria cubica delimitata, interpolazione colore nello spazio sorgente, edge di continuazione, gestione delle pieghe e limiti transazionali su risorse e cancellazione
Version 2.900.0
Added
- Caricamento e salvataggio transazionali dell'XML del Data DOM XFA nativo rispettano i namespace, il contenuto misto ordinato e le identità di data binding si preservano, i valori host si quotano in tempo lineare e il lease esatto del modulo JavaScript per sessione sopravvive al replay delimitato dell'engine
Version 2.899.0
Added
- I segni combining con stile si agganciano ai veri anchor GPOS di base, legatura e segno con scale di font indipendenti, gli outline dei glifi con origine negativa restano nei clip dei widget rich e gli extent di riga adatti si riservano ai segni impilati visibili
Version 2.898.0
Added
- Lettura e scrittura del rich text FDF e XFDF delimitato decodificano gli span di stile XHTML nativi in quattro stili di font incorporati genuine e importano in modo transazionale le appearance reali in PDF firmati o crittografati, incluso il confronto canonico dei valori rich esistenti read-only
Version 2.897.0
Added
- Lo shaping degli span di stile Unicode selezionati usa il vero contesto HarfBuzz circostante, le API native di ordine e direzione del paragrafo si espongono e gli item rich typed si piazzano nelle reali righe fisiche mandate a capo, preservando stili logici e ownership degli oggetti
Version 2.896.0
Added
- La risoluzione del binding SOM XFA nativo attraversa gli scope dati ripetuti con traversata discendente delimitata, nomi con escape, matching Unicode, fallback per foglie mancanti per istanza e sincronizzazione transazionale dei valori runtime
Version 2.895.1
Fixed
- Il supporto statico degli eventi XFA nativi si compila una sola volta per engine JavaScript posseduto e gli argomenti dinamici completi e compatti degli eventi prendono replay, preservando closure, risposte host registrate, isolamento delle istanze, budget di journal originali e deadline transazionali durante il rollback
Version 2.895.0
Added
- Import ed export dei byte FDF e XFDF reali passano dai callback JSON Linux nativi versionati esistenti, i valori Unicode dei campi, la sicurezza AES e le policy di firma autenticate si preservano e il documento corrente torna indietro dopo output o pubblicazione del risultato falliti
Version 2.894.0
Fixed
- Il wrapping del rich text typed troppo largo avviene ai confini completi dei grafemi Unicode attraverso stili di font e colore, gli intervalli con stile reali si misurano prima dell'assegnazione delle righe e i cluster oversize indivisibili, i point size misti e la spaziatura caratteri esplicita si preservano
Version 2.893.1
Security
- L'autenticazione delle evidenze CRL e OCSP signed Adobe richieste avviene dentro i veri timestamp RFC3161 del documento prima di accettare aggiornamenti modulo protetti da policy di firma, con rifiuto transazionale per evidenze mancanti, revocate, scadute o non fidate
Version 2.893.0
Added
- Lettura e scrittura dei dati scalari dei campi FDF e XFDF nativi delimitati e import transazionale delle reali appearance Unicode, choice e pulsanti in PDF pubblicati indipendentemente, preservando policy di firma autenticate e crittografia AES
Version 2.892.0
Added
- Il rendering degli shading a mesh triangolare free-form e lattice delimitati usa semantiche genuine di coordinate, flag, funzioni, colore e trasparenza, e gli stream di palette Indexed esadecimali si decodificano esattamente una volta
Version 2.891.0
Added
- I commenti XML nativi XFA ordinati e le processing instructions sopravvivono a import di eventi, serializzazione, cloning e rollback transazionale, restando esclusi dal testo scalare, dal rich text e dalla selezione degli elementi SOM
Version 2.890.1
Fixed
- Il recupero dai lock transienti di pubblicazione atomica Windows usa al massimo otto tentativi di sostituzione cancellabili, preservando target esatti, byte preparati, errori permanenti del sistema operativo e pulizia gestita dello staging
Version 2.890.0
Added
- I gruppi legali Unicode di parole, spazi non divisibili, punteggiatura e numeri sopravvivono nei run rich typed con stile, i gruppi interi si adattano con avanzamenti reali dei font con stile, le baseline a dimensioni miste restano e i CRLF si fondono attraverso le cuciture di stile
Version 2.889.0
Added
- La sincronizzazione degli alias scalari XFA nascosti e invisibili materializzati segue i commit dei campi visibili, preservando gli scope dati ripetuti nativi, i valori vuoti espliciti e il rollback transazionale esatto
Version 2.888.0
Added
- Le proprietà complete di Unicode 17 e il line breaking contestuale si applicano attraverso le API documento esistenti, le query portabili di proprietà raw o risolte LB1 si espongono, gli ordinali enum consolidati e i contratti di tailoring si preservano e le proibizioni dei soft hyphen si rispettano
Version 2.887.0
Added
- Import e serializzazione dell'XML exData XFA nativo persistente supportano letture script immediate, conservazione di namespace e contenuto misto, identità per istanza ripetuta trattenute, rollback transazionale e rendering XHTML salvato genuine
Version 2.886.0
Added
- Creazione e autenticazione di timestamp RFC3161 standalone per documenti PDF con streaming delimitato, imprint SHA256, SHA384 o SHA512, identità TSA fidata e binding del nonce, dichiarazioni richieste delle estensioni ESIC e eccezioni autenticate di certificazione o field-lock
Version 2.885.0
Added
- Le opportunità di a capo predefinite di Unicode 17 si espongono e vengono consumate nei reali campi rich nativi, preservando gruppi di spazi non divisibili, trattini e punteggiatura e separatori espliciti Unicode con i valori V e RV originali esatti
Version 2.884.0
Added
- I confini di grafemi estesi predefiniti e portabili di Unicode 17 si espongono e le parole rich troppo larghe vanno a capo su cluster completi, trattenendo il contenuto Unicode reale delle appearance e correggendo le variazioni di larghezza delle forme di joining dopo lo shaping dei substring
Version 2.883.0
Added
- La creazione di value children immagine e geometrici XFA nativi persistenti e il rendering di alpha PNG reale, DPI immagine e geometria aspect preservano isolamento per istanza ripetuta e rollback transazionale; i pixel immagine FPC che prima venivano renderizzati neri vengono corretti
Version 2.882.0
Added
- L'ereditarietà delle risorse font reali degli stream figli e dei parametri testo PDF copre il rendering Form, Type3 e Pattern, i salvataggi testo del graphics state si preservano, il testo Type3 invisibile si rispetta e i default di appearance delle annotazioni indipendenti si resettano
Version 2.881.0
Added
- L'autenticazione automatica delle firme CAdES detached standard usa il binding richiesto del certificato di firma e la lettura coerente delle reali stringhe Contents literal esadecimali o con escape per verifica, aggiornamenti modulo permessi ed evidenze di validazione a lungo termine
Version 2.880.2
Fixed
- L'allineamento dei paragrafi rich resta con run iniziali vuoti, cambi di stile inline e a capo espliciti, e i bordi rettangolo o cerchio richiesti e le righe evidenziate misurate vengono dipinti invece di essere omessi in silenzio
Version 2.880.1
Fixed
- La cancellazione si osserva prima dell'allocazione del page renderer e dell'installazione del contesto e durante l'inizializzazione, un contesto colore attivo del chiamante si preserva quando la costruzione viene inizialmente rifiutata e le display list prese in prestito si rilasciano senza pubblicare bitmap parziali
Version 2.880.0
Added
- Il rendering dei veri valori scalari di draw e didascalia XFA nativi segue la creazione via script, i valori esplicitamente vuoti e l'isolamento per istanza ripetuta si preservano e il rollback esatto resta quando il disegno nativo successivo esaurisce il budget
Version 2.879.0
Added
- La creazione di value children scalari XFA nativi persistenti offre sincronizzazione immediata di campi, dati e alias condivisi, persistenza typed del modulo, commit dei widget, isolamento per istanza ripetuta e rollback transazionale esatto
Version 2.878.0
Added
- La generazione dei profili di appearance firma Windows reali con font Unicode incorporati copre widget uniti e separati, rotazione, crittografia e workflow di certificazione, e l'AppearanceFilter richiesto si impone contro il profilo realmente generato
Version 2.877.0
Added
- Il rendering dei veri pattern PDF tiling e shading colorati e non copre origini di pattern ereditate, celle annidate, overlap, paint stroke e stencil, trasparenza e cancellazione delimitata sui target nativi Linux e Windows
Version 2.876.1
Fixed
- Il binding SOM XFA completo e la reale selezione dati dell'istanza emessa si preservano applicando i default modulo e template per istanze mancanti, senza prendere in prestito valori da un'altra occorrenza ripetuta
Version 2.876.0
Added
- Le evidenze CRL e OCSP autenticate si incorporano negli attributi RevocationInfoArchival Adobe Windows firmati, le policy seed reali si impongono e stato fidato, autorizzazione delle risposte e freshness si validano prima di pubblicare le firme
Version 2.875.0
Added
- La risoluzione dei reali default dei campi XFA non fabbrica dati durante la lettura, i valori esplicitamente vuoti delle istanze si preservano e le modifiche scrivono dati di istanza indipendenti senza toccare i template condivisi
Version 2.874.0
Added
- La modifica dei campi rich-text nativi usa run di stile Unicode typed, veri font incorporati regular, bold, italic e bold-italic, baseline di appearance a dimensioni miste misurate, decorazioni e valori V/RV sincronizzati attraverso widget e output crittografato
Version 2.873.0
Added
- La creazione di UI choice XFA persistenti per istanza passa dagli script nativi e i veri widget text, password e choice consumano appearance multiline e long-word misurate
Version 2.872.0
Added
- La creazione di firme di certificazione DocMDP Windows reali con permessi P1, P2 o P3 e attestazioni legali Unicode autenticate rispetta le policy seed richieste e i lock FieldMDP, e le firme successive si permettono solo dove la policy firmata lo consente
Version 2.871.1
Fixed
- I corpi degli eventi XFA girano nel proprio scope lessicale e strict, preservando gli alias dei campi nello scope esterno, il valore this dell'evento, i return espliciti e il rollback esatto dei fallimenti
Version 2.871.0
Added
- La creazione delle proprietà XFA mancanti di font, paragrafo, fill, colore, bordo, edge e corner passa dai veri script di eventi nativi, i binding stabili del modulo per istanza si persistono con rollback esatto e le appearance opzionali dei widget si rigenerano dopo cambi di stile effettivi
Version 2.870.0
Added
- Il rendering dell'output Cairo Windows nativo reale usa outline espliciti dei font standard via GDI e le corrette convenzioni di chiamata Win32 di OpenJPEG, con dipendenze native pinnate riproducibili e accettazione indipendente dell'output
Version 2.869.0
Added
- La firma dei documenti Windows usa veri callback di trasporto C ABI sincroni RFC 3161 con imprint SHA256, SHA384 o SHA512, trust TSA autenticato e controlli CRL, vincoli seed del timestamp richiesti e pubblicazione transazionale delimitata
Version 2.868.0
Added
- La generazione delle appearance mascherate di campi password e file-select literal preserva valori Unicode e policy AES-256, il Unicode supplementare con escape passa per il JSON ABI nativo, i token decimali sorgente PDF subnormal restano e i buffer di prefetch RGB si creano senza screen DC
Version 2.867.0
Added
- Il wrapping del rich text XFA attraverso stili inline usa confini di parola misurati, a capo espliciti, baseline e allineamento di riga condivisi, gap di parola giustificati reali e geometria dei link di frammento, preservando la persistenza XDP nativa per istanza ripetuta
Version 2.866.1
Added
- L'autenticazione dei token RFC 3161 raw-signature usa il loro reale algoritmo di message imprint supportato tra SHA256, SHA384 o SHA512, mantenendo il default SHA256 esistente per le richieste e i controlli completi di trust e revoca del token
Version 2.866.0
Added
- I run di rich text XFA a dimensioni miste si allineano a una baseline comune nel PDF salvato, la modalità text-position del chiamante si preserva e il margine di paragrafo adiacente maggiore si applica, transizioni di paragrafi vuoti incluse
Version 2.865.0
Added
- Richiesta e autenticazione di timestamp RFC 3161 per imprint di messaggio espliciti SHA256, SHA384 e SHA512 senza ricalcolare l'hash dell'imprint, preservando lunghezze digest strict, nonce freschi, trasporto delimitato, catene di fiducia e validazione di revoca
Version 2.864.0
Fixed
- La deadline originale di scansione dei barcode si preserva dando priorità ai raster lineari completi e ai gruppi candidati di quiet zone, e i bordi finder proiettivi DataMatrix non validi si rifiutano prima di campionare i moduli interni senza cambiare le tolleranze del finder
Version 2.863.0
Added
- I vincoli validi ereditati di seed firma e certificati Windows si rispettano con reale selezione di digest e CAdES, informazioni firma Unicode, lock indiretti di campo normalizzati, permessi storici di lock autenticati, seconde firme permesse e policy del modulo crittografate
Version 2.862.0
Added
- Il rendering dei veri shading PDF function, axial e radial nativi usa geometria e valutazione di funzioni delimitate, clipping ereditato, semantiche Domain, Matrix, Extend e BBox, colori calibrati e speciali, trasparenza, soft mask, blending e gruppi knockout
Version 2.861.0
Added
- L'export dei veri PDF nativi di revisione contratti annotati e degli highlight Unicode espliciti con appearance normali visibili preserva il contenuto sorgente e le revisioni firma incrementali, impone permessi P3 autenticati sulle annotazioni e diritti utente crittografati, e prepara output delimitati prima della pubblicazione via callback
Version 2.860.0
Added
- Il binding delle opzioni native Linux di firma e verifica copre reale selezione di digest, metadati firma Unicode, profili di appearance nominati, byte di trust espliciti, identità del trasporto timestamp ed evidenze di revoca autenticate, con preparazione privata delimitata prima della pubblicazione
Version 2.859.0
Added
- Gli override live per istanza XFA di font, paragrafo e corpo scalare si applicano al reale disegno e misura del rich text, la precedenza CSS inline e il contenuto esplicitamente vuoto sopravvivono alla persistenza XDP nativa e il rollback transazionale esatto resta
Version 2.858.0
Added
- La decodifica una sola volta dei nomi PDF con escape di font, encoding, glifi, colori e risorse copre rendering nativo ed estrazione testo condivisa, le chiavi risorsa hash literal si preservano e i nomi equivalenti restano allineati con outline reali e metriche dei glifi
Version 2.857.0
Added
- Il confronto nativo dei documenti usa conteggi di pagine e oggetti, testo Unicode, grafi strutturali normalizzati e reali pixel RGB o luminanza renderizzati, con equivalenza semantica degli stream, input crittografati autenticati e preparazione delimitata prima della pubblicazione via callback
Version 2.856.0
Added
- La selezione dei preset nativi reali di appearance firma passa per il nome del profilo registrato, la generazione copre layout distinti approval, certification e compact, i metadati autenticati dei profili e le policy crittografate si preservano e i profili sconosciuti si rifiutano prima della pubblicazione
Version 2.855.0
Added
- L'applicazione dei default dello schema di proprietà XFA nativo preserva valori esplicitamente vuoti, stili per istanza e misure frazionarie in punti di font, bordo e disegno attraverso il reale output AcroForm e PDF appiattito
Version 2.854.0
Added
- L'esposizione degli oggetti proprietà e attributo XFA nativi offre binding persistenti del modulo per istanza, scritture valore/dati sincronizzate e reali effetti su font, bordo, paragrafo e layout UI, preservando rollback transazionale e budget di focus senza script
Version 2.853.0
Added
- Le evidenze di revoca Adobe genuine si incorporano come attributi signed CMS autenticati, le catene complete di certificati e timestamp si validano contro trust esplicito ed evidenze CRL o OCSP correnti prima della pubblicazione, e l'incorporamento della revoca richiesto dal seed di firma si impone
Version 2.852.0
Added
- La scrittura di attestazioni legali Unicode autenticate nelle firme di certificazione rispetta i requisiti Legal seed solo certificazione, le statistiche legali esistenti e i permessi del catalogo si preservano e le policy stringa crittografate restano
Version 2.851.0
Added
- Il rendering dei colori sorgente Lab ICC fisici e degli input di compatibilità XYZ delimitati copre percorsi, testo, immagini packed e palette Indexed, le tinte alternative calibrate e ICC sopravvivono nei gruppi RGB o CMYK e i profili JPX incorporati si applicano con alpha separato o associato
Version 2.850.0
Added
- La conversione dei documenti compatibili senza font in testo ricercabile e PDF/A-4 vettoriale usa embedding esplicito e delimitato dei font via Ghostscript, validazione veraPDF genuine e pubblicazione atomica, e la selezione dei font TrueType Unicode nativi resta coerente tra distribuzioni
Version 2.849.0
Added
- Il rendering dei font Type1 e Type1C semplici incorporati usa encoding dei glifi Adobe dichiarati o built-in esatti, l'estrazione ToUnicode resta separata dagli outline visualizzati e i graphics state neutrali di stroke-adjustment e colorimetrico relativo validati si accettano
Version 2.848.0
Added
- La risoluzione dei suffissi di percorso discendente XFA completi avviene dentro ogni contesto wildcard, i confini locali delle occorrenze si preservano e i predicati girano nello scope dell'evento corrente con rollback transazionale esatto
Version 2.847.0
Added
- L'imposizione dei vincoli ereditati nativi di seed firma e certificati usa catene di issuer reali, policy su subject e uso delle chiavi, digest CMS selezionabili, metadati firma Unicode crittografati e trasformazioni di documenti bloccati
Version 2.846.0
Added
- L'esposizione dei datasets e dei data nodes XFA nativi offre binding bidirezionali del modulo, mirroring dinamico dei dati di istanza, riferimenti trattenuti stabili, valori modulo unbound indipendenti e replay transazionale degli script
Version 2.845.0
Added
- L'emissione dei riferimenti FieldMDP autenticati parte dai lock esistenti o ereditati dei campi firma, i nomi campo Unicode crittografati e i riferimenti di certificazione si preservano e i livelli di permesso dei lock si applicano senza indebolire le policy firmate originali
Version 2.844.0
Added
- Il rendering delle tinte alternative Separation e DeviceN usa funzioni vettoriali delimitate, immagini packed e blending di gruppi CMYK, la geometria knockout None si preserva e i colori di registration All si mappano in modo coerente
Version 2.843.0
Added
- La risoluzione dei percorsi SOM XFA dinamici usa occorrenze inferite e relative, predicati con scope, selector di classe e discendenza, collezioni wildcard e assegnazioni transazionali di proprietà di script-object
Version 2.842.0
Added
- Il confronto semantico nativo di contratti a due documenti via C ABI e Pascal passa da un core portatile condiviso, con geometria dei glifi sorgente, input crittografati e a contenuto annidato, output di revisione JSON o HTML preparato e ordinamento stabile dei lock concorrenti
Version 2.841.0
Added
- L'autenticazione delle revisioni CMS e CAdES originali precede gli aggiornamenti nativi del modulo, i permessi DocMDP e FieldMDP originali e i campi bloccati si impongono, il contenuto e le risorse firmate si preservano e i metadati delle didascalie dei pulsanti si sincronizzano in modo atomico
Version 2.840.0
Added
- Il rendering dei colori sorgente calibrati CalGray, CalRGB e Lab, del blending calibrato di gruppi e pagine, delle basi Indexed, dei campioni immagine a 16 bit e dei soft mask di luminanza XYZ usa conversioni delimitate e valutazione gamma sicura
Version 2.839.0
Added
- L'implementazione della copia di valori FormCalc e dei riferimenti stabili ai nodi copre assegnazione through-reference, rebinding e distacco null, uguaglianza di identità numerica, handle trattenuti e rollback transazionale
Version 2.838.0
Added
- L'esecuzione dei programmi FormCalc Eval generati a runtime usa scope di calcolo isolati, valutazione annidata, sorgente Unicode, retry di compilazione delimitati e replay transazionale delle risposte host
Version 2.837.0
Added
- La generazione di appearance Unicode incorporate tramite il riempimento modulo nativo Linux JSON copre campi text, choice e multiselect, stati checkbox e radio e didascalie dei pulsanti, mantenendo pubblicazione transazionale e crittografia
Version 2.836.0
Added
- Il trasporto sincrono dei timestamp RFC 3161 passa per un record di operazione di firma nativa esteso e compatibile, con risposte delimitate, cancellazione condivisa e validazione esplicita di trust e revoca TSA
Version 2.835.0
Added
- L'esecuzione transazionale dello stato host XFA, dei flag di pagina e lifecycle, dei cambi focus per istanza, della validazione delle modifiche pendenti e dei reset usa identità stabili e replay dello stato lessicale
Version 2.834.0
Added
- La validazione degli identificatori dei certificati di firma CAdES contro il reale firmatario è indipendente dal trust opzionale dei certificati, e gli stream CMap Encoding incorporati si risolvono attraverso l'adattatore font nativo
Version 2.833.0
Added
- Il rendering dei CMap predefiniti verticali Identity-V e Unicode usa reali origini W2/DW2, matrici, movimento del testo e clipping, e gli stream CMap Encoding incorporati si decodificano correttamente
Version 2.832.0
Added
- La firma attraverso il callback ABI Linux nativo usa identità PEM o PFX delimitate, nuovi campi appearance Unicode e certificazione, e il documento firmato preparato resta come contesto corrente dopo la pubblicazione riuscita
Version 2.831.0
Fixed
- I vincoli di seed firma, lock e read-only si applicano in modo coerente ai nomi PDF codificati, le chiavi duplicate semantiche si rifiutano e i dizionari di policy ereditati si validano
Version 2.830.0
Added
- L'esecuzione delle picture clause XFA avanzate numeriche, calendario, testo e composte passa dai veri eventi del modulo, preservando precisione dell'input, semantiche locale e replay transazionale degli script
Version 2.829.0
Added
- L'import dei grafi di risorse di pagina nativi e delle appearance di annotazioni trasformate copre documenti semplici o crittografati, e gli input compatibili si convertono in testo ricercabile e PDF/A-4 vettoriale con validazione genuine prima della pubblicazione atomica
Version 2.828.0
Added
- Il rendering dei gruppi di trasparenza e di pagina CMYK a quattro componenti e ICC copre tutti i blend mode, geometrie knockout annidate e budget condivisi dei profili colore
Version 2.827.0
Added
- L'esecuzione delle picture XFA data, ora, numeriche e testo consapevoli del locale usa set di locale incorporati, query di locale transazionali delimitate e aritmetica IEEE JavaScript protetta
Version 2.826.0
Added
- Lettura e scrittura delle selezioni choice Unicode a valore array mantengono indici opzione ordinati e generano appearance coerenti per le selezioni visibili e scorrevoli dei list box
Version 2.825.0
Added
- La firma dei documenti crittografati attraverso job Windows JSON e C ABI preserva le revisioni originali, le impostazioni di sicurezza AES, i document ID e i permessi di firma
Version 2.824.0
Added
- La creazione di documenti HTML Linux nativi inserisce testo Unicode ricercabile visibile o adattato, esegue OCR Tesseract delimitato e cancellabile e produce output PDF/A-4 raster validato indipendentemente tramite API Pascal e callback
- Il rendering copre maschere Alpha/Luminosity del graphics state, transfer functions delimitate, trasparenza additiva e gruppi di pagina, forme knockout e campioni JPEG 2000 estesi, colore e alpha incorporati
- La validazione delle evidenze fornite di certificati, OCSP e CRL precede la pubblicazione incrementale DSS/VRI preservando firme esistenti e crittografia AES
- L'esecuzione dei callback di trasporto XFA host e FormCalc typed espliciti usa richieste delimitate, risposte registrate e replay transazionale
Fixed
- I valori Unicode e la diagnostica delle eccezioni restituiti dall'API QuickJS di Free Pascal si preservano
Version 2.823.0
Added
- L'incorporamento di timestamp RFC 3161 validati nelle firme CMS headless copre controlli su message-imprint, nonce, autorizzazione TSA, trust ed evidenze di revoca fornite, preservando i file di destinazione quando un timestamp richiesto fallisce
- Lo stato lessicale dei script-object XFA, le closure annidate e i moduli indipendenti per istanza ripetuta restano con replay transazionale deterministico e delimitato
- La spaziatura esplicita di caratteri e parole si applica alle appearance del testo Unicode headless misurate e generate
Fixed
- L'ordine degli argomenti source/search di FormCalc At segue la specifica e la prima posizione viene restituita per una stringa di ricerca vuota
Version 2.822.0
Added
- L'esecuzione generale degli eventi XFA QuickJS e FormCalc compilati copre operazioni DOM live per istanza ripetuta, persistenza transazionale dei form packet standard, lifecycle automatico initialize/calculate/validate/ready, esecuzione delimitata e cancellazione
Fixed
- I parametri delle funzioni finanziarie XFA e le formule cash-flow conformi alla specifica, le origini delle date Gregoriane e il comportamento del resto negativo si applicano preservando la precisione double su Delphi e Free Pascal
Version 2.821.0
Added
- L'espansione dei workflow documenti headless nativi porta un C ABI Linux versionato, reali operazioni text/form/render/sign via callback, cancellazione delimitata e rollback dei fallimenti, appearance multiline/comb/rotated/choice/button con shaping HarfBuzz/FriBidi, identità PFX, nuovi campi firma visibili e certificazione DocMDP
- Il rendering copre image mask delimitate, soft mask, colori Indexed/ICC, blend mode PDF, gruppi di trasparenza RGB isolati, glifi Type3 e clipping del testo, e la decodifica degli stream immagine JPEG, JPEG 2000, CCITT, JBIG2 e RunLength passa dal percorso documento nativo autenticato
Version 2.820.0
Added
- Il riempimento dei campi AcroForm Unicode single-line headless nativi supportati usa appearance TrueType incorporate genuine, larghezze glifo esatte e mappature CIDToGID/ToUnicode, aggiornamenti transazionali multi-widget, sicurezza AES preservata, embedding font controllato e salvataggio atomico delimitato su Linux e Windows
Version 2.819.0
Added
- Il rendering verso PNG di percorsi PDF supportati, testo orizzontale, immagini, Form e appearance esistenti delle annotazioni usa superfici CPU native Cairo/FreeType su Linux, impone lavoro delimitato e cancellazione, preserva le sorgenti e pubblica i file PNG in modo atomico
Fixed
- Gli avanzamenti AFM Adobe canonici per i dodici stili standard Helvetica/Times/Courier si usano quando le larghezze PDF mancano, prevenendo la deriva cumulativa della posizione testo dovuta alle metriche dei font sostitutivi, preservando larghezze esplicite e dei font incorporati
Version 2.818.0
Added
- La pubblicazione di firme PDF CMS/CAdES incremental headless native genuine su Linux e Windows usa campi unsigned esistenti e credenziali PEM esplicite, preserva revisioni precedenti e sicurezza AES-256, verifica i byte firmati esatti e protegge le destinazioni esistenti con pubblicazione atomica delimitata
Version 2.817.0
Added
- Il completamento dei job documento JSON e C ABI delimitati copre firma PFX incrementale validata, campi firma esistenti, confronto a due documenti, sei modalità di confronto native e revisione contrattuale bidirezionale JSON/HTML/PDF annotato, con cancellazione cooperativa, limiti di risorse e pubblicazione atomica dei file
Version 2.816.0
Added
- La verifica delle firme PDF headless native usa binding esatto ByteRange/Contents e OpenSSL 3 in streaming, la generazione delle vere firme CMS/CAdES detached parte da credenziali PEM esplicite e il trust dei certificati si riporta separatamente dall'integrità su Linux e Windows
Version 2.815.0
Added
- L'helper XFA instance-presentation delimitato serve eventi condizionali, binding ripetuto esplicito, presenza e accesso indipendenti delle istanze, identità persistita stabile, reflow transazionale, painting del canvas host e record di accessibilità
Version 2.814.0
Added
- L'apertura di documenti AES-256 R5/R6 headless nativi su Linux e Windows autentica permessi owner/user, decodifica oggetti compressi crittografati e salva valori modulo incrementali crittografati con preservazione esatta del prefisso sorgente e output atomico delimitato
Version 2.813.0
Added
- Il reflow del testo nei rettangoli di pagina delimitati attraversa baseline e invocazioni shared Form selezionate, cambia font e larghezza, ispeziona report di collisione conservativi e usa preview sigillate con commit o rollback transazionale
Fixed
- Le modifiche dei documenti caricati sopravvivono ai salvataggi ripetuti dopo la serializzazione degli oggetti, inclusi salvataggi stream-to-file e retry dopo un fallimento dell'output
Version 2.812.0
Added
- La conversione dei documenti caricati compatibili verso PDF/A-4 preserva testo, vettori, immagini e risorse incorporate originali, compone appearance visibili di annotazioni/widget, mantiene o aggiunge OCR ricercabile, riporta le perdite in modo esplicito e valida la preservazione prima della pubblicazione atomica del file
Version 2.811.0
Added
- Il caricamento di cross-reference stream, sezioni hybrid reference e object stream compressi passa dall'API documento headless nativa, gli indici dei membri delimitati e la precedenza delle revisioni si validano, i valori numerici wide sorgente esatti si preservano e il salvataggio output incrementale indipendente fedele alla sorgente copre Linux e Windows
Version 2.810.0
Added
- La correzione di orientamento della scansione, skew ad angoli continui, ombre, bordi e quad di prospettiva espliciti usa geometria reversibile delimitata, le evidenze di orientamento Tesseract fidate si usano e parole OCR, baseline, quadrilateri di pagina e layout semantico tornano alla scansione originale per un output strutturato modificabile
Version 2.809.0
Added
- La configurazione dei motori locali Tesseract e RapidOCR CLI o DLL nei job OCR JSON e C ABI trattiene testo Unicode ricercabile e pixel della scansione, scopre gli adapter supportati, valida le impostazioni esplicite e impone budget di rendering/riconoscimento con output atomico e rollback delle pubblicazioni fallite
Version 2.808.0
Added
- Il caricamento dei PDF classic-xref nelle applicazioni console Linux native estrae testo Unicode di pagine e Form annidati con risorse ereditate, ispeziona e riempie valori testo AcroForm e pubblica output incrementale fedele alla sorgente con diagnostica typed, cancellazione, budget di risorse e sostituzione atomica
Version 2.807.0
Added
- La ricerca di più barcode nativi separati in un solo raster trattiene payload ripetuti a posizioni distinte, decodifica simboli ECC 200 Data Matrix ruotati e proiettivi con geometria a quattro angoli e impone budget di scansione aggregati con cancellazione e pubblicazione atomica dei risultati
Version 2.806.0
Added
- Il confronto tra contratti mette a confronto paragrafi e modifiche a parole o frasi con record di inserimento, eliminazione, sostituzione e spostamento, posizioni di pagina su entrambe le versioni, conservazione delle clausole ripetute, esclusioni esplicite del boilerplate, revisione HTML limitata e output PDF annotato verificato sulla sorgente
Version 2.805.0
Added
- L'importazione di template HTML aziendali gestisce pannelli flex/grid annidati, righe con a capo automatico, span di colonne grid, immagini e controlli di modulo in box paralleli, più risorse font-face fornite esplicitamente che sopravvivono all'embedding differito e un budget di cache separato per le immagini decodificate
Version 2.804.0
Added
- Il nucleo condiviso di oggetti PDF, I/O diretto su file, decodifica di contenuti e font, compressione, crittografia e writer viene compilato come codice Linux nativo con mappatura e sincronizzazione POSIX, conservando le API Windows e serializzando correttamente le classiche voci xref
Version 2.803.0
Added
- Registrazione dei livelli di profili fattura e regole per paese con versionamento, validazione delle fatture CII XML esplicite o ibride con report sensibili all'ambito, ed esecuzione delle regole ufficiali XRechnung 3.0.2 e delle fatture francesi CTC tramite un motore Saxon configurato in modo esplicito, con selezione dei profili pubblicati e diagnostica failure-closed
Version 2.802.0
Added
- Le tabelle tipizzate si esportano verso workbook XLSX indipendenti da Office tramite API native, job JSON e la C ABI, conservando i tipi dei valori, i formati valuta e percentuale, le celle unite, i numeri interi grandi esatti e i metadati facoltativi della sorgente, con staging limitato e pubblicazione a prova di errore
Version 2.801.0
Added
- I job JSON e la C ABI possono esportare le pagine cariche selezionate come HTML, XHTML, XML o JSON semantici e le tabelle tipizzate come CSV o JSON, con opzioni native, staging limitato, annullamento, compatibilità con i campi firma, conservazione dello stato della sorgente e pubblicazione atomica dei file
Version 2.800.2
Fixed
- Le cache delle relazioni dei form caricati vengono invalidate prima del rollback del grafo, così i job di firma e le modifiche fallite al documento lasciano l'originale sicuro da interrogare e riutilizzare
Version 2.800.1
Fixed
- Il rendering parallelo ordinato ora ammette le prenotazioni di memoria in ordine di input, così le pagine successive non possono esaurire il budget mentre la consegna attende una pagina precedente, conservando annullamento e output limitato su Delphi e FPC
Version 2.800.0
Changed
- Il testo SVG, le apparenze FreeText cariche e le sostituzioni di testo caricate ora conservano le funzionalità di shaping del documento, i flag di auto-shaping degli script e le selezioni di script e lingua GSUB, usando i dati OpenType di ogni font selezionato e mantenendo le mappature Unicode anche quando si cambia font
Version 2.799.0
Changed
- L'importazione vettoriale SVG ora mantiene i dash array ereditati, gli offset dei dash e i limiti di miter per i tratti pieni e a gradiente, mentre il rendering nativo conserva i pattern di dash sfalsati e a lunghezza zero
Version 2.798.0
Changed
- Il testo Unicode con stili ora conserva i font grassetto e corsivo attraverso il layout di fallback; gli overload di
ResolveFontForCodePointeAnalyzeUnresolvedGlyphssensibili allo stile allineano preflight e output, e i riferimenti a caratteri XML in FPC preservano gli scalar Unicode invece di corrompere il testo
Version 2.797.0
Fixed
- L'importazione SVG ora gestisce il compositing dell'opacità di oggetti e gruppi attraverso Form di trasparenza vettoriale isolati, preserva l'alpha indipendente di riempimento e tratto e mantiene il comportamento di risorse, clip, mask e link annidati entro budget espliciti
Version 2.796.0
Added
- La conversione d'archivio PDF/A-4 raster con limiti diventa accessibile tramite job JSON e C ABI, con accettazione esplicita della perdita di informazioni, errori di budget strutturati, annullamento cooperativo, ripristino dello stato della sorgente e output atomico su file
Version 2.795.0
Added
- I PDF caricati possono ora essere normalizzati in documenti PDF/A-4 raster validati con rendering nativo rigoroso, colore sRGB verificato, risorse di decodifica e raster limitate, annullamento, protezione degli alias della sorgente e pubblicazione atomica su file; il report di conversione identifica i contenuti interattivi e gli allegati rimossi deliberatamente
Version 2.794.0
Changed
- L'importazione HTML5 ora usa righe di testo a direzione mista misurate, paginazione con controllo di vedove e orfani, sillabazione opzionale, layout flex e grid limitati e diagnostica CSS osservabile; le bitmap native FPC sincronizzano il disegno GDI diretto con le cache delle immagini LCL
Version 2.793.0
Changed
- Aggiunti eventi con limiti per gli add/remove dinamici dell'instance-manager XFA e per la presenza dei template, con riassociazione del layout, conservazione dello stato delle modifiche, rollback atomico, limiti di risorse e output XDP persistente
Version 2.792.0
Changed
- L'importazione SVG si amplia con font Unicode incorporati misurati, risorse PNG/JPEG, tratti a gradiente e soft mask Alpha e Luminosity reali, con correzione dell'alpha dei gruppi nativi e del compositing delle superfici bitmap FPC
Version 2.791.0
Changed
- Aggiunta la sostituzione del testo Unicode caricato con anteprima, font incorporati, politiche di a capo e larghezza, diagnostica per singola corrispondenza, rilevamento dei piani non aggiornati, risorse limitate, commit atomici e operazioni di preview e apply via JSON/C ABI
Version 2.790.0
Changed
- Implementate le operazioni standard di stack e transient array CFF Type 2 nel rendering dei glifi, conservando le dipendenze delle subroutine locali e globali derivate da aritmetica durante il font subsetting
Version 2.789.0
Changed
- La decodifica barcode integrata si amplia con Code 128, EAN/UPC, recupero QR sensibile alla prospettiva, Data Matrix ECC 200 e PDF417 con correzione Reed-Solomon e decodifica del payload con limiti
Version 2.788.0
Changed
- Windows FPC ora supporta TIFF, JPEG/JPX, conversione ICC, JBIG2 e Zopfli nativi tramite un bridge di codec validato via ABI, e usa veri worker thread per il rendering di pagine, pagine ordinate, tile, bande e tile JPEG 2000 con budget, callback ordinati, annullamento e pixel deterministici
Version 2.787.0
Changed
- La C ABI e il processore dei job JSON ora condividono operazioni documentali versionate per schema su capacità, rendering, testo Unicode e form, livelli OCR, redaction e firma PFX, con budget di risorse espliciti, rollback in caso di fallimento dei callback e output atomici su file; gli input callback multipagina vengono caricati correttamente
Version 2.786.0
Changed
- La modifica dei FreeText caricati ora ricostruisce atomicamente le apparenze Unicode e rich-text incorporate, con a capo automatico, allineamento, opacità, rotazione, callout, inset e politiche di overflow esplicite; i payload degli stream riscritti vengono catturati prima della mutazione, così il rollback della transazione ripristina il testo originale
Version 2.785.0
Added
- La demo console SearchableOCR aggiunge i motori OCR integrato e Tesseract via DLL o CLI accanto a RapidOCR, genera un campione di scansione di tre pagine ed espone selezione delle pagine, filtraggio per confidence, budget di riconoscimento e statistiche di conversione dettagliate
Version 2.784.0
Changed
- Le importazioni in batch FDF e XFDF ora fanno rollback degli aggiornamenti precedenti di campi e annotazioni dopo un fallimento dell'importazione, preservano le transazioni di proprietà del chiamante e cancellano i metadati dei risultati degli scambi falliti
Version 2.782.0
Added
- L'adattatore OCR Tesseract locale accetta segmentazione delle pagine, modalità del motore di riconoscimento, limiti di pixel e timeout configurabili tramite THPDFTesseractOptions per il riconoscimento a riga singola, parola singola, testo sparso e blocchi verticali
Fixed
- L'adattatore Tesseract nativo usa la dimensione della box cross-text per le baseline prevalentemente verticali, evitando che la lunghezza delle parole verticali gonfi le dimensioni del testo dei PDF ricercabili
Version 2.781.0
Changed
- Le raccolte demo Delphi e C++Builder includono ora una guida pluripagina ai campi barcode con etichette aziendali e un manuale di navigazione completo con bookmark gerarchici, destinazioni con nome e link funzionanti verso i documenti companion; le ricette PDF/A minime si spostano in Miscellaneous, e i progetti autonomi ridondanti su outline e metadati vanno in pensione
Version 2.780.1
Fixed
- La pagina delle annotazioni del Showcase separa le didascalie dell'anteprima dei contenuti dalle apparenze live dei free-text e degli stamp, evitando etichette sovrapposte nei lettori PDF e mantenendo gli esempi riconoscibili quando le apparenze delle annotazioni sono nascoste
Version 2.780.0
Changed
- I cataloghi demo danno ora priorità ai workflow completi e separano diciassette esempi minimi, mirati o datati in sottocartelle Miscellaneous; i progetti ridondanti ImageCompression e AddDelPages sono stati rimossi, con le funzionalità conservate nelle demo principali e nelle suite di regressione
Version 2.779.0
Added
- Le demo Showcase Delphi e C++Builder aprono ora uno studio documenti completo in dieci capitoli con anteprima incorporata, evidenziazione della ricerca, copertine personalizzate, watermark di revisione con un clic, esportazione pagine verificata e copie protette AES-256 R6 che conservano le modifiche; entrambe usano lo stesso motore documentale e supportano un comando di generazione senza finestra
Version 2.778.1
Removed
- Le demo GUI TestNumeric ridondanti di Delphi e C++Builder vanno in pensione a favore di test di regressione numerici automatizzati che verificano le dimensioni frazionarie delle pagine e gli operandi di disegno dopo salvataggio e ricaricamento di PDF non compressi e compressi con Flate, con copertura persistente degli array numerici
Version 2.778.0
Changed
- Le demo su pagine e report per clienti forniscono ora workflow pratici: PageOperations modifica PDF reali con i comandi extract, delete, move, insert e append e verifica al ricaricamento, mentre DBTable usa il motore tabelle per righe con a capo, intestazioni ripetute e paginazione automatica con un campione predefinito senza database
Version 2.777.1
Fixed
- L'OCR rifiuta UTF-8 malformati, caratteri di controllo non supportati e output incompatibili dei modelli di rilevamento nativi prima di pubblicare il testo, e tiene conto dei risultati di riconoscimento scartati quando applica i limiti di parole cross-page
Version 2.777.0
Fixed
- L'OCR integrato accetta le pagine vuote o non riconosciute come risultati vuoti riusciti, così i lotti di documenti scansionati possono proseguire, conserva i pixel delle bitmap di Windows FPC e controlla annullamento e limiti di tempo per tutta l'analisi delle immagini
- La classificazione dell'angolo del RapidOCR nativo conserva le proporzioni delle righe corte ed esige previsioni sicure di capovolgimento prima di ruotare i ritagli di testo
- L'adattatore RapidOCR Python locale conserva la spaziatura e la punteggiatura delle righe riconosciute invece di pubblicare singoli caratteri che possono guadagnare spazi indesiderati, e l'adattatore DLL Tesseract rifiuta i caratteri di controllo C1 prima della pubblicazione del testo
Version 2.776.0
Added
- I livelli di testo dei PDF scansionati possono sostituire atomicamente gli stream OCR di HotPDF marcati dopo salvataggio e ricaricamento, conservano i livelli esistenti quando il riconoscimento fallisce o resta vuoto, riportano le pagine sostituite e usano un esempio console RapidOCR multilingue nativo per la conversione senza sovrascrivere i file esistenti
Fixed
- Le parole OCR latine e cirilliche adiacenti con un gap tra parole sulla stessa riga ricevono spazi Unicode espliciti per una ricerca di frasi e una copia stabili, mentre le parole CJK adiacenti restano non separate
- Il rendering delle scansioni JPEG in Windows FPC conserva i pixel decodificati durante la conversione al formato bitmap OCR, evitando input di riconoscimento vuoti causati da un cambio di formato pixel LCL
Version 2.775.0
Added
- Il RapidOCR nativo guadagna preset di modelli locali per cinese semplificato e tradizionale, inglese, francese, tedesco, spagnolo, portoghese, italiano, olandese, turco, giapponese, coreano, russo, arabo e hindi, con dizionari di caratteri abbinati, installazione verificata dei modelli, ordine di lettura orizzontale e output Unicode multilingue in Delphi, C++Builder e Windows FPC/Lazarus
Fixed
- Gli adattatori OCR a processo locale ritentano la pulizia dell'output temporaneo quando i file diagnostici restano brevemente bloccati dopo la terminazione del worker
Version 2.774.0
Added
- Un adattatore DLL RapidOCR nativo tiene i modelli ONNX locali in process, riconosce istantanee bitmap senza Python, supporta classificazione dell'angolo opzionale e PDF ricercabili Unicode e valida i budget di output con annullamento cooperativo nelle build Delphi, C++Builder e Windows FPC/Lazarus
Version 2.773.0
Added
- L'adattatore RapidOCR locale guadagna configurazione esplicita dei modelli ONNX, classificazione dell'angolo opzionale, dizionari di caratteri e font locali, controlli dei thread CPU, preflight offline e budget di riconoscimento per i PDF ricercabili Unicode nelle build Delphi, C++Builder e FPC/Lazarus
Version 2.772.1
Fixed
- Gli adattatori DLL e CLI di Tesseract ora funzionano nelle build Windows FPC/Lazarus Win32 e Win64, conservando le parole OCR Unicode e leggendo i pixel correnti delle immagini LCL per i livelli di testo dei PDF ricercabili
Version 2.772.0
Added
- Un adattatore DLL Tesseract nativo opzionale aggiunge OCR multilingue con modalità di segmentazione pagina e motore configurabili, parole Unicode, affidabilità, limiti delle parole e baseline, più annullamento cooperativo, scadenze di riconoscimento e budget di output per i PDF scansionati ricercabili
Version 2.771.1
Changed
- L'OCR integrato riconosce testo ASCII normale, grassetto, corsivo e grassetto corsivo su sfondi chiari o prevalentemente scuri, accetta scritte sbiadite con contrasto di scala di grigi sufficiente e omette le parole che contengono glifi trattenuti incerti invece di scartare caratteri in silenzio
Version 2.770.175
Fixed
- LoadedDocInspector e SignatureValidator restituiscono un codice di uscita di fallimento per i PDF illeggibili e rifiutano gli argomenti di comando non validi invece di riportare un'ispezione vuota riuscita
Version 2.770.174
Fixed
- LoadedImageExport valida ogni destinazione immagine prima di esportare qualunque pagina, impedendo agli alias di percorso di sovrascrivere il PDF di input o un'altra pagina selezionata, e rifiuta i nomi di formato non supportati
Version 2.770.173
Fixed
- La cache su disco delle pagine renderizzate salta le cartelle di documenti collegati durante recupero, ricerca, memorizzazione, invalidazione ed espulsione, preservando i file fuori dalla cache
Version 2.770.172
Fixed
- I job JSON rifiutano la sintassi malformata, il contenuto di coda, i numeri fuori dall'intervallo finito di Double e l'annidamento eccessivo prima di eseguire qualunque operazione, liberando i valori parzialmente analizzati in caso di fallimento
Version 2.770.171
Fixed
- PreflightCLI controlla il piano completo di output dei report prima di scrivere, proteggendo i PDF di input dagli alias di file e rifiutando le destinazioni di report in conflitto; le scansioni ricorsive saltano le sottodirectory collegate per evitare cicli
Version 2.770.170
Fixed
- CopyPage controlla le identità dei file prima di esportare, rifiuta gli alias di output in conflitto e tiene gli output con nome automatico accanto agli input senza estensione nelle directory che contengono punti
Version 2.770.169
Fixed
- I valori dei job JSON conservano i caratteri null escapati, serializzano i numeri finiti fuori dall'intervallo con segno a 64 bit senza overflow di interi e restituiscono i valori predefiniti per i parametri interi fuori intervallo senza cambiare il locale del processo
Version 2.770.168
Fixed
- Il ripristino del parser a oggetti semplici termina sulle parentesi chiuse spurie nei corpi di array senza parentesi e conserva i numeri validi e le chiavi di dizionario immediatamente successive ai delimitatori malformati
Version 2.770.167
Fixed
- HotPDFCLI rifiuta i percorsi di output che aliasano i file di input e controlla tutti i percorsi generati prima di avviare l'esportazione in batch, impedendo ai comandi di troncare o sostituire i propri dati sorgente
Version 2.770.166
Fixed
- L'esempio ExtractText protegge il proprio PDF di input quando un output usa una giunzione di directory o un hard link, e LoadedImageExport riporta fallimento per i documenti illeggibili o le esportazioni di pagina incomplete
Version 2.770.165
Fixed
- Le letture dirette dei file invalidano i rimpiazzi incompleti della cache dopo un fallimento di I/O e delimitano in sicurezza gli intervalli di read-ahead vicino al limite di offset con segno a 64 bit
Version 2.770.164
Fixed
- La decodifica RunLength alloca solo la dimensione del payload decodificato e valida le run malformate prima di allocare l'output, evitando prenotazioni di memoria eccessive per gli stream con terminatori anticipati
Version 2.770.163
Fixed
- Gli esempi Delphi e C++Builder reperiscono le immagini, i metafile, i profili colore e le fixture di firma opzionali incorporati sia dalle cartelle di progetto sia dalle directory di output di build annidate
Version 2.770.162
Fixed
- Gli esempi HugeFileBenchmark rifiutano i percorsi dei PDF generati che coincidono con qualunque documento di input prima di avviare un batch di benchmark
- L'esempio C++Builder conserva le sottodirectory relative di input per i PDF generati, impedendo che input ricorsivi con lo stesso nome condividano un file di output
- Le operazioni fallite, le violazioni del limite di memoria e i caricamenti non validi a zero pagine ora producono un codice di uscita diverso da zero conservando il report di benchmark
Version 2.770.161
Fixed
- Le Preflight CLI Delphi e C++Builder rifiutano i percorsi di output di report e aggregati che coincidono con un PDF di input, impedendo ai report di sovrascrivere i documenti sorgente
Version 2.770.160
Fixed
- L'analisi ASN.1 rifiuta le codifiche high-tag-number che superano l'intervallo di tag a 32 bit supportato invece di accettare un numero di tag andato in wrap
Version 2.770.159
Fixed
- La Preflight CLI C++Builder conserva le sottodirectory relative per i report ricorsivi e i link della dashboard, così i PDF con lo stesso nome non si sovrascrivono più a vicenda
- Le dashboard Preflight Delphi e C++Builder codificano correttamente i link dei report per i caratteri speciali e i nomi di directory non ASCII
- I fallimenti di validazione standard C++Builder ora restituiscono il codice di uscita 3 e appaiono come non validi nella dashboard per ogni formato di report, compresi gli input che non riescono a caricarsi
Version 2.770.158
Fixed
- L'esempio di merge PDF C++Builder risolve i percorsi di input relativi dalla directory dell'eseguibile e impedisce alle finestre di dialogo dei file di cambiare la directory di lavoro
- Ogni bookmark generato punta ora alla prima pagina copiata dal proprio documento di input
Version 2.770.157
Fixed
- Il parser degli oggetti normalizza a LF le terminazioni di riga CR e CRLF non escapate dentro le stringhe letterali PDF, conservando i ritorni a capo escapati e le continuazioni di riga
Version 2.770.156
Fixed
- La compressione stream LZW riporta il numero effettivo di byte scritti per un input vuoto
- Compressione e decompressione LZW fanno correttamente il round-trip con InitialCodeSize impostato a 2, e la compressione rifiuta i literal fuori da un alfabeto ridotto prima di scrivere l'output
Version 2.770.155
Fixed
- Nelle build Win64, importare dati di percorso SVG o XPS con un numero che ha un esponente vicino a 100, come 1e-100 o 5e99, non solleva più un overflow in virgola mobile quando l'applicazione smaschera le eccezioni in virgola mobile
- Tali numeri vengono ora letti col loro valore effettivo, così una mantissa lunga con un esponente negativo grande si importa correttamente
Version 2.770.154
Fixed
- DecodeLoadedPageBarcodes riporta ora limiti corretti dei barcode sulle pagine il cui CropBox differisce dal MediaBox quando non è impostata alcuna regione di decodifica; prima le posizioni erano spostate dell'offset del crop box, o scalate rispetto all'altezza di pagina sbagliata
- I riscontri volti di DetectLoadedRedactionFindings (con il rilevamento volti abilitato) cadono ora sui volti rilevati su tali pagine, invece di esserne spostati
- Entrambe le funzionalità renderizzano l'area visibile della pagina (il CropBox ritagliato sul MediaBox) e ora rimappano le posizioni rilevate attraverso quella stessa area; il page box passato a un IHPDFFaceDetector personalizzato corrisponde ora alla bitmap che riceve
- La decodifica dei barcode con una regione esplicita, e le pagine senza CropBox o il cui CropBox eguaglia il MediaBox, restano invariate
Version 2.770.153
Fixed
- ApplyLoadedOCRTextLayer piazza ora correttamente il livello di testo invisibile sulle pagine il cui CropBox differisce dal MediaBox; prima il testo ricercabile era spostato dell'offset del crop box, o scalato rispetto all'altezza di pagina sbagliata, così selezioni e risultati di ricerca non si allineavano con le parole visibili
- Il raster OCR viene renderizzato dall'area visibile della pagina (il CropBox ritagliato sul MediaBox), e le posizioni delle parole riconosciute vengono ora rimappate attraverso quella stessa area
- Il page box consegnato a un IHPDFOCREngine personalizzato in THPDFOCRRequest è ora l'area visibile renderizzata, coerente con la bitmap che riceve
- Le pagine senza CropBox, o il cui CropBox eguaglia il MediaBox, restano invariate
Version 2.770.152
Fixed
- GetLoadedInvoiceSummary restituisce ora il nome dell'acquirente (BT-44) come testo decodificato, così i nomi con lettere non ASCII come "Müller & Söhne" non tornano più come byte UTF-8 grezzi con l'escape XML ancora al suo posto
- Il nome dell'acquirente viene ora sempre letto dalla parte commerciale acquirente stessa, in linea col nome del venditore e con gli altri campi del riepilogo
- Ne beneficia anche ValidateVisualXmlConsistency: un nome acquirente con lettere accentate o caratteri escapati viene ora confrontato col testo visibile della pagina così com'è scritto
Version 2.770.151
Fixed
THPDFTableora tiene sulla stessa pagina le righe legate insieme da unRowSpan: quando il gruppo non entra nello spazio rimanente, l'intero gruppo passa alla pagina successiva insieme all'intestazione ripetuta- Una cella estesa su più righe non scorre più oltre il margine inferiore mentre le righe che copre continuano sulla pagina successiva
- Un gruppo row-span più alto di una pagina intera viene ancora spezzato riga per riga, con le celle estese tagliate al margine inferiore di ogni pagina
TotalHeightRenderedriflette il gruppo spostato sull'ultima pagina
Version 2.770.150
Fixed
- Le celle
THPDFTableconColSpanoRowSpandi zero o meno vengono ora disegnate come celle singole, come la griglia della tabella le aveva già piazzate, invece di spingere le celle seguenti nelle colonne sbagliate - Gli span negativi non fanno più leggere la tabella fuori dalla propria griglia, e gli span che superano l'ultima colonna o riga vengono tagliati al bordo della tabella anche in fase di misurazione e disegno
- Una cella la cui prima parola è più larga della colonna non inizia più con una riga vuota, così la sua riga non è più alta di quanto serva al testo andato a capo
Version 2.770.149
Security
- I moduli XFA che dichiarano un'entità interna nel proprio DOCTYPE non possono più far esplodere la memoria referenziando molte volte una grande entità: il testo sostituito alle entità interne è limitato a 16 MB per documento
- Un singolo valore di entità interna più lungo di 1 MB viene rifiutato
- I documenti che superano uno dei due limiti falliscono il caricamento con un
EHPDFXFAErrorinvece di espandersi in gigabyte di testo; l'uso ordinario delle entità non è toccato - Anche il testo che contiene molti riferimenti a entità o caratteri viene decodificato in tempo lineare
Version 2.770.148
Fixed
RecalculateLoadedFormFieldsIncrementaltratta ora ogni campo passato come modificato allo stesso modo, qualunque sia l'ordine in cui i nomi sono elencati- Un campo calcolato scritto direttamente insieme a uno dei suoi campi sorgente conserva il valore scritto invece di essere ricalcolato solo quando elencato dopo quella sorgente
- I campi che dipendono dai campi modificati vengono ancora ricalcolati una volta sola, in ordine di calcolo
Version 2.770.147
Fixed
- I barcode GS1-128 con start code A (
THPDFBarcodetipo 20) codificano ora i propri dati nel code set A, come fa il Code 128 A - Le lettere minuscole in tali barcode vengono ora scritte con uno SHIFT al code set B invece di una code word del set B che gli scanner leggono come carattere di controllo nel set A
- I simboli GS1-128 A scansionati che contengono testo minuscolo restituiscono quindi il testo originale
Version 2.770.146
Fixed
- I barcode add-on EAN-2 ed EAN-5 (
THPDFBarcodetipi 18 e 19) non accodano più una cifra calcolata aTextquandoChecksumè abilitato - Disegnare ripetutamente un simile barcode ora produce lo stesso simbolo ogni volta invece di far crescere il testo di una cifra per ogni ridisegno e cambiare il pattern delle barre
- I simboli add-on per definizione non portano alcun carattere di controllo, così
Checksumviene ignorato per essi; il pattern di parità è ancora derivato dal valore come prima
Version 2.770.145
Fixed
- L'esportazione XFDF decodifica ora i valori dei campi modulo e il testo delle annotazioni come stringhe di testo PDF (ISO 32000-1 7.9.2.2): i valori UTF-16BE, le stringhe esadecimali e i caratteri PDFDocEncoding come il bullet vengono scritti come testo Unicode effettivo invece che come cifre esadecimali o caratteri spurii della code page
- Contenuti, autore, oggetto, stato e testo overlay delle annotazioni esportati in XFDF conservano i caratteri non latini, per esempio commenti in cinese o cirillico
- Il rich text (
/RC,/RV) che inizia con una dichiarazione XML viene ora incorporato senza di essa, così l'XFDF esportato resta XML ben formato - L'importazione XFDF non converte più il testo attraverso la code page ANSI di sistema: i valori che PDFDocEncoding può rappresentare vengono memorizzati come tali, tutto il resto come stringa di testo UTF-16BE, sia per i campi modulo sia per il testo delle annotazioni
- I file XFDF esportati ora fanno fare il round-trip ai caratteri fuori dalla code page ANSI attraverso
ImportLoadedFormFromXFDFeImportLoadedAnnotationsFromXFDFsenza trasformarli in punti interrogativi
Version 2.770.144
Fixed
- I nomi e il resto del testo nel riepilogo fattura vengono ora decodificati dall'XML UTF-8 della fattura, così un venditore come "Müller GmbH" non torna più come caratteri multi-byte illeggibili
- I caratteri di markup escapati e i riferimenti a caratteri vengono risolti, così "A & B" nell'XML viene riportato come "A & B"
ValidateVisualXmlConsistencynon riporta più un nome venditore con lettere accentate o una e commerciale come assente dal testo visibile della pagina quando lì è stampato- Il testo del riepilogo viene restituito nella code page ANSI di sistema, poiché i campi del record di riepilogo sono stringhe ANSI; i caratteri che quella code page non può rappresentare diventano punti interrogativi
Version 2.770.143
Fixed
GetLoadedInvoiceSummaryriporta ora il totale netto a livello fattura (BT-106) dalla somma monetaria dell'intestazione invece che dall'importo della prima voce di riga- Totale imposta, totale generale e importo dovuto vengono letti allo stesso modo dalla somma dell'intestazione, comprese le fatture ZUGFeRD 1.0
- La data di emissione (BT-2) viene ora restituita come puro valore di data, per esempio
20260305, invece di includere il markup annidatoDateTimeString HPDFFacturXXMLElementTextrestituisce ora i dati carattere dell'intero elemento senza i tag figli, e non fa più match con elementi il cui nome si limita a iniziare con il nome richiesto
Version 2.770.142
Fixed
- L'esportazione XFDF scrive ora i caratteri fuori dal Basic Multilingual Plane, come emoji o ideogrammi CJK rari, come UTF-8 a quattro byte valido invece di codificare separatamente ogni metà surrogata, così i lettori XML severi accettano il file
- L'importazione XFDF decodifica ora i riferimenti a caratteri sopra U+FFFF, come
😀, al carattere completo invece di troncarlo a un carattere BMP non correlato - I riferimenti a caratteri che non nominano uno scalar value Unicode, e i surrogati non abbinati in esportazione, diventano ora U+FFFD invece di corrompere il testo
- I file XFDF scritti dalle versioni precedenti si importano ancora correttamente
Version 2.770.141
Fixed
- I valori dei campi e il testo delle annotazioni che contengono backslash, come percorsi Windows tipo
C:\Data\2024\001, ora sopravvivono immutati a un'esportazione e a un'importazione XFDF invece di vedere sequenze di cifre trasformate in caratteri di controllo - Quando un backslash verrebbe altrimenti riletto come escape, l'esportazione XFDF lo scrive ora come escape ottale
\134, come in una stringa letterale PDF (ISO 19444-1 5.8.2) - L'importazione XFDF decodifica solo gli escape ottali che il formato usa per caratteri di controllo e backslash; le altre sequenze di backslash nei file di terze parti restano letterali
- Anche il testo SVG letto attraverso lo stesso lettore XML leggero non perde più le sequenze di backslash
Version 2.770.140
Fixed
- La cache persistente delle pagine renderizzate abilitata da RenderCacheFolder ora funziona per i documenti aperti con LoadFromFile, LoadFromStream e LoadFromRandomAccessSource; prima il livello disco veniva saltato per i caricamenti ordinari, così nessuna pagina veniva mai scritta o letta dalla cartella
- I documenti caricati da un file vengono identificati per dimensione, ora di ultima scrittura e byte iniziali e finali, così riaprire un file invariato legge le sue pagine dalla cache senza calcolare l'hash dell'intero file
- I documenti caricati da uno stream o da una sorgente ad accesso casuale vengono identificati dallo SHA-256 del loro contenuto; impostate RenderCacheFolder prima del caricamento perché questi documenti usino il livello disco
- Un documento modificato dopo il caricamento non legge né scrive più voci su disco per il resto di quel caricamento, così le pagine modificate non vengono mai servite da, né memorizzate come, le pagine in cache del file originale
- Le voci su disco ora dipendono anche dal backend di rendering delle pagine e dal workflow di prova ICC, così un backend o un profilo di output diverso non riusa pagine renderizzate con altre impostazioni; i documenti cifrati non vengono mai scritti nella cache su disco
Version 2.770.139
Fixed
- L'importazione di file XFDF grandi non rallenta più col quadrato della dimensione del file: un file con migliaia di campi o annotazioni ora si analizza in millisecondi invece che in secondi o minuti
- I valori dei campi con molte interruzioni di riga o altri riferimenti a caratteri vengono decodificati in tempo lineare
- Il picco di memoria durante l'analisi XFDF non cresce più col numero di elementi moltiplicato per la dimensione del file
- L'input SVG letto attraverso lo stesso lettore XML leggero beneficia della stessa accelerazione
Version 2.770.138
Fixed
- Quando
DecodeLoadedPageBarcodesritenta una pagina ruotata di 90 o 270 gradi, il raster consegnato al decoder viene ora ruotato in senso orario, come documentaAttemptRotationDegrees - I simboli trovati solo in quei tentativi vengono ora riportati alla loro posizione reale sulla pagina invece che alla posizione speculare per punti
- L'orientamento riportato per tali simboli corrisponde ora alla loro direzione di lettura sulla pagina invece di essere sbagliato di 180 gradi
- I decoder di barcode personalizzati che si affidano alla rotazione oraria documentata ricevono ora raster ruotati correttamente
Version 2.770.137
Fixed
- Copiare pagine tra documenti (CopyPageFromDocument, CopyPageByPhysicalIndex, metodi di importazione e merge di pagine) non trasforma più in dizionari o array le stringhe di testo che contengono "<<" e ">>" o "[" e "]"; un commento di annotazione come "Read <<this>> [now]" veniva copiato come dizionario rotto
- Le stringhe esadecimali, come nomi e identificatori di annotazioni, vengono copiate in forma esadecimale invece di essere scritte come stringhe letterali delle proprie cifre esadecimali
Version 2.770.136
Fixed
- Le annotazioni create su nuove pagine (AddStampAnnotation, AddTextAnnotation e gli altri metodi di annotazione di THPDFPage) scrivono ora /Rect con l'angolo inferiore sinistro per primo, [llx lly urx ury]; diversi di essi scrivevano il bordo superiore prima di quello inferiore, per esempio [395 712 575 652], che i viewer accettano ma i validatori PDF/A e alcuni strumenti di elaborazione rifiutano o leggono male
Version 2.770.135
Changed
- THotPDF.RenderCacheFolder è ora una stringa (UnicodeString in Delphi 2009 e successivi, UnicodeString in C++Builder) invece di un AnsiString, così una cartella cache il cui percorso contiene caratteri fuori dalla code page di sistema, come un nome utente cinese su un Windows inglese, viene usata così com'è invece di trasformarsi in punti interrogativi
- Il codice che assegna un AnsiString alla proprietà continua a compilare; il valore viene convertito in Unicode all'assegnazione
Version 2.770.134
Fixed
- SetOptionalContentGroupUsage con la categoria Zoom scrive ora l'intervallo di zoom come i numeri /min e /max, come li definisce la specifica PDF; l'intero valore veniva scritto come stringa di testo sotto /Min, che i viewer ignorano, così l'intervallo di zoom del livello non aveva alcun effetto
- Il valore Zoom è l'ingrandimento minimo opzionalmente seguito dal massimo, separati da uno spazio (per esempio '0.5 4'); un valore che non inizia con un numero ora solleva un'eccezione
Version 2.770.133
Fixed
- Il subsetting dei font CFF/OpenType incorporati non scarta più le subroutine che i glifi usano ancora; i glifi con più di otto hint, hint hstemhm o counter mask venivano analizzati male, così una subroutine in uso poteva essere sostituita da una vuota e il glifo renderizzato con contorni mancanti o rotti
Version 2.770.132
Fixed
- RegisterNChannelColorSpace (l'overload con le definizioni di coloranti spot) scrive ora correttamente come chiavi dei dizionari /Colorants, /Solidities e /DotGain i nomi di coloranti che contengono spazi o delimitatori, come "PANTONE 185 C"; il nome grezzo rompeva la sintassi del file
- AddPDFX6ExternalOutputIntentSpotData scrive alla stessa maniera le proprie chiavi di coloranti dei dati di solidità e spettrali
Version 2.770.131
Fixed
- I metadati XMP scritti con EnableXMPMetadata portano ora Title, Author, Subject e Keywords come UTF-8 valido quando contengono testo nella code page di sistema (per esempio caratteri accentati o cinesi assegnati come AnsiString); i byte grezzi della code page rendevano il pacchetto XML non valido, e validatori PDF/A e lettori XMP lo rifiutano
- I caratteri di controllo che XML 1.0 non consente sono lasciati fuori da questi valori XMP
Version 2.770.130
Fixed
- Le immagini JBIG2 scritte con JBIG2Options.AccumulateGlobalsAcrossPages si decodificano di nuovo correttamente quando una pagina successiva aggiunge simboli che le pagine precedenti non usavano; tali pagine continuavano a referenziare lo stream globals della prima pagina, che non contiene i nuovi simboli, così i viewer le mostravano corrotte o non le mostravano affatto
- Ogni volta che una pagina aggiunge simboli, viene scritto uno stream globals che contiene l'intero dizionario fino a quella pagina e da lì in poi viene usato quello; le pagine che non aggiungono simboli continuano a condividere l'ultimo
Version 2.770.129
Fixed
- Salvare un documento caricato i cui oggetti hanno un numero di generazione diverso da 0 scrive ora numeri di oggetto coerenti: una riscrittura completa (SaveLoadedDocument e metodi correlati) scrive ogni oggetto, riferimento e voce della cross-reference con generazione 0, mentre in precedenza le intestazioni degli oggetti e il trailer conservavano la vecchia generazione e i riferimenti e la tabella cross-reference usavano 0
- Gli aggiornamenti incrementali (SaveIncrementalUpdate e metodi correlati) referenziano ora gli oggetti esistenti col loro numero di generazione reale; i riferimenti venivano sempre scritti con generazione 0 e puntavano quindi a oggetti che non esistono quando l'originale usava un'altra generazione
Version 2.770.128
Fixed
- THPDFPage.TextOutHTML con un MaxWidth non perde più la formattazione a un a capo di riga: quando più run con stili diversi passavano insieme alla riga successiva, venivano fusi in un solo run disegnato con lo stile in vigore all'a capo, così colore, grassetto o corsivo, font, corpo, offset apice/pedice e link andavano perduti. Ora ogni run conserva la propria formattazione sulla nuova riga
Version 2.770.127
Fixed
- InvalidateRenderedPageCache ora scarta anche le voci di glifi Type 3 e di halftone condivise dal rendering parallelo; dopo un'invalidazione dell'intero documento il successivo rendering parallelo poteva riusare glifi messi in cache per il contenuto precedente
- PreflightLoadedPAdES non svuota più la cache di rendering condivisa come effetto collaterale del controllo del livello PAdES di una firma, così i render dopo un preflight conservano i propri glifi in cache
Version 2.770.126
Fixed
- L'analisi di revisione e modifica dei documenti firmati riporta ora correttamente i nomi dei campi quando il nome contiene parentesi o termina con una, per esempio "Total (net)"; l'ultimo carattere veniva tagliato via
- Vengono decodificati anche i nomi dei campi scritti con escape ottali o con una continuazione di riga a backslash
Version 2.770.125
Fixed
- SplitPDFToFiles non apre più ogni file di output nel visualizzatore PDF predefinito quando lo scrive; i documenti interni che crea ora hanno AutoLaunch disattivato
Version 2.770.124
Fixed
- GetLoadedTrailerID restituisce ora l'identificatore permanente del file del documento dall'array /ID del trailer, come testo esadecimale; cercava /ID nel catalogo del documento, dove non si trova mai, e così non riportava alcun identificatore per praticamente ogni file
Version 2.770.123
Fixed
- SetLoadedOpenActionPage scrive ora una destinazione che nomina la pagina richiesta; il riferimento alla pagina veniva scritto come 0 0 R, così i viewer non potevano aprire il documento a quella pagina
- La destinazione conserva la posizione di vista corrente (left e top nulli) invece di forzare 0 0, che saltava all'angolo inferiore sinistro della pagina
Version 2.770.122
Fixed
- SetLoadedViewerPreferences scrive ora HideToolbar, HideMenubar, FitWindow e DisplayDocTitle come valori booleani; venivano scritti come i nomi /true e /false, che i viewer non trattano come booleani, così le preferenze non avevano effetto
Version 2.770.121
Fixed
- CheckLoadedSignatureSeedValue ora impone il valore seed /Reasons di un campo firma quando i flag /Ff del campo lo marcano come obbligatorio (bit 4, valore 8); una ragione non elencata prima passava
- Le ragioni vengono confrontate esattamente, com'è per le stringhe di testo in PDF; "approved" non soddisfa più un valore seed che elenca "Approved"
Version 2.770.120
Fixed
- Timbrare una pagina caricata più di una volta con StampLoadedPageText o StampLoadedPageShape dà ora a ogni timbro la propria opacità, e a ogni timbro di testo il proprio font standard; il secondo e i timbri successivi riusavano la trasparenza e il font del primo timbro sulla pagina
- Un timbro con la stessa opacità e lo stesso font di uno precedente condivide ancora le risorse, così i timbri identici ripetuti non fanno crescere le risorse della pagina
Version 2.770.119
Fixed
- ExtractLoadedPageStructureText segue ora gli elementi di struttura la cui voce /K è un semplice numero di marked-content (per esempio /K 3 o /K [0 1]), la forma più comune nei PDF taggati; tali elementi venivano ignorati, così il metodo non riportava alcun ordine di struttura per molti documenti taggati o restituiva il loro testo in ordine di disegno
- Il metodo non legge più una voce di catalogo non valida quando un documento non ha un oggetto radice utilizzabile
Version 2.770.118
Fixed
- StampLoadedPageText, StampLoadedPageImage, StampLoadedPageShape, StitchLoadedPage e FlattenLoadedAnnotations non rompono più le pagine che ereditano le risorse dal nodo /Pages genitore; davano a tale pagina un nuovo dizionario /Resources vuoto, che nascondeva font e immagini ereditati, così il testo e le figure originali della pagina non venivano più mostrati
- La pagina riceve ora la propria copia delle risorse ereditate prima che il nuovo font, l'immagine o il form vengano aggiunti
Version 2.770.117
Fixed
- ComposeLoadedPagesNUp, ImposeLoadedPagesNUp, ImposeLoadedPagesBooklet e i metodi di stitching delle pagine riportano ora con sé le risorse che una pagina sorgente eredita dal proprio nodo /Pages genitore; tali pagine venivano piazzate senza i propri font e immagini, così il loro testo e le loro figure risultavano mancanti o sbagliati sul foglio composto
Version 2.770.116
Fixed
- SaveIncrementalUpdateAuthenticated ora può riscrivere nel file da cui l'aggiornamento incrementale era stato avviato; l'aggiornamento accettato non poteva sostituire il target perché il documento teneva ancora aperta la sorgente, e la chiamata falliva sempre con un errore di commit access-denied
- Come con un SaveIncrementalUpdate in place, la sorgente viene rilasciata prima della sostituzione, riaperta se la sostituzione fallisce, e BeginIncrementalUpdate deve essere richiamato prima di un altro salvataggio incrementale
Version 2.770.115
Fixed
- RepairPDFUA2Structure non impiega più tempo esponenziale sugli alberi di struttura i cui elementi sono elencati da più di un genitore (o formano un ciclo); la riparazione dell'ereditarietà della lingua, della ordine dei titoli e la scansione marked-content alla base della riparazione del testo alternativo percorrono ora ogni elemento di struttura una volta sola. Un albero costruito ad hoc di 24 elementi in cui ognuno elencava due volte il successivo prima richiedeva circa 40 secondi
Version 2.770.114
Fixed
- HPDFPaginateTable non aggiunge più pagine finché la memoria non si esaurisce quando una riga non divisibile non entra sotto le righe di intestazione ripetute; su una pagina che contiene solo intestazioni ripetute la riga viene ora divisa (o, quando le intestazioni riempiono la pagina, piazzata e lasciata traboccare)
- HPDFLayoutFootnotes e HPDFLayoutEndnotes non vanno più in loop all'infinito quando il separatore non lascia spazio su una pagina o l'altezza minima di frammento di una nota non può essere soddisfatta su una pagina vuota; la nota viene invece piazzata su quella pagina
Version 2.770.113
Fixed
- HPDFBalanceColumns non si blocca più quando un elemento divisibile ha una riga più alta dell'altezza della colonna; passava alla colonna successiva all'infinito. Una simile riga viene ora piazzata da sola in cima a una colonna vuota, traboccandola, e il layout continua
Version 2.770.112
Fixed
- I documenti cifrati con lo standard security handler revisione 4 (filtri crittografici RC4 o AES-128) si aprono di nuovo quando il loro dizionario di cifratura omette la voce /Length opzionale di primo livello; il caricamento falliva con "Unsupported legacy Standard security handler V=4 R=4 Length=40"
- Per tali documenti viene accettato qualunque valore /Length di primo livello, poiché la chiave del file è sempre a 128 bit
Version 2.770.111
Fixed
- ProcessObjectStreamsForDecompression e ExtractRawObjectFromStream non si fidano più del conteggio /N dichiarato di un object stream: un conteggio sopra i dieci milioni viene rifiutato e il conteggio viene limitato alle coppie numero-oggetto che l'intestazione dello stream può effettivamente contenere, così un file artefatto non può più farli allocare o percorrere milioni di voci vuote
Version 2.770.110
Fixed
- La Direct File API (DADirectEncryptFileAES256, DADirectDecryptFileAES256 e metodi correlati) legge ora /Root, /Info, /Encrypt, /Prev e /XRefStm di una sezione cross-reference classica solo dal dizionario trailer di quella stessa sezione; sui file aggiornati incrementalmente poteva raccogliere un /Prev dagli oggetti (per esempio una voce di outline) o dal trailer di una revisione successiva e fallire o leggere la revisione sbagliata
- Una catena di /Prev che torna a una sezione già letta ora si ferma invece di rileggere le stesse sezioni
Version 2.770.109
Security
- ApplyLoadedRedactions rimuove ora il testo sotto un'area di oscuramento sulle pagine il cui contenuto è spezzato su più stream; quando uno stream finiva con un operatore e il successivo iniziava con uno (per esempio ET seguito da BT), il testo dopo la giunzione veniva associato agli operandi sbagliati e restava leggibile nel file salvato benché l'area fosse stata coperta
- Gli stream di contenuto senza dati vengono saltati in modo consistente, così gli stream rimanenti si allineano col testo che era stato individuato sulla pagina
Version 2.770.108
Changed
- GetLoadedOCGCount, GetLoadedOCGName, GetLoadedOCGVisibility e SetLoadedOCGVisibility ora usano tutti lo stesso indice: la posizione del gruppo di contenuto opzionale nell'array /OCGs di /OCProperties del documento. Count e nome usavano la posizione nell'array /ON della configurazione predefinita, la visibilità usava la posizione in /OFF e il setter usava /OCGs, così un solo indice poteva nominare tre gruppi diversi; i documenti senza /OCGs ricadono comunque sull'array /ON
- GetLoadedOCGVisibility riporta ora un gruppo come nascosto quando è elencato in /OFF, o quando non è in nessuno dei due array e il /BaseState della configurazione predefinita è /OFF
Fixed
- SetLoadedOCGVisibility non mette più lo stesso oggetto di riferimento sia in /OCGs sia in /ON o /OFF (veniva liberato due volte quando il documento veniva liberato) e non fa più perdere le voci che rimuove
Version 2.770.107
Fixed
- CopyLoadedPage non fa più condividere ai dizionari delle pagine sorgente e destinazione gli stessi oggetti voce /Contents e /Resources; gli oggetti condivisi venivano liberati due volte quando il documento veniva liberato o la voce destinazione veniva sostituita, il che poteva corrompere la memoria
- La pagina destinazione riceve ora il proprio riferimento al contenuto e alle risorse sorgente (i valori diretti vengono copiati), e la sua voce nella cache delle pagine renderizzate viene aggiornata
Version 2.770.106
Fixed
- Caricare un PDF danneggiato non perde più memoria per ogni oggetto stream illeggibile, per esempio uno stream senza né voce /Length né parola chiave endstream, o il cui dizionario o dati non si possono caricare; aprire ripetutamente tali file faceva crescere il processo senza limiti
Version 2.770.105
Fixed
- I numeri scritti con una parte frazionaria vuota come "21." (consentiti dalla specifica PDF) non fanno più fallire il caricamento; una voce /Length di stream indiretto scritta in tal modo prima faceva perdere l'intero stream, lasciando la pagina bianca
- Vengono letti correttamente anche i numeri con un segno più iniziale, con una parte intera vuota come ".5", o con una parte intera oltre l'intervallo a 32 bit
Version 2.770.104
Fixed
- Demo PDFmerge: con i segnalibri abilitati, ogni segnalibro per sorgente apre ora la prima pagina unita di quella sorgente; prima ogni segnalibro puntava alla prima pagina del file unito
- Demo PDFmerge: le sorgenti di esempio e il nome di output predefiniti, e qualunque nome relativo digitato nella maschera, si risolvono rispetto alla cartella della demo; aggiungere file o scegliere l'output in una finestra di dialogo non cambia più la directory corrente e non rompe più le voci relative
Version 2.770.103
Fixed
- Demo TextOut: il
TextOut.pdfgenerato ora usa davvero stream di contenuto compressi, come promettono i commenti della demo; impostaCompressionacmFlateDecodeinvece di affidarsi all'argomentoBeginDoc, che non controlla la compressione
Version 2.770.102
Fixed
- Le immagini disegnate con
AlphaBlendin un metafile esteso conservano ora la propria opacità registrata quando il metafile viene convertito conTHPDFEmfPatcher.RenderEmfDirect; venivano fuse con opacità zero e sparivano - Anche il formato alpha registrato viene rispettato, così le immagini senza canale alpha vengono fuse con la propria opacità costante invece di fallire
- I record bitmap la cui intestazione o i cui dati pixel puntano fuori dal record, o i cui dati pixel sono più corti della bitmap dichiarata, vengono ora saltati invece di essere letti oltre il record
- Le bitmap più grandi di 32768 pixel per lato o 64 megapixel in totale vengono saltate invece di essere allocate per intero
Version 2.770.101
Fixed
- StitchLoadedPage, StitchLoadedPageSideBySide e StitchLoadedPageSideBySideEx disegnano ora la pagina sorgente attraverso un Form XObject che porta contenuto, page box e risorse della pagina; il dizionario della pagina stesso veniva registrato come XObject, che i viewer non sanno dipingere, così la pagina cucita non compariva
- Cucire più di una pagina sulla stessa destinazione conserva ogni pagina cucita: ognuna riceve il proprio nome XObject invece di condividere tutte lo stesso nome, che sostituiva la pagina precedente
Version 2.770.100
Fixed
- I Form XObject vengono ora ritagliati al proprio
/BBoxquando renderizzati, come richiede ISO 32000-1; il contenuto che un form disegna fuori dal proprio bounding box non compare più sulla pagina - I Form XObject annidati oltre quattro livelli di profondità vengono ora disegnati; prima venivano scartati come se ricorressero. L'annidamento è consentito fino a 32 livelli
- Un form XObject che disegna se stesso, direttamente o attraverso altri form, viene rilevato e la chiamata ripetuta viene saltata, con una voce di ricorsione nelle diagnostiche di rendering
Version 2.770.99
Fixed
- Demo PDFOptimize: la fila di piccoli rettangoli su ogni pagina di testo viene ora tracciata (stroke), così le barre sono visibili e lo stream di contenuto termina ogni percorso con un operatore di disegno come richiede ISO 32000-1 8.5.2; le dimensioni riportate del PDF di testo cambiano leggermente di conseguenza
Version 2.770.98
Fixed
- Le stringhe letterali che contengono parentesi bilanciate senza backslash, come /Title (Report (draft) v2), vengono ora lette per intero quando un documento viene caricato; la stringa prima terminava alla prima parentesi chiusa e il resto del dizionario veniva letto male
- Le parentesi escapate continuano a funzionare come prima
Version 2.770.97
Fixed
- Il caricamento non scambia più un oggetto dizionario per uno stream quando uno dei suoi valori stringa o nome contiene le lettere "stream" a fine riga, come un dizionario Info con /Title (Livestream); l'oggetto veniva letto come stream e le sue voci andavano perse
- La parola chiave stream viene ora riconosciuta solo come token a sé stante dopo la chiusura >> del dizionario e a fine riga, come la specifica PDF definisce gli stream object
Version 2.770.96
Fixed
- Demo Stamp: i file PNG e BMP proposti dal selettore immagini ora possono essere usati come timbro immagine; prima funzionava solo JPEG e gli altri file fallivano con un errore di bitmap non valida
- Demo Stamp: l'annotazione timbro di gomma viene piazzata nell'area in alto a destra di ogni pagina come previsto, sotto un timbro immagine nell'angolo superiore, invece che nell'angolo inferiore destro dove sovrapponeva un timbro immagine in basso a destra
- Demo Stamp: i percorsi predefiniti di input, output e immagine si risolvono rispetto alla cartella della demo, e scegliere un file in una finestra di dialogo non cambia più la directory corrente, così i nomi relativi continuano a puntare agli stessi file
Version 2.770.95
Fixed
- Le richieste di timestamp costruite con un OID di policy (HPDFRFC3161BuildRequest, e firma con una policy di time stamp authority) codificano ora la policy richiesta come il semplice object identifier che RFC 3161 specifica
- La policy prima veniva incapsulata in un context tag che RFC 3161 riserva alle estensioni della richiesta, così una time stamp authority rigorosa rifiutava la richiesta o ignorava la policy
- Le richieste senza OID di policy restano invariate
Version 2.770.94
Fixed
- Demo ViewerPref: lasciare Initial Zoom deselezionato ora significa davvero "None (Default)"; il PDF generato non si apre più adattato all'altezza, che era il predefinito del componente che la demo non azzerava
Version 2.770.93
Fixed
- Demo FileAttach: le annotazioni di allegato a livello pagina vengono ora create quando la demo gira da una cartella il cui nome contiene caratteri fuori dalla code page ANSI di sistema; il file allegato viene passato col suo semplice nome di file invece che con un percorso assoluto
Version 2.770.92
Fixed
- Demo HTMLText: un percorso di output che contiene caratteri fuori dalla code page ANSI di sistema (per esempio un nome di cartella greco o cirillico) viene ora scritto correttamente invece di fallire
- Demo HTMLText: il PDF generato non viene più aperto automaticamente in un lettore esterno, in linea con le altre demo console
Version 2.770.91
Fixed
- L'importazione di percorsi SVG e XPS non solleva più
EOverflowsu numeri con centinaia di cifre, o su numeri lunghi combinati con un esponente grande; tali valori vengono rifiutati come qualunque altro numero fuori intervallo - Interessa le immagini SVG piazzate attraverso le API di importazione SVG e la geometria dei percorsi XPS, sui compilatori le cui eccezioni in virgola mobile non sono mascherate
- I numeri ordinari, comprese le mantisse lunghe con esponenti negativi, vengono letti come prima
Version 2.770.90
Fixed
- Demo EmfDraw: una conversione fallita (per esempio un metafile di input mancante) ora termina con codice di uscita 1 invece che 0, così gli script e i passi di build che eseguono la demo rilevano il fallimento
Version 2.770.89
Fixed
- Demo CJKAnnotations: quando Arial Unicode MS non è installato, la demo ora ricade davvero su Microsoft YaHei; controlla i font installati invece di attendere un'eccezione che un font mancante non solleva mai, così il testo CJK non finisce più in un font sostituito senza copertura CJK
Version 2.770.88
Fixed
- Gli stream di contenuto che annidano più di 32 operatori
qnon perdono più lo stato grafico che li racchiude: i salvataggi più profondi venivano ignorati mentre il loroQcorrispondente ripristinava comunque, così testo e grafica dopo il blocco annidato usavano lo stato di prima di unqesterno - Interessa l'estrazione del testo attraverso l'interfaccia content device e l'esportazione SVG di tali pagine
- Gli stati salvati ora crescono con la profondità di annidamento; gli annidamenti molto profondi vengono comunque accoppiati correttamente
Version 2.770.87
Fixed
- ImageDemo: il bookmark "Image zoom" ora salta all'intestazione IMAGE ZOOM invece che a un punto vicino al fondo della prima pagina
Version 2.770.86
Security
- Aprire un PDF cifrato per un certificato destinatario con una chiave a curva ellittica (accordo di chiavi ECDH) ora ripulisce il segreto condiviso grezzo e i buffer intermedi di derivazione della chiave appena non servono più, anche nel ritento con l'ordine dei byte alternativo e su ogni percorso di fallimento precoce
- Firmare con un certificato dall'archivio certificati di Windows non lascia più crypt32.dll e advapi32.dll caricate quando una funzione CryptoAPI richiesta non può essere trovata
Version 2.770.85
Security
- Delineare un glifo Type 1 il cui charstring usa sbw con troppo pochi operandi non legge più prima dell'inizio della pila degli operandi; l'operatore malformato viene ignorato
- Un charstring Type 1 che termina con il byte di escape di un operatore a due byte non legge più oltre la fine del charstring
Version 2.770.84
Fixed
- La lunghezza in byte dei codici carattere in un intervallo di codespace CMap ora deriva dalla lunghezza delle sue stringhe esadecimali, come specifica ISO 32000-1 9.7.6.2; un intervallo come <0000> <00FF> veniva trattato come a un byte perché il suo limite superiore sta in un byte, il che spezzava i codici a due byte durante il rendering e l'estrazione del testo
- Anche gli intervalli di codespace caricati dalle CMap incorporate portano la loro lunghezza di codice
Version 2.770.83
Fixed
- Incorporare un sottoinsieme di un font TrueType installato conserva ogni componente dei glifi compositi (lettere accentate e simili) le cui componenti portano una scala o una trasformazione 2x2; la componente dopo una simile trasformazione veniva mal letta, così poteva sparire dal sottoinsieme o vedere il proprio riferimento al glifo scritto sopra i byte della trasformazione
- I glifi compositi le cui componenti si referenziano a vicenda in un ciclo, si referenziano oltre il conteggio dei glifi del font o puntano a un glifo vuoto non provocano più crash o blocchi del subsetting dei font
- In un sottoinsieme, un glifo composito annidato dentro un altro composito vede i propri riferimenti alle componenti rinumerati una volta invece di due
Version 2.770.82
Fixed
- I numeri reali nei dizionari dei font CFF (FontMatrix, FontBBox, valori blu e simili) vengono letti correttamente quando un byte contiene un segno, un punto decimale o un esponente accanto a una cifra; la cifra nello stesso byte veniva persa, così -2.25 diventava -0.5
- Questi valori vengono analizzati con un punto come separatore decimale a prescindere dalle impostazioni regionali di Windows; sui sistemi che usano la virgola decimale fallivano con un errore di conversione
Version 2.770.81
Fixed
- L'estrazione del testo e le ricerche ToUnicode non restituiscono più una stringa multi-carattere stantia per i codici in una voce array beginbfrange che segue un'altra voce array con destinazioni multi-carattere; simili codici ora mappano al loro singolo carattere
Version 2.770.80
Fixed
- Istaziare un font variabile TrueType a valori di asse scelti (per esempio attraverso SetVariableFontAxis) non distorce più i glifi i cui dati gvar hanno una tupla sparsa dopo un'altra tupla; la tupla sparsa partiva dai delta della tupla precedente e spostava quei punti due volte
- I punti che una tupla sparsa tralascia vengono ora interpolati solo dai punti che quella tupla elenca, come richiedono le regole gvar di OpenType
Version 2.770.79
Security
- AddTiffFromFile ora rifiuta una pagina TIFF la cui larghezza per altezza richiede un raster di più di 2 GB, sollevando un'eccezione invece di allocare un buffer la cui dimensione era andata in overflow circolare e lasciare che il decoder scrivesse oltre la sua fine (heap overflow)
- Una pagina TIFF con larghezza o altezza zero viene rifiutata allo stesso modo
- Le pagine TIFF alte (1200 righe o più) ora riportano un fallimento di allocazione invece di decodificare in un buffer nil
Version 2.770.78
Fixed
- I glifi dei font Type 3 ora seguono lo scaling orizzontale (
Tz): una sequenza disegnata al 200% di scala orizzontale viene disegnata il doppio più larga invece che alla sua larghezza naturale - I glifi dei font Type 3 ora seguono l'innalzamento del testo (
Ts), così apici e pedici impostati in font Type 3 vengono alzati o abbassati invece di restare sulla baseline - Gli avanzamenti dei glifi erano già scalati; le forme dei glifi ora si allineano con essi
Version 2.770.77
Fixed
- Le richieste di timestamp RFC 3161 costruite da HPDFRFC3161BuildRequest codificano sempre il nonce come un DER INTEGER minimale; quando il nonce casuale iniziava con un byte zero la richiesta portava uno zero iniziale ridondante, che i server di timestamp severi rifiutano come malformato
- Il nonce restituito conserva la lunghezza richiesta, così i chiamanti che lo confrontano con la risposta del timestamp non sono interessati
- I file PDF 2.0 cifrati (AES-256-GCM) i cui object stream si decifrano in contenuto vuoto non falliscono più il caricamento con un errore di autenticazione GCM; un object stream vuoto con un tag di autenticazione valido viene ora accettato, mentre un tag manomesso viene ancora rifiutato
Version 2.770.76
Fixed
- Demo Hyperlink: le didascalie dei link e gli URL che contengono caratteri fuori dalla code page ANSI di sistema (per esempio testo greco, cirillico o accentato) non vengono più trasformati in punti interrogativi; le didascalie vengono disegnate come testo Unicode con un link URI steso sopra
- Demo Hyperlink: i caratteri non ASCII in un URL vengono codificati in percentuale come UTF-8 prima di essere memorizzati nell'azione del link, così i lettori aprono l'indirizzo previsto
Version 2.770.75
Fixed
- I colori CalRGB con componenti fuori dall'intervallo 0..1 non sollevano più un'eccezione in virgola mobile (
EInvalidOp) durante il rendering; le componenti vengono tagliate al loro intervallo valido prima che venga applicata la gamma - Simili colori ora si renderizzano come il colore più vicino nell'intervallo invece di uno non definito sui compilatori le cui eccezioni in virgola mobile sono mascherate
Version 2.770.74
Fixed
- Le riscritture della Direct File API (per esempio DADirectEncryptFileAES256 e DADirectDecryptFileAES256) in esecuzione su più thread allo stesso tempo non corrompono più l'output l'una dell'altra; la copia di byte range che condividono usava un buffer a livello di processo
Version 2.770.73
Fixed
- La cache di revocation condivisa di THPDFSignatureValidationBatch ora trova le risposte OCSP per i certificati dei firmatari il cui numero di serie ha il bit più alto impostato; simili risposte venivano archiviate sotto un seriale senza il byte zero iniziale e cercate con esso, così ogni firma successiva mancava la cache
- Le risposte OCSP firmate da un responder delegato, o che identificano il responder per chiave, vengono ora archiviate sotto l'emittente del certificato e possono essere riutilizzate dalle firme successive nel batch; prima venivano archiviate sotto il nome del responder o per niente
- Le firme che si affidano a prove messe in cache da una firma precedente nello stesso batch ora raggiungono un verdetto di fiducia invece di uno stato di revocation sconosciuto in questi casi
Version 2.770.72
Fixed
- Cercare un file incorporato per nome (GetLoadedEmbeddedFileSpec, ExtractEmbeddedFileBytes, SaveLoadedEmbeddedFileToDisk e metodi correlati) non provoca più overflow dello stack quando l'albero di nomi /EmbeddedFiles del documento ha nodi che si elencano a vicenda o se stessi come /Kids
- Ogni nodo dell'albero di nomi viene cercato una volta, così i nomi raggiungibili attraverso un nodo condiviso vengono comunque trovati
Version 2.770.71
Fixed
- Demo PageSizes: le pagine dei formati cinesi 8K e 16K ora stampano la loro descrizione completa su ogni sistema; i nomi dei formati cinesi sono dati in pinyin perché le descrizioni vengono disegnate in Arial, che non ha glifi CJK, e il testo non ASCII diventava punti interrogativi sulle code page non CJK
Version 2.770.70
Fixed
- Gli shading assiali (Type 2) ora coprono l'intera area dipinta quando l'asse dello shading giace lontano da essa, per esempio un gradiente definito oltre il bordo della pagina con
/Extend [true true]; simili aree restavano non dipinte - Interessa l'operatore
she gli shading pattern usati come colore di fill o stroke
Version 2.770.69
Fixed
- Demo Navigation: le named destination
chapter-1echapter-2ora aprono le loro pagine in cima, 60 punti sotto il bordo superiore, invece di scorrere al fondo della pagina; le coordinate di destinazione sono nello user space predefinito di PDF con l'origine in basso a sinistra
Version 2.770.68
Fixed
- L'estrazione del testo da un PDF con un font TrueType incorporato non si blocca più per minuti quando la cmap del font è troncata ma dichiara migliaia di segmenti o gruppi; la lunghezza della tabella viene ora controllata prima che i segmenti e i gruppi vengano letti
- Costruire la mappa da glifo a Unicode per un font TrueType incorporato attraversa ogni subtable cmap una volta per segmento o gruppo invece di cercare tutti i 65.535 code point BMP uno per uno, il che accelera anche l'estrazione con font CJK grandi
- Le ricerche di glifi attraverso una subtable cmap format 4 o format 12 troncata si fermano alla fine dei dati del font invece di scansionare segmenti che non ci sono
Version 2.770.67
Fixed
- Le funzioni esponenziali (Type 2) e stitching (Type 3) ora rispettano un
/Domaina un solo ingresso come[0 0.5]; veniva ignorato e sostituito da[0 1], così gli ingressi venivano tagliati all'intervallo sbagliato - Una funzione esponenziale senza
/C1ora usa il predefinito[1.0]; i colori Separation e gli shading definiti in quel modo si renderizzavano neri - Le funzioni esponenziali ora valutano
C0 + x^N (C1 - C0)con l'ingresso stesso invece di riscalare nell'intervallo 0..1, in accordo con ISO 32000-1 per domini diversi da[0 1] - Le uscite delle funzioni esponenziali vengono tagliate al
/Rangesolo quando è presente; gli spot colour con uno spazio alternativo Lab (L* fino a 100) venivano tagliati a 0..1 e renderizzati quasi neri - Una funzione esponenziale il cui ingresso sta fuori dai valori per cui è definita viene rifiutata invece di sollevare un'eccezione in virgola mobile
Version 2.770.66
Fixed
- I file PKCS#12 / PFX esportati senza password da strumenti che derivano le loro chiavi da una password di lunghezza zero ora si aprono con una password vuota in HPDFParsePFX, HPDFParsePFXByLocalKeyID, HPDFEnumeratePFXIdentities e nei metodi di firma PFX; prima fallivano con un errore di autenticazione
- Con una password vuota la codifica standard di RFC 7292 viene provata per prima e la forma a lunghezza zero per seconda, sia per il controllo di integrità sia per la decifratura della chiave, così i file che già si aprivano continuano ad aprirsi allo stesso modo
Version 2.770.65
Fixed
- L'intestazione di pagina della demo DBTable di C++Builder ora legge "Page 1" invece di "Page1"
- Un errore mentre la demo DBTable di C++Builder scrive la sua tabella ora chiude il documento mezzo costruito, così il clic successivo parte da uno stato pulito
Version 2.770.64
Fixed
- Le demo console di C++Builder AnnotationInteraction, FormFields, CanvasDraw, EmfDraw, FormXObject, GraphicDraw, ImageDemo, ImageMask, LineGraphicsState e RtLTextOut passano alla cartella dell'eseguibile quando vengono avviate senza argomenti, come le demo Delphi, così i loro file di input vengono trovati e i loro PDF vengono scritti lì anche quando vengono eseguite da un'altra directory
- Le demo Graphic di C++Builder non inviano più un messaggio di chiusura a ogni finestra il cui titolo contiene il nome del loro PDF di output, il che poteva chiudere finestre non correlate
- La demo ImageMask di C++Builder ora funziona come la versione Delphi: controlla che Mask.bmp e Image.jpg esistano, comprime il proprio output, non apre un viewer e riporta gli errori invece di terminare con un'eccezione non gestita
- La demo EmfDraw di C++Builder riporta un errore, per esempio un Sample.emf mancante, e restituisce un codice di uscita diverso da zero invece di terminare con un'eccezione non gestita
- La demo AddDelPages di C++Builder risolve i nomi di file di input e output relativi rispetto alla cartella dell'eseguibile, come la versione Delphi
Version 2.770.63
Fixed
- La demo FileAttach di C++Builder scrive FileAttach.pdf accanto all'eseguibile, il nome che usano la versione Delphi e il readme, invece di Output.pdf nella directory di lavoro, e tiene il suo allegato FileAttach.txt nella stessa cartella
Version 2.770.62
Fixed
- La Direct File API (DADirectEncryptFileAES256, DADirectDecryptFileAES256 e gli altri metodi di riscrittura diretta) ora legge correttamente gli offset degli stream cross-reference oltre 2 GiB; simili offset venivano troncati e diventavano negativi, così gli oggetti nella parte alta di un file grande non potevano essere trovati
- Gli offset /Prev e /XRefStm oltre 2 GiB nel trailer o nello stream cross-reference vengono seguiti invece di essere letti come 0, così le revisioni più vecchie e le sezioni cross-reference ibride dei file grandi non vengono più saltate
- Lo stesso vale quando si carica un file grande e quando se ne ispezionano le revisioni
- I nuovi helper HPDFDirectReadUIntBE64 e HPDFFindNameInt64 restituiscono l'intero valore a 64 bit
Version 2.770.61
Fixed
- Uno stream cross-reference le cui larghezze dei campi /W sono negative o superiori a 8 byte viene ora rifiutato invece di essere decodificato; il caricamento ripiega sulla scansione del file in cerca dei suoi oggetti
- I metodi della Direct File API (per esempio DADirectEncryptFileAES256) non leggono più memoria fuori dalla tabella decodificata, e non possono più andare in crash, su un simile file; lo rifiutano invece
Version 2.770.60
Fixed
- Estrazione del testo, ricerca e posizioni dei glifi ora leggono correttamente l'operatore di testo
": il suo primo operando è la spaziatura delle parole e il secondo la spaziatura dei caratteri; i due erano invertiti - Le righe scritte con
"e una spaziatura parole o caratteri diversa da zero non riportano più posizioni dei glifi spostate, il che poteva fondere o spezzare parole nel testo di pagina estratto e dislocare i risultati di ricerca - Il rendering delle pagine non era interessato
Version 2.770.59
Fixed
- Demo Table: le righe coperte dal rowspan "Group A" ora mostrano il loro elemento e la loro nota nelle colonne Item e Notes; prima il testo della nota era spostato di una colonna e perduto
- Demo Table: il PDF generato non viene più aperto automaticamente in un reader esterno, in sintonia con le altre demo console, e i percorsi di output fuori dalla code page ANSI di sistema restano intatti
Version 2.770.58
Fixed
- Decomprimere dati Flate in uno stream non fa più perdere lo stato del decoder (circa 40 KB ogni volta) quando lo stream sorgente o destinazione solleva un'eccezione a metà strada, per esempio quando una scrittura fallisce o uno stream raggiunge il proprio limite di dimensione
- Comprimere una stringa non fa più perdere il suo buffer temporaneo se la compressione solleva un'eccezione
- Compressione e decompressione riuscite si comportano esattamente come prima
Version 2.770.57
Fixed
- I certificati la cui estensione di name constraints non è contrassegnata come critical non vengono più rifiutati come illeggibili durante la validazione del certificato di firma; un certificato di CA di quel tipo faceva sì che ogni catena che lo attraversava fallisse la costruzione
- I vincoli di un simile certificato vengono ora applicati al resto della catena come quelli critical, così i nomi dei firmatari fuori dai subtree permessi vengono ancora riportati come violazione di name constraint
Version 2.770.56
Fixed
- Le funzioni calcolatore PostScript (Type 4) con procedure
ifoifelseprofondamente annidate non provocano più overflow dello stack durante il rendering; una simile funzione viene trattata come inutilizzabile e il colore ripiega come per qualsiasi altra funzione non valida - L'annidamento è limitato a 64 livelli, ben oltre ciò che usano i veri programmi calcolatore; le ordinarie tint transform Type 4 e gli shading si renderizzano come prima
- Valutare le funzioni calcolatore richiede meno stack per livello di annidamento
Version 2.770.55
Fixed
- Demo E-Invoice: l'XML Factur-X / ZUGFeRD estratto viene decodificato come UTF-8, così i caratteri accentati e altri non ASCII nei nomi e negli indirizzi non appaiono più alterati nel pannello XML
- Demo E-Invoice: su Delphi XE2 e successivi il verdetto combinato della fattura elettronica ora decide il passo delle regole di business, così un fallimento del file di regole o del motore fa fallire la validazione invece di passare silenziosamente
- Demo E-Invoice: una discrepanza tra testo visibile e XML rilevata dal controllo euristico di coerenza viene riportata come avviso e non fa più fallire da sola la validazione complessiva
Version 2.770.54
Security
- La verifica delle firme CMS (HPDFVerifyCMSSignature, HPDFVerifyCMSSignatureEx e le firme PDF caricate) ora riporta una firma malformata quando gli attributi firmati mancano dell'attributo content-type o nominano un content type diverso dal contenuto firmato, come richiede RFC 5652; simili firme prima verificavano come valide, il che permetteva agli attributi firmati fatti per un content type di essere presentati come firma di un altro
- Le firme con l'attributo content-type ripetuto vengono rifiutate come prima
- Le countersignature, che per definizione non portano l'attributo content-type, e i token di timestamp RFC 3161 continuano a verificare come prima
Version 2.770.53
Fixed
- Fare clic sul pulsante della demo Annotations di C++Builder una seconda volta non riscrive più il documento precedente prima che quello nuovo venga avviato
- Un errore mentre la demo Annotations di C++Builder costruisce il suo PDF ora chiude il documento mezzo costruito, così il clic successivo parte da uno stato pulito
Version 2.770.52
Fixed
- Diversi documenti o istanze di
THotPDFin un processo che usano la stessa cartella di render cache su disco ora condividono un unico indice di cache; prima ogni istanza teneva il proprio indice e sovrascriveva quello delle altre a ogni salvataggio, perdendo l'ordine di uso recente - I limiti di numero di documenti e di dimensione totale della render cache su disco vengono fatti rispettare attraverso tutte le istanze che condividono una cartella, così la cartella non cresce più oltre il proprio budget quando più viewer o thread di rendering la usano allo stesso tempo
- La stessa cartella viene riconosciuta a prescindere dal maiuscolo/minuscolo o da un delimitatore di percorso finale
Version 2.770.51
Fixed
- Il ricampionamento di una bitmap con il kernel bicubico o Lanczos3 ora funziona per ogni formato di pixel sorgente; una sorgente a 32 bit, 8 bit o 1 bit veniva letta come se contenesse pixel a 3 byte, il che mescolava i suoi canali di colore o leggeva oltre la fine delle sue righe
- Simili sorgenti vengono prima convertite a 24 bit, così l'immagine ricampionata ha gli stessi colori della sorgente; il risultato resta una bitmap a 24 bit come prima
- Le sorgenti a 24 bit e il kernel halftone non sono interessati
Version 2.770.50
Fixed
- Demo PreflightCLI:
-dsu un singolo PDF ora scrive l'indice della dashboard anche quando il file fallisce il preflight - Demo PreflightCLI: i file che sollevano un errore durante il preflight vengono elencati come falliti nell'indice della dashboard, e il codice di uscita riflette ogni file fallito
- Demo PreflightCLI: con
-r, i report per PDF omonimi in sottodirectory diverse vengono scritti in sottocartelle corrispondenti invece di sovrascriversi a vicenda, sia con-osia nella dashboard - Demo PreflightCLI:
-f jsone-f csvora producono lo stesso schema con o senza--profile/--preset/--aggregate, inclusa la colonna spec del CSV - Demo PreflightReport: i report CSV generati con un profilo ora riempiono la colonna spec come i report senza
Version 2.770.49
Fixed
- La demo LargeFile di C++Builder ora genera l'insieme di input per benchmark che descrive il suo readme, come la versione Delphi: LargeFile-Text.pdf, LargeFile-Image.pdf, LargeFile-Mixed.pdf e il LargeFile-Encrypted.pdf cifrato AES-256 in una cartella BenchmarkInputs accanto all'eseguibile; prima scriveva un solo LargeFile.pdf di 200 pagine
- La demo LargeFile di C++Builder accetta le opzioni
--output-dir,--scale(small, default, large, huge) e--pagese stampa il comando HugeFileBenchmark per la cartella generata
Version 2.770.48
Fixed
- La demo Outlines di C++Builder ora scrive Outlines.pdf accanto all'eseguibile, il file che nomina il readme, invece di Output.pdf nella directory di lavoro, e riporta dove è stato salvato invece di aprire un viewer
- La demo Outlines di C++Builder ora costruisce lo stesso documento di 10 pagine con etichette di pagina Arial della versione Delphi; le etichette al fondo pagina a y = 830 venivano tagliate al bordo della pagina e i bookmark "Bottom" dell'ultima pagina puntavano al di sotto di esse
- Un errore mentre la demo Outlines di C++Builder scrive il PDF non lascia più la demo incapace di creare un altro documento
Version 2.770.47
Fixed
- La render cache su disco persistente ora funziona sotto cartelle i cui nomi contengono caratteri fuori dalla code page ANSI di sistema (per esempio una cartella del profilo utente con caratteri non latini); prima ogni scrittura di pagina falliva lì e la cache non produceva mai un hit
THPDFDiskPageCacheprende la sua cartella radice come stringa Unicode e mantiene tutti i percorsi della cache in Unicode, inclusa la sostituzione atomica dei file di pagina e dell'indice della cache
Version 2.770.46
Fixed
- Il rendering per regioni e tile (
RenderLoadedPageRegionToBitmap,RenderLoadedPageTiles, rendering progressivo di regioni) non lascia più una tile vuota quando il suo unico contenuto proviene da una form XObject collocata lontano dall'origine; una form ora conta come coprente il suo/BBoxcome piazzato dal suo/Matrixe dalla trasformazione corrente - Il testo piazzato con
TD,T*,'o"ora atterra sulla riga giusta quando si decide quali tile lo contengono, così le righe successive di un paragrafo non vengono più escluse dalle tile in cui appaiono - Gli offset
Tdvengono scalati dalla matrice di testo e misurati dall'inizio della riga, in accordo con come il testo viene realmente disegnato - La spaziatura dei caratteri, la spaziatura delle parole, lo scaling orizzontale e l'innalzamento del testo sono presi in conto quando si stima dove finisce una sequenza di testo, e i glifi non sono più assunti più stretti di un em
Version 2.770.45
Fixed
- La demo MemStream di C++Builder scrive MemStream.pdf accanto all'eseguibile, il nome che usa la versione Delphi, invece di Memory.pdf nella directory di lavoro
- La demo MemStream di C++Builder ora ricarica il PDF in memoria con LoadFromStream e controlla che abbia una pagina prima di salvarlo
- Un errore mentre la demo MemStream di C++Builder scrive il PDF non lascia più la demo incapace di creare un altro documento
Version 2.770.44
Fixed
- La demo HelloWorld di C++Builder non invia più un messaggio di chiusura a ogni finestra il cui titolo contiene HelloWorld.pdf quando si avvia, il che poteva chiudere finestre non correlate come un editor o un file manager
- La demo HelloWorld di C++Builder scrive HelloWorld.pdf accanto all'eseguibile e lo apre solo quando viene dato
--open; come la versione Delphi accetta un nome di file di output o--output <file>
Version 2.770.43
Fixed
- Caricare un PDF il cui albero delle pagine ha nodi /Pages intermedi non scarta più le pagine sotto quei nodi; simili documenti in precedenza riportavano solo le pagine elencate direttamente sotto la radice dell'albero
- Le pagine conservano il loro ordine nell'albero delle pagine, così gli indici di pagina, le page box e il contenuto corrispondono a ciò che mostrano gli altri viewer
- Una pagina il cui /Type è memorizzato come oggetto indiretto viene riconosciuta come pagina durante questo passo di ordinamento
Version 2.770.42
Fixed
- Caricare un PDF il cui albero delle pagine si referenzia da solo (un nodo /Pages elencato tra i propri /Kids, o due nodi che si elencano a vicenda) non va più in crash con uno stack overflow; ogni nodo dell'albero delle pagine viene attraversato una volta e gli alberi assurdamente profondi vengono troncati
- Un nodo dell'albero delle pagine il cui array /Kids o il cui nome /Type è memorizzato come oggetto indiretto ora carica le sue pagine invece di fallire o leggere memoria non valida
Version 2.770.41
Fixed
- THPDFPage.LastAnnotation ora restituisce il link creato da AddGoToLink, AddURILink, AddNamedDestinationLink, AddGoToRLink, AddLaunchLink, AddStructureDestinationLink e AddGoToRStructureDestinationLink
- Chiamare SetAnnotationFlags, SetAnnotationBorderStyle o AddPopupAnnotationFor con LastAnnotation subito dopo aver aggiunto un link non fa più silenziosamente nulla né cambia invece l'annotazione creata in precedenza
Version 2.770.40
Fixed
- Il JSON dei job passato a
THPDFJobProcessor.Execute,HPDFDocRunJobeHPDFDocRunJobWithCallbacksviene ora letto interamente come UTF-8: gli escape\uXXXXnon collassano più nella code page ANSI, e le surrogate pair con escape come😀producono il carattere voluto invece di due rotti - I nomi dei file di input e output nei job di merge, split, ottimizzazione, cifratura e validazione conservano i caratteri fuori dalla code page di sistema, sia che siano scritti come UTF-8 grezzo sia come escape
\u, così simili file vengono trovati e scritti sotto il loro nome reale - Un escape
\umalformato con meno di quattro cifre esadecimali viene scartato senza inghiottire i caratteri seguenti o la virgoletta di chiusura - Un byte order mark UTF-8 all'inizio del testo del job viene ignorato
Version 2.770.39
Fixed
- Gli object identifier forniti dal chiamante quando si costruiscono firme e richieste di timestamp (signature policy, commitment type, claimed role, timestamp policy e OID simili) vengono ora codificati correttamente quando il primo arco è 2 e il secondo arco è 48 o superiore; il primo valore combinato veniva tagliato a un singolo byte, producendo un identificatore diverso e sbagliato
- Un arco di object identifier troppo grande per essere rappresentato viene ora rifiutato con un errore invece di girare silenziosamente su un altro valore
Version 2.770.38
Fixed
- Demo HugeFileBenchmark: con
--recursive --keep-output, i PDF che condividono un nome di file in sottodirectory diverse non sovrascrivono più i file generati l'uno dell'altro; la directory di lavoro ora rispecchia l'albero delle cartelle di input
Version 2.770.37
Security
- Renderizzare un PDF con un font TrueType incorporato i cui glifi compositi elencano molte componenti, ciascuna a sua volta composita, non può più bloccare il renderer o l'esportazione text-to-path; un glifo ora si espande al massimo in 1024 componenti attraverso tutti i livelli di annidamento
- Una componente di glifo composito che si referenzia al proprio glifo viene saltata invece di essere espansa fino al limite di annidamento
Version 2.770.36
Fixed
- Una funzione stitching (Type 3) che si referenzia da sola, direttamente o attraverso altre funzioni, non ricorre più fino a far overflow dello stack; viene trattata come una funzione inutilizzabile
- Interessa le tint transform Separation e DeviceN, le funzioni di shading e le funzioni di trasferimento in PDF malformati o ostili renderizzati con
RenderLoadedPageToBitmape gli altri percorsi di rendering - L'annidamento delle funzioni è limitato a 16 livelli; i documenti legittimi si annidano molto meno profondamente
Version 2.770.35
Fixed
- La demo PageOperations di C++Builder ora esegue lo stesso flusso di lavoro della versione Delphi: inserisce anche una pagina bianca di dimensioni personalizzate con InsertLoadedBlankPage e stampa il testo delle pagine 1-3 con ExtractLoadedPagesText
- I file riordinato ed estratto della demo PageOperations di C++Builder ora contengono le stesse pagine della versione Delphi, spostando l'ultima pagina a pagina 2 ed estraendo le pagine 2 e 5
Version 2.770.34
Fixed
- La demo Hyperlink di C++Builder continua su una nuova pagina quando l'elenco dei link non sta in una pagina; i link oltre il fondo della prima pagina venivano scritti fuori dalla pagina
- Add, Remove e Make PDF nella demo Hyperlink di C++Builder vengono disabilitati mentre il PDF viene scritto, così l'elenco dei link non può più cambiare, e il documento non può essere avviato una seconda volta, in mezzo alla generazione
Version 2.770.33
Fixed
- La demo Stamp di C++Builder ora colloca la filigrana di testo e l'annotazione timbro rispetto alla dimensione di ogni pagina; sulle pagine orizzontali e altre non A4 l'annotazione timbro finiva fuori pagina e la filigrana slittava fuori centro
Version 2.770.32
Fixed
- Ogni pulsante della demo ViewerPref di C++Builder ora parte da un documento fresco; la direzione di lettura, lo zoom iniziale e le altre preferenze del viewer di un clic precedente restavano in vigore, così per esempio Create PDF dopo Test Direction scriveva ancora testo da destra a sinistra e preferenze non più selezionate
- La demo PDF_INFO di C++Builder ora scrive PDFInfo.pdf accanto all'eseguibile, il nome di file che usano la versione Delphi e il readme
Version 2.770.30
Security
- La validazione del percorso dei certificati (HPDFValidateCMSCertificatePath, la variante online e i batch di firme) non può più essere bloccata da una firma che incorpora molti certificati che condividono uno stesso nome e chiave; un simile insieme faceva sì che la ricerca del percorso provasse ogni ordinamento possibile, che cresce fattorialmente e poteva tenere una validazione occupata per ore
- Ogni firma di emittente in una catena candidata viene ora verificata una volta per validazione e il suo risultato riutilizzato, invece di essere verificata di nuovo per ogni percorso che la attraversa
- La ricerca del percorso è limitata a una quantità fissa di lavoro; quando il limite è raggiunto la validazione riporta che nessun percorso valido raggiunge un trust anchor, e le catene ordinarie restano ben al di sotto
Version 2.770.29
Fixed
ImportLoadedInterchangeFromFDFora confronta nomi di chiave interi quando legge le annotazioni e lo stato FDF:/Tnon si ferma più a/Typeo/Text,/Fnon più a/FreeText, e/Statusnon più a una chiave più lunga che inizia allo stesso modo, così le annotazioni importate conservano autore e flag- Le chiavi dei dizionari annidati dentro un'annotazione importata, e il testo simile a chiavi dentro le stringhe, non vengono più presi per le voci dell'annotazione stessa
- Le stringhe letterali nelle annotazioni e negli stati FDF importati decodificano tutti gli escape definiti da ISO 32000-1:
\t,\b,\f, l'ottale\ddde le continuazioni di riga con backslash, oltre a\n,\re le parentesi con escape
Version 2.770.28
Fixed
- Nelle build fatte con versioni di Delphi precedenti a XE2, che usano il reader PNG incluso, caricare un file PNG con un chunk di testo compresso (zTXt) non legge più oltre un buffer interno; il testo più lungo di 256 byte usciva corrotto e molto troppo lungo, e chunk grandi potevano far crashare
- Il metodo di compressione di un chunk di testo compresso viene ora letto dal byte corretto, così i chunk con un metodo non supportato vengono ignorati invece di essere decodificati come se fossero dati deflate
- Il testo compresso troncato o malformato non rischia più un ciclo di decodifica infinito
- Le build con Delphi XE2 e successive usano il reader PNG di sistema e non sono interessate
Version 2.770.27
Changed
- La demo SearchAndSelect di C++Builder ora funziona come la versione Delphi: crea un PDF di esempio, lo carica, trova il termine di ricerca con SearchLoadedDocumentText e aggiunge un'annotazione di evidenziazione su ogni corrispondenza con AddLoadedHighlightAnnotation
- La demo SearchAndSelect di C++Builder accetta un PDF di input, un termine di ricerca, un file di output e le opzioni --case-sensitive e --whole-word, e controlla la copia salvata per le nuove annotazioni
Fixed
- Le evidenziazioni della demo SearchAndSelect di C++Builder ora coprono le parole trovate; venivano collocate una riga più in alto perché la posizione del testo era presa come baseline invece che come cima del testo
Version 2.770.26
Fixed
- La demo DigiPrint di C++Builder ora si avvia sui sistemi il cui separatore decimale è un punto; i decimali con virgola in demo.xml venivano analizzati con le impostazioni locali di sistema e sollevavano un errore durante la creazione della form
- La demo DigiPrint legge demo.xml e le sue due icone JPEG dalla cartella dell'eseguibile e scrive demo.pdf lì, e il progetto ora colloca l'eseguibile nella cartella della demo accanto a quei file
- Le icone di pagina del piè di pagina della demo DigiPrint vengono disegnate dentro la riga del piè invece che sotto la linea inferiore della pagina, e il titolo, l'anno e il testo del piè usano le dimensioni in font dello stile del report
- Fare clic sul pulsante DigiPrint più di una volta non sposta più il margine sinistro ulteriormente a destra a ogni clic
- Un errore mentre la demo DigiPrint costruisce il PDF, come un file immagine mancante, non lascia più la demo incapace di creare un altro documento
Version 2.770.25
Fixed
- Demo Showcase: le bande di intestazione, lo sfondo di copertina, i campioncini dei gradienti e l'accento della quarta di copertina ora si allineano con le forme che riempiono; le coordinate dei gradienti sono date nello user space predefinito di PDF (origine in basso a sinistra), così i colori non sono più spostati o specchiati
- Demo Showcase: Save Copy non cambia più il file di lavoro, così Regenerate e Open External continuano a usare la galleria principale invece dell'ultima copia scritta
- Demo Showcase: quando la generazione della galleria fallisce, il viewer viene ricollegato e continua a mostrare l'ultima galleria caricata invece di restare vuoto
- Demo Showcase: i percorsi di output con caratteri fuori dalla code page ANSI di sistema passano invariati
Version 2.770.24
Fixed
- Caricare un'immagine JPEG 2000 con quattro componenti (RGB più alpha, o YCC più alpha) in una
TJpeg2000Bitmapora mette rosso, verde, blu e alpha nei byte giusti della bitmap a 32 bit; prima i canali di colore erano spostati di un byte e il canale alpha ne sovrascriveva uno - Ciò corregge anche un round trip di una
TJpeg2000Bitmapa 32 bit attraversoSaveToStreameLoadFromStream, che tornava con i colori mescolati - Le immagini a colore con tre componenti, le immagini in scala di grigio e le immagini CMYK a quattro componenti si caricano come prima
Version 2.770.23
Security
- Una stringa di testo il cui valore inizia con << e finisce con >> (per esempio un titolo, un autore, il valore di un campo di form o il testo di un'annotazione come "<<URGENT>>") ora viene sempre salvata come stringa; veniva scritta verbatim, il che rompeva la sintassi del file e permetteva a testo costruito ad hoc di iniettare nel documento salvato un dizionario come un'action
- Interessa i nuovi documenti e i documenti caricati salvati con SaveLoadedDocument e i metodi correlati
Version 2.770.22
Fixed
- La demo Barcodes di C++Builder scrive Barcodes.pdf accanto all'eseguibile invece che nella directory di lavoro corrente, e accetta un nome di file di output opzionale come unico argomento
- La demo Barcodes di C++Builder non apre più un viewer PDF dopo l'esecuzione, e come la versione Delphi comprime il contenuto della pagina e si apre con lo zoom che adatta l'altezza
- Gli errori nella demo Barcodes di C++Builder vengono riportati con il loro testo di messaggio; la console mostrava invece un indirizzo di memoria
Version 2.770.21
Fixed
- Nel C ABI stabile, chiamare
hpdf_document_destroymentre un'altra chiamata sullo stesso handle è ancora in corso (da un altro thread, o dall'interno di una callback di lettura, scrittura, progresso o annullamento) non libera più il documento sotto quella chiamata - L'handle diventa non valido appena
hpdf_document_destroyrestituisce; il documento stesso viene rilasciato quando l'ultima chiamata in corso su di esso termina - Le chiamate che cercano un handle concorrentemente alla sua distruzione ottengono
HPDF_STATUS_INVALID_HANDLEinvece di toccare memoria liberata
Version 2.770.20
Security
- Dare forma al testo con un font TrueType/OpenType i cui GSUB contextual lookup si referenziano da soli non provoca più overflow dello stack e crash; la profondità di annidamento ora si accumula davvero attraverso i livelli
- Una regola contestuale che innesca molti lookup annidati non può più moltiplicarli in un ciclo quasi infinito: ogni corrispondenza di primo livello esegue al massimo 1024 lookup annidati
Fixed
- Una sostituzione contestuale a catena (GSUB lookup type 6) raggiunta da un altro lookup contestuale viene ora applicata; veniva letta con il layout contestuale semplice e non corrispondeva mai, così alcune legature e forme contestuali mancavano
- Una reverse chaining substitution (GSUB lookup type 8) referenziata da una regola contestuale viene saltata come richiede la specifica OpenType, invece di essere mal letta come una subtable contestuale
Version 2.770.19
Fixed
RenderLoadedPageToDCnon solleva più una access violation quando la pagina contiene un image XObject o un'immagine inline; le immagini vengono disegnate nel device context del chiamanteGetLoadedPageMetafilenon fallisce più sulle pagine con immagini, e le immagini vengono registrate nel metafile restituito- Il clipping delle immagini contro la superficie visibile ora usa la dimensione passata a
RenderLoadedPageToDCquando il device context non ha una regione di clip
Version 2.770.18
Fixed
- Le regioni halftone JBIG2 con grid skipping attivo non scartano più le celle della griglia che iniziano a sinistra o sopra la regione ma la sovrappongono comunque; simili celle venivano trattate come situate molto fuori, i loro valori di grigio venivano saltati, e le celle restanti della regione venivano decodificate fuori passo
- Le coordinate negative della griglia che non sono pixel interi ora vengono arrotondate verso meno infinito come richiede la specifica JBIG2, così le celle parzialmente visibili cadono sul pixel corretto
- Le regioni halftone la cui griglia giace interamente a coordinate non negative non sono interessate
Version 2.770.17
Fixed
- Le risposte OCSP il cui responder è identificato per key hash nella forma standard di RFC 6960 (un tag [2] esplicito attorno al key hash) vengono di nuovo accettate; la validazione del percorso dei certificati le scartava, così la revocation restava sconosciuta per ogni responder che nomina se stesso per chiave
- Vengono riconosciuti sia i responder diretti (la CA emittente) sia i certificati di firma OCSP delegati identificati per chiave, e la più vecchia forma con tag implicito continua a funzionare
- HPDFDescribeValidationEvidence ora indicizza i descrittori OCSP per il DN dell'emittente del certificato nominato in ogni risposta, risolto dall'issuer name hash della risposta, invece che per il DN del responder; le risposte dei responder delegati e le risposte identificate per chiave ora producono descrittori che una ricerca per emittente del certificato può trovare
- Aggiunto un overload di HPDFDescribeValidationEvidence che prende la firma CMS e certificati di emittente extra, per le risposte che identificano il responder per chiave e non incorporano alcun certificato
Version 2.770.16
Fixed
- Demo Viewer: la form non solleva più una access violation all'avvio; la barra di stato ora esiste prima che il viewer venga legato al documento e inizia a segnalare i cambi di pagina
- Demo Viewer: premere Invio nella casella di ricerca ora attiva la prima corrispondenza invece di saltare dritti alla seconda
- Demo Viewer: i bookmark senza una pagina di destinazione risolvibile vengono elencati senza un falso suffisso "(p0)", e fare clic su di essi non solleva più un errore di intervallo
Version 2.770.15
Fixed
- Il passo di decifratura della demo Security di C++Builder ora apre davvero il campione cifrato con la password utente "user"; l'argomento password veniva preso per il flag di decifratura automatica, così il campione veniva caricato senza la sua password e Security-Decrypted.pdf non era una copia decifrata
Version 2.770.14
Fixed
- Un clipping path impostato con
WoW*ora entra in vigore dopo che il percorso è stato dipinto, come richiede ISO 32000-1, invece che prima - Tracciare il contorno di un percorso che imposta anche il clip (
re W S) ora dipinge l'intera larghezza della linea; la metà esterna dello stroke veniva tagliata via dal clip del percorso stesso - Il fill-and-stroke con un clip even-odd (
W* B) ora riempie con la regola di winding propria dell'operatore di pittura; il clip even-odd prima bucava il riempimento B*eb*ora riempiono sempre con la regola even-odd, indipendentemente dalla regola di riempimento lasciata da un'operazione precedente
Version 2.770.13
Fixed
- Le regioni halftone JBIG2 i cui piani di scala di grigio sono codificati MMR ora si decodificano; prima i piani uscivano invertiti, veniva letta solo una colonna su otto, e la fine di ogni piano veniva individuata al byte sbagliato, così i piani seguenti venivano decodificati dalla posizione errata
- Il marker end-of-block dopo ogni piano MMR viene riconosciuto sia che segua direttamente l'ultima riga sia che arrivi dopo il padding a byte, e ogni piano ora inizia sul byte boundary che segue
- Le regioni halftone a codifica aritmetica non sono interessate
- Interessa le immagini PDF con il filtro JBIG2Decode che vengono caricate, estratte o renderizzate con il decoder incorporato
Version 2.770.12
Fixed
- Il JSON prodotto dal job processor (
THPDFJobProcessor.Execute,HPDFDocRunJob,HPDFDocRunJobWithCallbacks) e dal confronto di documenti ora effettua l'escape di virgolette e backslash come\"e\; le forme precedenti\x22/\x5Cnon sono JSON valido e facevano sì che i parser standard rigettassero risultati che contenevano una virgoletta o un percorso Windows - I caratteri di controllo vengono scritti come escape
\uXXXXe l'output è sempre UTF-8 ben formato: i byte che non sono UTF-8 valido vengono sostituiti con U+FFFD invece di essere copiati nel risultato - I messaggi di errore nei risultati dei job e nell'oggetto errore del confronto sono codificati in UTF-8, così il testo delle eccezioni non in inglese e i nomi dei file non arrivano più nella code page ANSI
Version 2.770.11
Fixed
- RedactLoadedRect, StampLoadedPageText, StampLoadedPageImage, StampLoadedPageShape, StitchLoadedPage e FlattenLoadedAnnotations non scartano più il contenuto esistente di una pagina quando il suo /Contents è un array di stream; i nuovi operatori vengono aggiunti come uno stream extra alla fine dell'array, o in testa per un underlay
- Gli stamp in underlay su una pagina il cui contenuto è spezzato su più stream conservano ogni stream originale
- Le pagine il cui unico stream di contenuto usa un filtro diverso dal semplice FlateDecode (ASCIIHex, ASCII85, LZW, RunLength, catene di filtri o Flate con un predictor) vengono ora decodificate prima che i nuovi operatori vengano aggiunti, così lo stamp, il riquadro di redaction o l'aspetto appiattito viene realmente dipinto e il contenuto originale resta leggibile
- Quando lo stream di contenuto di una pagina non può essere decodificato affatto, viene lasciato intatto e i nuovi operatori vengono scritti in uno stream separato invece di essere accodati ai byte codificati
Version 2.770.10
Security
- Renderizzare un PDF il cui font CFF incorporato (FontFile3, Type1C o CIDFontType0C) memorizza un offset INDEX di 0x80000000 o superiore non legge più memoria al di fuori dei dati del font; simili offset venivano trattati come negativi e superavano i controlli sui limiti
- I font TrueType incorporati ricevono lo stesso trattamento per le posizioni dei glifi e le lunghezze delle tabelle di 0x80000000 o superiori: il glifo o il font viene saltato invece di essere letto dal posto sbagliato
- Un glifo CFF le cui subroutine si richiamano a vicenda molte volte non può più bloccare il rendering o l'esportazione text-to-path; ogni glifo ora ha un budget fisso di operazioni charstring, molto al di sopra di ciò che usano i font reali
Version 2.770.9
Fixed
- Le immagini JBIG2 le cui regioni di testo usano la codifica Huffman insieme al refinement dei simboli nel template a 13 pixel ora si decodificano; i byte degli adaptive pixel di refinement nell'header della regione venivano saltati, così il conteggio delle istanze e ogni campo seguente venivano letti dall'offset sbagliato e l'immagine veniva rifiutata
- Le regioni di testo con codifica aritmetica, o con il template di refinement a 10 pixel, non sono interessate e si decodificano esattamente come prima
- Interessa le immagini PDF con il filtro JBIG2Decode che vengono caricate, estratte o renderizzate con il decoder incorporato
Version 2.770.8
Security
- Con l'isolamento dei codec attivo, la dimensione di un'immagine decodificata restituita dal codec worker isolato viene ora confrontata con il limite di output configurato e con la memoria condivisa allocata dal processo ospite, invece che con un campo di capacità che lo stesso worker può sovrascrivere
- Un worker compromesso o difettoso non può più fare sì che l'ospite copi oltre la fine del blocco di memoria condivisa; una simile risposta viene rifiutata come errore di protocollo e l'immagine non viene disegnata da essa
- La risposta del worker viene copiata una volta e validata da quella copia, così il suo header non può cambiare tra i controlli e la copia dei pixel
Version 2.770.7
Fixed
- Le richieste OCSP costruite per il controllo di revocation in linea (HPDFCollectCMSRevocationRequests e la validazione online del percorso dei certificati) ora codificano correttamente l'identificatore di algoritmo SHA-256 del CertID; prima i primi due archi dell'object identifier venivano scritti come byte separati, così l'algoritmo di hash non era valido
- I responder OCSP che rifiutano le richieste malformate ora rispondono a queste richieste con uno stato normale invece di un errore, così i controlli di revocation online non tornano più alle prove offline a causa della codifica della richiesta
Version 2.770.6
Fixed
- Il rendering di un font Type 3 ora dipinge ogni occorrenza di un glifo; prima un glifo ripetuto nella stessa sequenza di testo, o altrove sulla pagina con la stessa dimensione e orientamento, veniva dipinto solo la prima volta e lasciato in bianco in seguito
- Interessa
RenderLoadedPageToBitmap,RenderLoadedPageToDC, i metafile di pagina e i percorsi di esportazione a immagine, con o senza la render cache condivisa - I glifi Type 3 ripetuti continuano a usare la cache dei glifi, così la correzione non rilegge la procedura del glifo per ogni occorrenza
Version 2.770.5
Fixed
- Il C ABI stabile non libera più due volte la sorgente di input quando
hpdf_document_load_from_iofallisce mentre il documento è in fase di parsing, per esempio quando la callback di lettura segnala un errore o l'operazione viene annullata a metà; un simile caricamento poteva corrompere l'heap o far crashare il processo ospite - Un caricamento fallito ora restituisce lo stato della callback o dell'annullamento invece di un errore interno, e lo stesso document handle può essere ricaricato in seguito
- Caricare un nuovo documento in un handle esistente rilascia la precedente sorgente di input solo quando il nuovo caricamento ha preso il controllo
Version 2.770.4
Fixed
- I risultati dei barcode di
DecodeLoadedPageBarcodessulle pagine con/Rotate 90o/Rotate 270ora riportano i bounds alla posizione reale del simbolo invece di una posizione speculare attraverso la pagina - L'orientamento del barcode riportato su quelle pagine ora corrisponde alla direzione in cui il simbolo si legge realmente nello spazio pagina
- Il testo invisibile piazzato da
ApplyLoadedOCRTextLayersulle pagine ruotate di un quarto d'ora in poi giace sopra le parole riconosciute, così selezione e ricerca evidenziano il posto giusto - Anche i volti rilevati dal rilevamento di redaction sulle pagine ruotate di un quarto vengono riportati alla giusta area della pagina
- Le pagine non ruotate e capovolte non sono interessate
Version 2.770.3
Fixed
- Nelle build a 32 bit, caricare o scrivere un'immagine TIFF compressa con PixarLog non va più in crash con uno stack overflow; la selezione del codec costruisce le sue tabelle di companding, che incappavano in un helper esponenziale infinitamente ricorsivo
- Le immagini TIFF SGILog (LogLuv) nelle build a 32 bit passano per gli stessi helper matematici corretti
- L'helper di arrotondamento all'intero inferiore a 32 bit usato dai codec TIFF ora arrotonda i valori negativi verso meno infinito e accetta grandi magnitudini senza errore di overflow, allineandosi alle build a 64 bit
Version 2.770.2
Changed
- Durante il rendering, un'immagine disegnata alla metà della sua dimensione in pixel o meno viene rimpicciolita alla dimensione esattamente disegnata tramite media d'area subito dopo la decodifica, invece di essere conservata a dimensione piena e stirata durante il disegno
- L'immagine ridotta entra nella cache delle immagini decodificate: un transparency group disegnato due volte, su nero e su bianco, per recuperare la sua alpha ora decodifica una simile immagine una sola volta invece di una per passata, e lo stesso vale per il rendering di nuovo della stessa pagina
- Un'immagine con una soft mask viene combinata con la sua maschera pixel per pixel alla dimensione disegnata, dove anche la maschera è ridotta; ciò evita di costruire e premoltiplicare una copia a dimensione piena di una grande immagine e della sua maschera, e il bordo della maschera non viene più campionato per nearest neighbour
- Su una pagina di esempio con un'immagine mascherata di 4229 x 4629 disegnata a circa un quarto della sua dimensione dentro un simile gruppo, il rendering richiedeva circa 1,8 secondi invece di 4,5
- Le stencil image mask conservano la loro piena risoluzione, e i metodi pubblici di decodifica di regione continuano a restituire le dimensioni che documentano
Version 2.770.1
Fixed
- Nelle build a 64 bit, il rendering di una pagina con un transparency group falliva con un errore di indice di lista ogni volta che il gruppo non impostava una soft mask propria, una regressione della versione 2.769.3; simili pagine ora si renderizzano di nuovo
Version 2.770.0
Added
- La nuova proprietà
RenderColorimetricLuminosityMaskssceglie come una soft mask di luminosità trasforma il colore in valori di maschera quando il suo gruppo ha uno spazio di blending basato su CIE (CalGray,CalRGB,LaboppureICCBased) - Impostarla a
trueadotta CIE Y come descrive ISO 32000-1 11.5.3; le bitmap renderizzate con le due impostazioni vengono cachate separatamente
Changed
- Per impostazione predefinita una maschera di luminosità ora pondera il colore risolto del suo gruppo come DeviceRGB a prescindere dallo spazio di blending, come fanno i comuni viewer PDF. CIE Y è misurato su scala lineare, quindi un grigio medio in un gruppo ICC o calibrato mascherava solo circa un quinto, e le ombre portate e le dissolvenze risultavano molto più chiare che negli altri viewer
- Il colore di sfondo
/BCdi una maschera segue la stessa impostazione della pittura dentro il mask group - Le maschere il cui gruppo usa uno spazio colore device si renderizzano come prima
Version 2.769.3
Fixed
- Un transparency group disegnato con una modalità di blend diversa da Normal, come le ombre portate Multiply che esportano gli strumenti di design, ora fonde il proprio colore e la propria alpha con lo sfondo (ISO 32000-1 11.3.6 e 11.4.8). Dove il gruppo era parzialmente trasparente i suoi pixel contenevano già lo sfondo, che veniva poi fuso con se stesso: un'ombra Multiply risultava troppo scura e della tinta dello sfondo
- Il contenuto di un transparency group parte dalla modalità di blend Normal, dato che la modalità di blend si applica al gruppo nel suo complesso (11.6.6). Prima conservava la modalità con cui il gruppo veniva disegnato, così un gruppo isolato fondeva il suo contenuto nel proprio stato iniziale vuoto e dipingeva nero
- Una soft mask impostata nello stesso graphics state di una modalità di blend disegna il proprio mask group con blending Normal (11.6.5.2); la modalità di blend rendeva nero un mask group bianco e nascondeva ciò che la maschera avrebbe dovuto mostrare
- Per trovare l'alpha di un gruppo non isolato, il gruppo viene disegnato due volte, su nero e su bianco, quando i suoi graphics state fanno blending normalmente; simili pagine si renderizzano un po' più lentamente
Version 2.769.2
Changed
- Un'immagine con una soft mask viene decodificata alla dimensione con cui viene disegnata, come già avveniva per un'immagine senza, e anche la sua maschera viene decodificata a quella dimensione; una maschera JPEG passa per il decoder JPEG a dimensione ridotta invece di essere decodificata per intero
- Immagine e maschera vengono sempre decodificate per intero, così la maschera non può spostarsi rispetto all'immagine, e il clipping mantiene ciò che viene disegnato limitato alla parte visibile
- Su una pagina con un'immagine d'ombra di 4229 x 4629 e una maschera JPEG di 2114 x 2314 disegnata larga circa 1000 pixel, il rendering a 72 dpi richiedeva 1,6 secondi invece di 3,7
DecodeLoadedImageRegionAtResolutionrestituisce un'immagine intera di un formato privo di decoder di regione così com'è decodificata, senza copiarla un'altra volta
Version 2.769.1
Changed
- Le soft mask si costruiscono più rapidamente: costruire una maschera non trattiene più una seconda copia dell'intera pagina con cui confrontarsi, costo che le pagine con molte maschere, come i gradienti e le ombre portate esportati dagli strumenti di design, pagavano una volta per maschera
- Le maschere di luminosità su uno spazio di blending calibrato o basato su ICC consultano la curva sRGB invece di calcolarla per ogni canale di ogni pixel, e il contenuto grigio delle maschere, il caso comune, viene convertito attraverso un'unica tabella
- Una pagina di 1125 x 1600 con una ventina di soft mask si renderizza circa un quinto più in fretta; i pixel renderizzati restano invariati
Version 2.769.0
Changed
- Impostare la Width o la Height di una pagina non nasconde più gli errori: un fallimento ora solleva un'eccezione invece di lasciare la dimensione silenziosamente inapplicata, e impostare la dimensione di una pagina la cui canvas è già stata chiusa solleva la nuova EHPDFPageClosedError con un messaggio che spiega il perché
- Dopo un simile fallimento la pagina non resta più in uno stato in cui le modifiche di dimensione successive aggiornano solo il suo MediaBox e non la dimensione della pagina usata per il disegno
Fixed
- Ridimensionare una pagina di un PDF caricato non sovrascrive più altri oggetti: un MediaBox i cui numeri sono oggetti separati, o un array MediaBox condiviso da più pagine, viene copiato per la pagina che si sta ridimensionando, così le altre pagine conservano la loro dimensione
- Ridimensionare una pagina caricata il cui MediaBox ha meno di quattro numeri ora scrive un MediaBox completo con la nuova dimensione; prima la nuova dimensione veniva ignorata
Version 2.768.20
Fixed
- L'estrazione del testo non entra più in un Form XObject che disegna se stesso, direttamente o attraverso altre form; una simile form veniva riletta a ogni livello di annidamento, ripetendo il suo testo fino a dodici volte, e una che si disegnava due volte richiedeva 4.096 passaggi
- Il testo di un Form XObject che cade fuori dal bounding box della form, che lo ritaglia, non fa più parte del testo della pagina
Version 2.768.19
Changed
- I documenti grandi tornano a caricarsi in fretta: l'attraversamento dell'albero delle pagine non cerca più tra tutti gli oggetti caricati per ogni pagina, e il controllo di cifratura di LoadFromFile con AutoDecrypt legge il file attraverso lo stesso buffer del caricamento. Il PDF Reference 1.7 da 56 MB ora si carica in circa 8 secondi invece di 22
Version 2.768.18
Fixed
- Il rendering delle pagine ora trova i font installati che Windows riporta con un nome localizzato, come Microsoft YaHei su Windows cinese o Yu Mincho su Windows giapponese; il testo in simili font veniva disegnato con un font sostitutivo quando il PDF non li incorporava
- I nomi di font scritti senza spazi ora corrispondono alle famiglie Windows che mantengono alcune parole unite, come MicrosoftYaHei per Microsoft YaHei, MicrosoftJhengHei per Microsoft JhengHei e MSPGothic per MS PGothic; venivano cercati con uno spazio davanti a ogni lettera maiuscola e non trovati mai
- Il renderer ricorda quali nomi di font sono installati, così i documenti con molti font non installati non interrogano più Windows per ogni nome a ogni pagina
Version 2.768.17
Changed
- I documenti grandi si caricano molto più in fretta: la telemetria delle operazioni ora campiona la memoria al massimo una volta ogni 10 ms nel corso di un'operazione invece che a ogni oggetto letto dal parser, un campionamento che attraversava ogni blocco del memory manager. Il PDF Reference 1.6 di 1.236 pagine si carica in circa 2,5 secondi invece di 30, e il PDF Reference 1.7 da 56 MB in circa 22 secondi invece di oltre quattro minuti
- Il rallentamento cresceva con la dimensione dell'heap dell'applicazione stessa, quindi a trarne maggiore beneficio sono le applicazioni che trattengono molta memoria
- UpdateOperationTelemetrySample acquisisce un parametro Force opzionale che rileva un campione a prescindere dall'intervallo; la fine di ogni operazione ne rileva comunque uno
Version 2.768.16
Fixed
- Il caricamento di un file vuoto non si blocca più; LoadFromFile prima restava in un ciclo infinito leggendo all'indietro dall'inizio del file
- Un file in cui non si trova nessuna pagina, come un file vuoto, testo semplice o byte casuali, non viene più caricato come una o tre pagine bianche indovinate dalla sua dimensione; LoadFromFile ora restituisce 0 o solleva un'eccezione, come per gli altri file illeggibili
- Un file cifrato le cui pagine stanno in object stream cifrati ora solleva un'eccezione che segnala che serve la password quando viene caricato senza, invece di caricarsi come pagina bianca; caricatelo con l'overload che accetta la password
Version 2.768.15
Fixed
- Il testo della pagina non ripete più i caratteri ridisegnati sopra se stessi, come nei loghi in overprint e nel grassetto simulato disegnando il testo due volte con un piccolo scostamento; un simile testo veniva estratto due volte, per esempio "Bold wordsBold words", e le ricerche su di esso potevano fallire
- Le estrazioni del testo a livello di testo, colonna, layout e semantico leggono tutte un simile carattere una sola volta; l'elenco dei glifi continua a riportare ogni glifo disegnato
Version 2.768.14
Fixed
- I nomi dei glifi della lista Adobe Glyph List completa ora si risolvono nell'estrazione del testo e nel rendering, tra cui le legature fi, fl, ff, ffi e ffl e i nomi afii che usano i vecchi font cirillici, ebraici e arabi; una codifica di font che nominava simili glifi restituiva i caratteri sbagliati, per esempio "defined" veniva estratto come "deÞned"
Version 2.768.13
Changed
- LoadFromFile legge i file sotto LocalFileMappingThreshold (8 MB per impostazione predefinita), e ogni file quando il mapping è disattivato o non disponibile, attraverso un buffer di lettura di 64 KB; i file con molti oggetti e una classica tabella cross-reference si caricano molto più in fretta, per esempio il PostScript Language Reference Manual di 912 pagine in circa 1 secondo invece di quasi 3 minuti
Version 2.768.12
Fixed
- L'estrazione del testo ora posiziona i glifi dei font CID-keyed (Type 0) il cui array di larghezze /W non è ordinato per CID; la maggior parte dei glifi riceveva la larghezza predefinita di un em intero, così le righe sbordavano oltre il bordo della pagina e le loro parti finali venivano scartate dal testo estratto e dalla ricerca
Version 2.768.11
Fixed
- Le lettere accentate dei font CFF (Type 1C) incorporati costruiti da una lettera base e un accento, come in molti font convertiti dal Type 1, ora vengono renderizzate; lettere come ü ed é restavano bianche, così parole come "München" mostravano un vuoto
- Le stesse lettere ora sono complete nell'esportazione SVG con font incorporati
Version 2.768.10
Fixed
- I glifi compositi dei font TrueType incorporati ora collocano ogni parte al suo offset: lettere accentate come é e Å perdevano l'accento, e le virgolette doppie curve si vedevano come una virgoletta singola seguita da un vuoto
- Gli stessi glifi ora sono completi nell'esportazione SVG con font incorporati
Version 2.768.9
Fixed
- Le immagini marcate
/Interpolate falseora vengono mediate quando vengono disegnate più piccole della loro risoluzione; prima venivano campionate prendendo un pixel ogni vari pixel, così i grafici inseriti come immagini mostravano etichette degli assi seghettate e scure e linee sottili spezzate dove gli altri viewer le mostrano lisce - Le immagini ingrandite con
/Interpolate falsemantengono i loro bordi netti di pixel come prima
Version 2.768.8
Fixed
- Il testo disegnato con uno stroke più stretto di un pixel, come i documenti fanno per il falso grassetto, ora viene renderizzato a quella larghezza; lo stroke prima era largo un pixel intero, così queste intestazioni sembravano sbavate e molto più pesanti che negli altri viewer
- I glifi piccoli dei font incorporati e installati vengono tracciati con antialiasing nei text rendering mode 1 e 2, nel colore dello stroke, dopo il riempimento
Version 2.768.7
Fixed
- Chiamare
ProcessObjectStreamsForDecompressionsu un documento caricato non scarta più gli object stream letti durante il caricamento: gli oggetti compressi restano disponibili perExtractRawObjectFromStreameExtractObjectFromStream, mentre prima non se ne poteva leggere nessuno - Quando il metodo scandisce il file stesso, come accade per un documento con una tabella xref classica, ora trova un object stream che segue direttamente un altro stream e legge dal suo dizionario il numero di oggetti e gli offset
ExtractRawObjectFromStreamdecodifica di nuovo un object stream quando la cache degli object stream l'ha rilasciato, invece di restituire un risultato vuoto
Version 2.768.6
Fixed
- Il demo Stamp ora compila con successo per Win64
Version 2.768.5
Fixed
- Nelle edizioni cinese, giapponese e coreana di Windows, i documenti con xref stream i cui dizionari contengono stringhe binarie, come i checksum degli allegati, ora si caricano in una frazione di secondo; un portfolio da 4 MB con nove file PDF allegati metteva due minuti ad aprirsi
- Il parser ora cerca le sue parole chiave nei byte grezzi del file invece che nel testo convertito attraverso la code page di Windows, così i dati binari accanto a una parola chiave non possono più nasconderla o spostarne la posizione
Version 2.768.4
Fixed
- Il contenuto dentro un Form XObject ora viene renderizzato con l'opacità, la soft mask e la blend mode che imposta per sé; prima tutto ciò che sta in una form veniva verniciato a opacità piena, così le filigrane translucide e i timbri uscivano solidi
- Una form verniciata con una propria opacità viene comunque composta una volta sola come insieme, come prima
Version 2.768.3
Fixed
- Il testo di pagina ora include il testo che la pagina vernicia attraverso Form XObject, come intestazioni e piè di pagina, filigrane e timbri; prima veniva restituito solo il testo nel contenuto proprio della pagina
- Il testo della form appare dove la form viene verniciata, posizionato attraverso la matrice della form e letto nei font della form stessa, e le form annidate dentro altre form vengono seguite anch'esse
- Vale per il testo di pagina semplice, layout, a colonne e semantico; l'estrazione a livello di glifo restituisce ancora solo i glifi del contenuto proprio della pagina, le cui posizioni puntano in quel contenuto
Version 2.768.2
Fixed
EncryptFileeDecryptFilecon AES-256 non danneggiano più i file dei font incorporati il cui dizionario elenca/Length1prima di/Length, come li scrivono Ghostscript e altri tool; questi font venivano cifrati come un singolo byte, il che lasciava l'output illeggibile- Gli stream la cui lunghezza è memorizzata in un object stream compresso conservano tutti i loro dati attraverso cifratura e decifratura AES-256; prima l'ultimo byte di uno stream del genere poteva perdersi
Version 2.768.1
Fixed
- I documenti le cui lunghezze degli stream sono memorizzate dentro object stream compressi, come li scrive Ghostscript, ora si caricano per intero; prima ogni stream di contenuto di pagina di un file del genere veniva scartato, così le pagine uscivano bianche e senza testo
- Uno stream la cui lunghezza rimanda a un oggetto che non esiste, o che non ha proprio una lunghezza, ora viene letto fino al suo marcatore di fine invece di essere scartato
Version 2.768.0
Added
BuildLoadedPageSVGeSaveLoadedPageAsSVGaccettano un parametro opzionaleEmbedFonts; è disattivato per impostazione predefinita e le chiamate esistenti esportano esattamente come prima- Con
EmbedFontsaTrue, il testo nei font il cui programma TrueType o CFF è incorporato nel PDF viene disegnato dai contorni dei glifi del font stesso, così l'SVG appare uguale anche sui sistemi dove quei font non sono installati - Ogni contorno di glifo viene scritto una volta sola e riusato ovunque compare il carattere, il che tiene bassa la dimensione del file sulle pagine ricche di testo
- Il testo resta nell'SVG come testo trasparente sopra i contorni, così può ancora essere selezionato, cercato e letto dagli screen reader
- Testo in fill, stroke e fill-and-stroke, spessori delle linee, testo ruotato o scalato e testo usato come clipping path escono come nella pagina renderizzata
- I font non incorporati, i programmi di font Type 1 e il testo CJK verticale restano testo SVG ordinario
Version 2.767.4
Fixed
- Il testo outlined e fill-and-outline (text render mode 1 e 2) nei font non incorporati ora rispetta lo spessore della linea quando viene renderizzato; prima ogni contorno usciva largo un pixel, qualunque fosse lo spessore
- Questi contorni ora vengono disegnati dalle forme esatte dei glifi del font installato nelle loro posizioni esatte, com'era già per il testo riempito
- Anche i caratteri che mancano al font installato, che Windows prende da un font di fallback, mantengono lo spessore della linea quando sono outlined
Version 2.767.3
Fixed
- Il testo nei font non incorporati ora viene disegnato con i caratteri che la sua encoding nomina. I codici carattere arrivavano al font installato invariati, e il font installato li legge nel proprio set di caratteri, così ogni voce
/Differencese i codici dove StandardEncoding o MacRomanEncoding differiscono dal set di caratteri di Windows disegnavano i caratteri sbagliati, per esempio virgolette dritte invece che ondulate nei font Type 1 senza encoding - Nelle edizioni cinese, giapponese e coreana di Windows, le lettere accentate, le virgolette ondulate, il simbolo del copyright e gli altri caratteri sopra il codice 127 nei font non incorporati venivano disegnati come punti interrogativi dalla versione 2.766.83; ora vengono letti di nuovo nel set di caratteri del font installato
- I font Symbol conservano la loro mappatura di codici propria
Version 2.767.2
Fixed
- Anche i glifi grandi dei font incorporati ora vengono renderizzati con antialiasing. I glifi oltre i 64 pixel, come titoli e intestazioni alle risoluzioni di stampa, venivano riempiti senza e mostravano bordi seghettati; ora arrivano antialiasati fino a 256 pixel, mentre il testo più grande dei font installati mantiene l'output di testo antialiasato del sistema
Version 2.767.1
Fixed
- L'estrazione del testo layout, del testo a colonne e del testo semantico ora misura la pagina in unità di pagina. Confrontavano le posizioni con la dimensione del font data a
Tfe con gli avanzamenti in text space, che sono una frazione delle distanze reali nei tanti documenti che dimensionano il testo attraverso la matrice del testo, così il testo layout disperdeva ogni lettera su più colonne, il testo a colonne perdeva tutti gli spazi tra parole e il testo semantico metteva quasi ogni parola su una riga propria - Tutti e tre ora restituiscono solo il testo dentro il box visibile e separano le parole che un documento distanzia spostando la posizione del testo, come il testo di pagina semplice
- Il testo layout tiene insieme le lettere di una parola, dove lettere larghe come m o W prima spingevano uno spazio dentro la parola
- Il testo semantico non mette più una riga vuota dopo ogni riga di una pagina a colonna singola: una sequenza di righe a piena larghezza forma una zona sola, e un cambio di zona separa le righe solo quando sono distanziate più di un'interlinea
- Le pagine di help di questi metodi descrivono cosa restituiscono, e il metodo per le colonne mostra la sua sintassi completa
Version 2.767.0
Added
LoadFromFileeLoadFromStreamhanno overload con un parametroAutoDecrypt. ConAutoDecryptTrue, un documento cifrato con una user password vuota, com'è il caso dei documenti che limitano solo stampa, copia o modifica, si apre decifrato in memoria al modo in cui lo aprono i viewer, così il suo testo si può estrarre e le sue pagine si possono renderizzare ed esportare senza fornire una password- I documenti che richiedono una password e i documenti non cifrati si caricano esattamente come li caricano gli overload semplici, e se la password vuota apre il documento viene verificato da pochi piccoli intervalli del file prima del caricamento
- Come con gli overload con password, un documento aperto in questo modo non è più cifrato in memoria, e salvarlo scrive una copia non cifrata
Version 2.766.83
Changed
- Il testo piccolo nei font non incorporati, come i 14 font standard e i font Office e cinesi installati, ora viene renderizzato dai contorni dei glifi senza hinting alla sua posizione esatta, con lo stesso antialiasing dei font incorporati. L'output di testo di sistema usato prima collocava ogni glifo su un pixel intero e ne adattava la forma alla griglia dei pixel, così il testo piccolo era spaziato in modo irregolare e aveva un aspetto maculato; le pagine renderizzate ora somigliano molto più da vicino alle forme e alla spaziatura degli altri viewer
- I glifi che mancano al font installato e i glifi grandi continuano a essere disegnati con l'output di testo di sistema, che può prendere i caratteri mancanti dai font collegati
Fixed
- I glifi piccoli dei font incorporati vengono disegnati più in fretta, perché le bitmap dietro il loro antialiasing vengono riusate invece di essere create per ogni glifo
Version 2.766.82
Fixed
- Il testo disegnato con font installati nelle pagine renderizzate ora usa antialiasing in scala di grigi. Seguiva l'impostazione ClearType del sistema, così il testo nero nelle bitmap renderizzate portava aloni rossi e blu che dipendevano dalla macchina e restavano nelle immagini salvate, stampate o ridimensionate
Version 2.766.81
Fixed
- Il testo piccolo nei font CFF e OpenType CFF incorporati ora viene renderizzato con antialiasing, com'era già per il testo TrueType. Questi glifi venivano riempiti senza antialiasing, quindi alle dimensioni piccole e alle normali risoluzioni dello schermo le aste più strette di un pixel sparivano e il testo del corpo si spezzava in frammenti; moduli e documenti composti in font come Helvetica Neue ora sono leggibili a 72 DPI
Version 2.766.80
Changed
- L'estrazione del testo di pagina restituisce solo il testo che la pagina mostra. I glifi che stanno fuori dall'area visibile, il crop box dentro il media box, vengono lasciati fuori, così i segni di stampa, le righe di slug e gli altri contenuti fuori dalla pagina tagliata non compaiono più nel testo estratto. L'estrazione a livello di glifo restituisce ancora ogni glifo con la sua posizione
Version 2.766.79
Fixed
- L'estrazione del testo di pagina non spezza più una riga su un apice rialzato o su una baseline leggermente spostata nel testo dimensionato attraverso la matrice del testo. Una nuova riga partiva ogni volta che il testo si muoveva su o giù della metà della dimensione del font data a
Tf, che in questi documenti spesso è 1, quindi bastava uno spostamento di mezzo punto - Il testo ruotato, come le etichette che corrono lungo il lato di una pagina o le filigrane diagonali, non mette più ogni carattere su una riga propria. Le righe ora si distinguono per lo spostamento attraverso la direzione in cui corre il testo, confrontato con metà dell'altezza del testo sulla pagina
Version 2.766.78
Fixed
- Quando l'esportazione SVG ricade su una famiglia di font generica per un font non installato, ora nomina prima un volto comune di quel tipo: Times New Roman prima di
serif, Arial prima disans-serife Courier New prima dimonospace. Un browser sceglie il volto per una famiglia generica nuda dalle proprie impostazioni di lingua, e i browser cinesi o giapponesi sceglievano font CJK le cui lettere latine larghe si sovrapponevano alle posizioni prese dal PDF
Version 2.766.77
Fixed
- L'esportazione SVG ora nomina le famiglie di font cinesi installate per i font noti con i loro nomi GB2312 storici, come
KaiTi_GB2312o la sua grafia cinese. Le applicazioni Windows raggiungono questi font tramite i font substitute del sistema, ma i browser no, quindi quel testo compariva nel font predefinito del browser - Un font nominato in una sola lingua riceve anche l'altro nome della famiglia installata, per esempio SimHei insieme al suo nome cinese, e una famiglia generica che corrisponde al suo stile
Version 2.766.76
Added
THPDFGlyphRecordhaGlyphEndXeGlyphEndY, la fine in page space della larghezza propria del glifo lungo la baseline, senza spaziatura tra caratteri e tra parole
Fixed
- L'estrazione del testo di pagina ora separa le parole che un documento distanzia spostando la posizione del testo invece di mostrare un carattere spazio. Molti producer scrivono
[(PDF)-240(Reference)]o collocano ogni parola con il proprio operatore di posizionamento, e queste parole prima si attaccavano insieme comePDFReference - Uno spazio viene aggiunto dove il gap dopo la larghezza propria del glifo supera 0.15 dell'altezza del testo, misurato in unità di pagina così che il testo dimensionato attraverso la matrice del testo sia trattato come quello dimensionato attraverso la dimensione del font
- Kerning, spaziatura leggermente allargata, spaziatura tra caratteri stretta che gli aggiustamenti di posizione restituiscono, testo in overprint e veri caratteri spazio restano come sono, e tra due caratteri cinesi, giapponesi o coreani non viene aggiunto spazio per quanto lontani li metta la giustificazione
Version 2.766.75
Fixed
- L'estrazione del testo, l'esportazione SVG e il rendering ora riconoscono i nomi dei glifi del font Symbol, come
copyrightsans,registerserif,trademarksanse i pezzi di parentesi tonde, quadre e graffe grandi (parenlefttp,braceex,integralex, ...). I font Symbol in subset spesso ricodificano questi nomi, e i caratteri uscivano come raw control code - Sono riconosciuti anche tutti i nomi dei glifi ITC Zapf Dingbats (
a1aa206), così i segni di spunta, le croci, le frecce e i numeri cerchiati che un font seleziona attraverso questi nomi, come spesso fanno i campi form e gli elenchi puntati, vengono estratti come i loro caratteri Unicode - La ricerca del nome di glifo per un carattere continua a preferire il nome comune, come
arrowrightospade, a un nome ZapfDingbats
Version 2.766.74
Fixed
HPDFExtractGlyphsViaDevicenon fallisce più con un'operazione su puntatore non valido. Il device di estrazione del testo che crea è reference counted, e la funzione lo liberava anche esplicitamente, così ogni chiamata finiva liberando il device una seconda volta
Version 2.766.73
Fixed
- L'estrazione del testo ora ripristina lo stato del testo con
Qcome richiede la specifica (ISO 32000-1 9.3.1). Prima veniva ripristinata solo la trasformazione, così un font, una spaziatura tra caratteri o un leading impostati dentroq...Qrestavano in vigore per il testo che seguiva - Quando il font selezionato dentro
q...Qusava codici a due byte e il font fuori da esso codici a un byte, il testo dopoQveniva decodificato come codici a due byte e si perdeva. Word e producer simili scrivono le pagine in questo modo, tipicamente perdendo i punti di riempimento dell'indice e le parole latine tra le parti cinesi - La correzione copre sia l'API del testo di pagina sia l'interfaccia di estrazione del testo basata su device
Version 2.766.72
Fixed
- Il testo disegnato dopo
RestoreStateora ha sempre il suo font selezionato. La pagina salta una selezione di font che ripete l'ultima scritta, ma non teneva conto cheRestoreState(l'operatoreQ) riporta il lettore al font in vigore prima diSaveState. Il testo mostrato dopoRestoreStatenel font scelto dentro la coppia usciva senza font o con il font sbagliato, così i viewer potevano scartarlo e l'estrazione del testo non poteva leggerlo - Spaziatura tra caratteri, spaziatura tra parole, scaling orizzontale e leading seguono
SaveStateeRestoreStateallo stesso modo, così un valore impostato di nuovo dopoRestoreStateviene scritto invece di essere saltato mentre il lettore è già tornato al valore precedente - Selezionare un font Type 3 non fa più saltare la successiva selezione del font precedente
- I documenti XPS convertiti in PDF erano interessati, perché ogni sequenza di glifi viene disegnata dentro il proprio stato grafico salvato
Version 2.766.71
Fixed
- L'estrazione del testo e l'esportazione SVG leggevano i codici di un simple font (Type 1, TrueType o Type 3) come due byte quando la sua CMap
/ToUnicodedichiarava un codespace a due byte, come alcuni producer scrivono per ogni font. I codici dei simple font sono sempre di un byte (ISO 32000-1 9.6.6), quindi ogni coppia di caratteri veniva presa come un codice sconosciuto e gran parte del testo spariva, lasciando solo stringhe di un carattere singolo
Version 2.766.70
Fixed
- L'esportazione SVG spostava il testo degli operandi di
Td,TD,T*,'e"in unità di pagina invece che in text space (ISO 32000-1 9.4.2). Il testo la cui dimensione viene dalla matrice del testo, con1 Tfe unaTmscalata come spesso lo scrivono i word processor, aveva le righe impilate una sopra l'altra vicino alla prima baseline; ora è composto come nel PDF - La stessa correzione vale per l'estrattore di testo basato su content device
THPDFTextExtractDevice
Version 2.766.69
Fixed
- Il renderer di pagina passava a Windows i nomi di font che usano escape
#xxcon gli escape addosso, così i font non incorporati nominati in quel modo, com'è comune per i font CJK come KaiTi_GB2312 scritto in caratteri cinesi, non corrispondevano a nessun font installato e venivano disegnati in un volto sostitutivo. Gli escape ora vengono decodificati; i nomi UTF-8 conservano i loro caratteri e gli altri byte vengono letti nella code page di sistema
Version 2.766.68
Fixed
- L'esportazione SVG scriveva i nomi di font che usano escape
#xxcome gli escape stessi, così i nomi di font CJK memorizzati come byte UTF-8 (come il nome KaiTi_GB2312 in caratteri cinesi) arrivavano afont-familycome#e6#a5#b7...e non corrispondevano mai a un font installato. Gli escape ora vengono decodificati; un nome che è UTF-8 valido viene conservato, e i byte di altre encoding vengono scartati come prima
Version 2.766.67
Fixed
- L'esportazione SVG non ripristinava lo stato del testo a
Q: font, dimensione, spaziatura, scaling, leading, rise e render mode impostati dentroq...Qsi travasavano sul testo dopo di esso. Le pagine che ingrossano un'intestazione con2 Trdentro uno stato salvato disegnavano tutto il testo del corpo seguente stroke e pesante. Lo stato del testo ora viene salvato e ripristinato insieme al resto dello stato grafico (ISO 32000-1 9.3.1)
Version 2.766.66
Fixed
- L'esportazione SVG tracciava il testo nei render mode con stroke (1, 2, 5 e 6) senza uno spessore di stroke, così si applicava il default SVG di un'unità di text space; il testo che i producer PDF ingrossano con uno stroke sottile, come
2 Tr 0.25 w, usciva molto più pesante. Lo spessore della linea ora viene convertito dallo user space nello spazio dell'elemento di testo, uno spessore zero dà una linea di un pixel, e il line join viene conservato
Version 2.766.65
Fixed
- I documenti il cui trailer dà
/Encryptcome dizionario diretto invece che come riferimento, come producono alcuni writer PDF, venivano caricati come non cifrati: anche con la password giusta le loro pagine uscivano bianche, estrazione del testo ed esportazione SVG non restituivano niente, eSaveLoadedDocumentscriveva un file danneggiato che perdava/Encryptma teneva gli stream cifrati. Ora si aprono, decifrano e salvano come i documenti con un dizionario di cifratura indiretto - Il loader delle cross-reference tagliava il trailer al primo
>>, così le voci dopo un dizionario annidato nel trailer si perdevano; ora legge il trailer fino al suo delimitatore di chiusura corrispondente
Version 2.766.64
Fixed
- Rendering, esportazione SVG, viewer e stampa mostravano l'intero
/MediaBoxdi una pagina caricata. Una pagina viene mostrata e stampata attraverso il suo/CropBox, ritagliato sul/MediaBox(ISO 32000-1 14.11.2), così le pagine con un crop box uscivano troppo grandi, spostate e con contenuto destinato a restare nascosto RenderLoadedPageToBitmap, i renderer a tile, a bande, metafile e device context,BuildLoadedPageSVG, la geometria di pagina del viewer, gli highlight e gli snapshot di regione, e la stampa ora coprono il box visibile; le pagine senza/CropBoxrestano invariate
Added
THotPDF.GetLoadedPageVisibleBoxrestituisce il box visibile di una pagina caricata, il suo/CropBoxritagliato sul suo/MediaBoxTHPDFPageDisplayList.CropBoxdà lo stesso box per una display list compilata
Version 2.766.63
Fixed
- La lista dei glifi incorporata veniva cercata fino a un conteggio 13 voci più corto della tabella, così i nomi dei glifi che ordinano per ultimi (
y,z,zero,zeta,yen,ydieresis,zcarone altri) non venivano mai trovati. L'estrazione del testo ignorava le voci/Differencesdi un font che li nominavano, e il renderer di pagina disegnava y, z e 0 dei font CFF incorporati conWinAnsiEncodingoMacRomanEncodingin un font di sistema sostitutivo - La ricerca del nome di glifo di un accento come U+0060 restituiva il nome maiuscoletto di MacExpertEncoding (
Gravesmall) invece digrave, così anche quegli accenti si perdevano nei font CFF incorporati
Version 2.766.62
Fixed
- Il renderer di pagina usava lo spessore delle linee e le lunghezze dei dash come pixel del device invece che come unità di user space (ISO 32000-1 8.4.3.2 e 8.4.3.6); le linee mantenevano la stessa larghezza in pixel a ogni risoluzione e ignoravano qualsiasi scaling
cm. Le slide esportate attraverso macOS Quartz, che traccia le forme con uno spessore in EMU sotto una scala 1/12700, restavano coperte interamente dal colore dello stroke - Lo spessore dello stroke e i dash ora seguono la scala della CTM in vigore quando il path viene tracciato, anche per il testo disegnato in un render mode con stroke
Version 2.766.61
Fixed
- L'esportazione SVG saltava gli shading Type 1 function-based (ISO 32000-1 8.7.4.5.2), sia verniciati con
shsia usati in uno shading pattern; ora campiona la funzione dello shading sul suo/Domainin un'immagine PNG incorporata collocata attraverso la/Matrixdello shading, ritagliata sul suo/BBox, con il colore di sfondo del pattern sotto
Version 2.766.60
Fixed
- Il renderer di pagina verniciava il colore
/Backgrounddi uno shading mesh mostrato con l'operatoresh, che il PDF ignora (ISO 32000-1 8.7.4.5.1), così tutta l'area di ritaglio attorno al mesh prendeva quel colore - Il colore di sfondo degli shading pattern function-based, assiali e radiali non veniva verniciato dal renderer di pagina; ora riempie l'area del pattern prima dello shading, così appare ovunque lo shading non arrivi
- L'esportazione SVG ora vernicia il colore di sfondo degli shading pattern allo stesso modo e, come il renderer, lo ignora per
sh
Version 2.766.59
Fixed
- Il renderer di pagina ignorava il
/BBoxdegli shading function-based, assiali e radiali (ISO 32000-1 8.7.4.5.1); uno shading esteso verniciato consho usato in uno shading pattern copriva tutta l'area di ritaglio invece di fermarsi al suo box. Gli shading mesh lo rispettavano già
Version 2.766.58
Fixed
- L'esportazione SVG scriveva il testo nei font Type 3 come testo SVG in un font installato, così le pagine che disegnano il loro testo o i loro simboli con procedure di glifo mostravano le forme sbagliate; ora disegna la procedura di ogni glifo, collocata attraverso la
/FontMatrixdel font, la dimensione del font e la matrice del testo (ISO 32000-1 9.6.5) - I glifi Type 3 che iniziano con
d1vengono verniciati nel colore di riempimento corrente, e i glifi che impostano i propri colori li conservano
Version 2.766.57
Fixed
- L'estrazione del testo e l'esportazione SVG prendevano le
/Widthsdi un font Type 3 come millesimi di em, sebbene siano in glyph space e scalate dalla/FontMatrixdel font (ISO 32000-1 9.6.5); i glifi di un font con matrice[0.01 0 0 0.01 0 0]venivano collocati a un decimo del loro avanzamento, il che fuse anche le parole nel testo estratto
Version 2.766.56
Fixed
- Il rendering di una pagina caricata leggeva ogni font Type 0 come se usasse
Identity-H, due byte per codice e ogni codice il proprio CID. I font codificati con le CMap UCS2 e UTF16 predefinite delle collezioni cinese, giapponese e coreana, comeUniGB-UCS2-H, o con una CMap incorporata ora mappano i loro codici su CID, così le larghezze/We i glifi incorporati vengono cercati ai CID giusti; prima, per esempio, le lettere latine minuscole in un testoSTSong-Lighterano distanziate un em intero - I codici vengono letti secondo i codespace range della CMap, così i codici a un byte e a quattro byte (coppie surrogate) vengono letti per intero, e i nomi che finiscono in
-Vselezionano la scrittura verticale
Version 2.766.55
Fixed
- Il rendering di una pagina caricata disegnava in un volto sostitutivo i font non incorporati che portano nel nome una parte di stile o una grafia PostScript, come
TimesNewRoman,Bold,TimesNewRomanPS-BoldMT,Arial,BoldItalicoSegoeUI-Semibold; la parte famiglia del nome ora viene cercata tra i font installati, anche con spazi tra le sue parole (Times New Roman, Segoe UI), e lo stile viene dal nome e dal font descriptor
Version 2.766.54
Fixed
- I font standard senza array
/Widths, che la ISO 32000-1 9.6.2.2 consente per i 14 font standard, venivano composti a un avanzamento fisso di mezzo em nel rendering di una pagina caricata, nell'esportazione in SVG o nell'estrazione del suo testo, così le lettere si accalcavano; le famiglie Helvetica, Times e Courier, anche sotto i nomi Arial, TimesNewRoman e CourierNew, ora prendono le loro larghezze da Arial, Times New Roman e Courier New installati, che condividono le loro metriche - Un font Type 1 standard senza
/Encodingora decodifica attraverso la sua StandardEncoding implicita, così per esempio il codice 39 viene letto come virgoletta singola di chiusura
Version 2.766.53
Fixed
- Il rendering di una pagina caricata ignorava l'array
/Widthsdi un font quando era un oggetto indiretto, come lo scrivono molti producer, e componeva il testo a un avanzamento fisso di mezzo em; quel testo ora è spaziato secondo le sue larghezze - I font descriptor dati come oggetti indiretti ora vengono letti nel rendering, così i flag
ForceBoldeItalice l'angolo corsivo dei font non incorporati fanno effetto - Il flag
SmallCapnon rende più il testo in grassetto: il grassetto ora segue il flagForceBold(ISO 32000-1 Table 123)
Version 2.766.52
Fixed
- Il rendering di una pagina caricata ora ritaglia sul testo mostrato nei render mode da 4 a 7 (ISO 32000-1 9.3.6): i glifi diventano parte del clipping path alla fine dell'oggetto di testo, finché lo stato grafico non viene ripristinato. Prima il testo in mode 7 veniva ignorato e uno shading o un'immagine destinati a trasparire attraverso le lettere coprivano tutta l'area, e i mode da 4 a 6 verniciavano il testo senza ritaglio
- Il testo di ritaglio è preso dagli stessi contorni di glifo del testo verniciato, font incorporati e glifi Type 3 inclusi
Version 2.766.51
Fixed
- L'esportazione SVG ora ritaglia sul testo mostrato nei render mode da 4 a 7 (ISO 32000-1 9.3.6): i glifi diventano un clipping path SVG dalla fine dell'oggetto di testo alla fine dello stato grafico, così uno shading o un'immagine disegnati attraverso il testo compaiono solo dentro le lettere
- Il testo in render mode 7 non va più perso senza nulla di ritagliato, e i mode da 4 a 6 riempiono o tracciano comunque il testo come fanno i mode da 0 a 2
Version 2.766.50
Fixed
- Gli shading assiali, radiali e function-based la cui
/Functionè un array di funzioni a un solo output, una per componente di colore (ISO 32000-1 8.7.4.5.1), non venivano disegnati nel rendering di una pagina caricata; ora vengono disegnati, con le funzioni dell'array date direttamente o come oggetti indiretti - L'esportazione SVG scrive questi shading assiali e radiali come gradienti, incluso quando riempiono un path attraverso uno shading pattern
Version 2.766.49
Fixed
- L'esportazione SVG scriveva il testo grassetto e corsivo nello stile regolare: il testo ora riceve
font-weight="bold"efont-style="italic"dalla parte di stile del nome del font, comeArial-BoldMT,Helvetica-ObliqueoMinionPro-It, e da peso, flag e angolo corsivo del font descriptor - I font fuori dalle 14 famiglie standard venivano scritti con la parte di stile dentro il nome della famiglia (
SegoeUI-Semibold), che non corrisponde a nessun font installato; la famiglia ora viene nominata da sola e con spazi tra le sue parole (SegoeUI, Segoe UI), seguita da una famiglia generica ricavata dai flag del descriptor o dal nome
Version 2.766.48
Fixed
- L'esportazione SVG disegnava il contenuto dei form XObject in nero invece che con i colori di fill e stroke in vigore dove la form viene verniciata (ISO 32000-1 8.10.1); una
Qdentro la form ora ripristina anche quei colori - I content device possono iniziare contenuto annidato dai colori di chi li chiama attraverso la nuova interfaccia
IHPDFContentInheritedColorDevice
Version 2.766.47
Added
- L'esportazione SVG ora riempie i path che usano un tiling pattern con un
<pattern>SVG che ripete la cella del pattern al suo passoXStepeYStep, ritagliata sul/BBoxdella cella; prima questi path venivano riempiti di nero o mantenevano il colore precedente - I tiling pattern non colorati (
PaintType2) verniciano la cella nel colore dato con il pattern, come le componenti in/CS0 cs 0 0 1 /P1 scn - I path riempiti con uno shading pattern prendono lo shading assiale, radiale o mesh del pattern, ritagliato sul path
- La matrice del pattern si applica nello spazio della pagina o della form che usa il pattern (ISO 32000-1 8.7.2), così i pattern non scalano né si muovono con la matrice di trasformazione corrente, e una
Qripristina un pattern salvato conq - I content device possono ricevere selezioni di pattern attraverso la nuova interfaccia
IHPDFContentPatternDevice
Version 2.766.46
Added
- Le immagini con un array
/Maska color key (ISO 32000-1 8.9.6.4) ora vengono mascherate quando una pagina caricata viene renderizzata: i pixel le cui componenti cadono tutte dentro gli intervalli delle key vengono lasciati non verniciati, così la pagina traspare - L'esportazione SVG applica le stesse mask a color key e scrive queste immagini come immagini PNG con canale alpha
- La key viene confrontata con i campioni come sono memorizzati, così un'immagine Indexed maschera per indice di palette anche quando due voci condividono un colore, e sono coperte le immagini a 1, 2 e 4 bit per componente
- Il nuovo metodo
DecodeLoadedImageColorKeyMaskrestituisce la mask di un'immagine caricata come bitmap in bianco e nero; copre le immagini Flate, LZW e non filtrate, perché i codec lossy non conservano valori di campione esatti
Version 2.766.45
Changed
CompressDocumenteCompressLoadedDocumentlasciano che ogni object stream contenga fino a 250 oggetti invece di 100; contenitori meno numerosi e più grandi comprimono meglio e hanno bisogno di meno dizionari- I PDF caricati che erano già stati scritti in forma compatta con object stream ora escono circa della dimensione dell'originale, per lo più leggermente più piccoli, invece che leggermente più grandi
- Un limite impostato tramite
ConfigureAdaptiveObjectStreamPackingviene conservato,CompressDocumentripristina il limite aEndDoc, e i salvataggi con object stream semplici mantengono 100 oggetti per contenitore
Version 2.766.44
Changed
- Lo xref stream dei file scritti con object stream usa la larghezza di campo minima di cui ogni colonna ha bisogno, così gli offset dei file sotto i 16 MB occupano 3 byte invece di 4 (ISO 32000-1 7.5.8.2), e il suo dizionario viene scritto in forma compatta
- I file scritti con uno xref stream ma senza object stream restano invariati
Version 2.766.43
Changed
- I file non cifrati scritti con object stream ora impacchettano nel proprio object stream anche il catalogo del documento e il dizionario delle informazioni del documento, dove vengono compressi; la ISO 32000-1 7.5.7 tiene fuori solo il dizionario della cifratura
- I file cifrati mantengono entrambi i dizionari al livello principale, come prima
Version 2.766.42
Changed
- I file scritti con object stream, inclusi quelli prodotti da
CompressDocumenteCompressLoadedDocument, scrivono dizionari e array in forma compatta, lasciando fuori gli spazi e i ritorni a capo di cui la sintassi PDF non ha bisogno (ISO 32000-1 7.2.2); ci guadagnano soprattutto i dizionari degli stream, che non possono finire negli object stream e restano non compressi - I dizionari delle firme e il dizionario della cifratura conservano il loro layout disteso, così la firma di un documento scritto con object stream funziona come prima
- I file scritti senza object stream restano invariati byte per byte
Version 2.766.41
Fixed
- I file PDF scritti con object stream non aprono più con l'header
%PDF-e con la riga di commento binario duplicati; il problema riguardava ogni salvataggio conUseObjectStreams,CompressDocumentoCompressLoadedDocument - I visualizzatori tolleravano l'header ripetuto, ma validatori rigorosi potevano segnalarlo, e costava 15 byte per file
Version 2.766.40
Fixed
- I PDF caricati che contengono un numero nudo in un object stream, come molti producer memorizzano le lunghezze degli stream, ora si possono modificare e salvare; ogni modifica interrompeva il salvataggio con "Cannot rewrite compressed object N: the source member could not be loaded"
- Un numero del genere ora viene letto come numero; prima il parser andava a cercare un riferimento indiretto oltre la fine del membro e rinunciava, così il membro non poteva essere caricato affatto
- Il salvataggio di un file del genere senza modifiche non era interessato, perché un file invariato viene copiato così com'è
Version 2.766.39
Fixed
- Le annotazioni timbro nei documenti PDF/A-2 e successivi e PDF/X-6 mostravano solo la cornice, senza il nome del timbro tipo APPROVED o CONFIDENTIAL
- Il nome ora viene disegnato nel font corrente della pagina, che viene incorporato insieme al testo della pagina, in maiuscolo e con il colore dell'annotazione, centrato nel rettangolo
- I nomi lunghi come NOTFORPUBLICRELEASE vengono impostati a corpo più piccolo per stare nella larghezza del rettangolo
- I documenti continuano a superare la validazione PDF/A; i timbri negli altri documenti vengono scritti come prima
Version 2.766.38
Added
- Un nuovo overload di
CompressLoadedDocumentcon opzioni che riduce un PDF caricato alle dimensioni minime senza cambiarne l'aspetto: scarta le risorse di pagina inutilizzate, fonde i font e le form identiche, fa il subsetting dei font incorporati, ricomprime gli stream con Flate e scrive il salvataggio successivo con object stream - Ogni passaggio è lossless e le immagini non vengono ricampionate né ricomprese; un documento di tre pagine che incorpora i font Arial e SimSun completi scende da circa 10 MB a circa 20 KB, e altri tre PDF di esempio si sono ridotti del 15-50%
- I documenti con campi firma vengono rifiutati per impostazione predefinita e lasciati invariati, perché ogni passaggio riscrive byte firmati;
AllowSignatureInvalidationli comprime comunque SubsetLoadedFontsguadagna un'opzioneCompactTrueTypeSubsets, disattivata per impostazione predefinita, che costruisce subset compatti dei font TrueType usati attraverso font CIDFontType2 con mappatura CID identity; i color font e i font con/CIDSetmantengono il subset normaleCompressLoadedDocumentsenza parametri conserva il suo comportamento di ricomprimere solo gli stream non filtrati
Version 2.766.37
Added
- Una nuova proprietà
CompressDocument, disattivata per impostazione predefinita: un solo interruttore che scrive il prossimo documento alle dimensioni minime senza cambiarne l'aspetto - Per quel documento attiva la compressione Flate al livello massimo, uno xref stream con object stream (ISO 32000-1 7.5.7 e 7.5.8), il subsetting dei font e i subset compatti dei font; un documento di tre pagine con testo misto inglese e cinese scende da circa 10 MB a circa 20 KB
- Gli object stream richiedono PDF 1.5, quindi una
Versionpiù vecchia viene portata a 1.5 a meno che la versione sia bloccata; l'output PDF/A-1 conserva la sua tabella xref classica - Le impostazioni che avete scelto restano intoccate: dopo
EndDoc,Compression,CompressionLevel,UseXRefStream,UseObjectStreams, le opzioni di subsetting dei font e la versione si rileggono come le avete impostate - Le immagini non vengono ricampionate né ricomprese
Version 2.766.36
Added
- Una nuova proprietà
CompactFontSubsetting, disattivata per impostazione predefinita: i subset dei font rinumerano i glifi che conservano, così il font incorporato non porta più una voce per ogni glifo del font di origine; uno stream/CIDToGIDMapesplicito mappa i codici glifo della pagina sui glifi rinumerati (ISO 32000-1 9.7.4.2) - Sono i font CJK a restringersi di più: due caratteri cinesi in SimSun occupano circa 3 KB di dati font invece di circa 25 KB, e un documento in Microsoft YaHei scende da 114 KB a 6 KB
- Si applica ai font TrueType scritti come font Type 0 quando
EnableFontSubsettingè attivo, e al font registrato conRegisterUnicodeTTF, che finora riceveva subset compatti solo sotto PDF/A - Contenuto della pagina, larghezze dei glifi ed estrazione del testo restano invariati; i font OpenType-CFF mantengono il subset normale, e un font che non può essere compattato ripiega su quello
Version 2.766.35
Fixed
- Il testo disegnato con un avanzamento esplicito per ogni carattere non trasla più dopo un carattere fuori dal Basic Multilingual Plane, come un simbolo musicale o un emoji, quando il font Unicode registrato lo copre; prima ogni carattere successivo ereditava l'avanzamento del vicino, mentre ora il carattere avanza della somma delle sue due voci
- I box di testo Unicode giustificati che contengono caratteri del genere si allineano al bordo del box, e il sottolineato o il barrato di quel testo è lungo quanto il testo
Version 2.766.34
Added
- L'esportazione SVG ora disegna le image mask (
/ImageMask), incluse quelle inline, come stencil nel colore di riempimento corrente: le parti non verniciate sono trasparenti invece di essere disegnate come un'immagine in bianco e nero - Le immagini con una soft mask
/SMasko con uno stencil/Maskesplicito vengono esportate come immagini PNG con canale alpha, così le parti mascherate non coprono più ciò che sta dietro - Un array
/Decode [1 0]su una mask o su una image mask viene rispettato, e una mask più fine della propria immagine conserva il suo dettaglio
Version 2.766.33
Fixed
- Il rendering delle pagine ora rispetta lo stencil
/Maskesplicito di un'immagine: le parti coperte dalla mask restano non verniciate invece di disegnare l'intera immagine, incluso quando l'immagine è ruotata o specchiata - Un array
/Decode [1 0]sulla mask inverte quali parti vengono conservate - Le soft mask e le mask più fine della propria immagine vengono applicate alla risoluzione della mask, così una mask 1-bit dettagliata su una foto a bassa risoluzione conserva i suoi bordi
Version 2.766.32
Fixed
- Il rendering delle pagine ora disegna le immagini attraverso la matrice di trasformazione completa: le immagini ruotate di un quarto di giro o di qualsiasi altro angolo, le immagini specchiate e ogni immagine su una pagina con
/Rotatenon vengono più disegnate dritte e non specchiate dentro il loro bounding box - Le image mask (
/ImageMask true) ora vengono verniciate come stencil nel colore di riempimento corrente, con bordi anti-alias quando vengono ridotte, invece di essere disegnate come un'immagine in scala di grigi - Le image mask con
/Decode [1 0]ora verniciano i campioni di valore 1, come specifica il PDF - Le image mask inline (
BI /IM true) tornano a essere disegnate, e il loro array/Dviene rispettato - Le immagini con soft mask conservano la mask quando vengono ruotate o specchiate
Version 2.766.31
Added
- L'esportazione SVG ora converte i colori impostati con
k/K(DeviceCMYK) e concs/sc/scnin qualsiasi color space con nome: i colori ICCBased, calibrati, Lab, Indexed, Separation e DeviceN escono come li mostra il renderer della pagina invece che in nero - Selezionare un color space con
cs/CSora ne imposta il colore iniziale, per esempio la tinta piena per un colore spot, e il ripristino dello stato grafico conQrecupera un colore impostato in questo modo - I color space che riferiscono profili ICC, tabelle di lookup o funzioni di tinta per riferimento vengono risolti attraverso il documento esportato durante l'esportazione SVG
- L'enumerazione dei percorsi ora riporta i colori di riempimento e di tratto CMYK invece di conservare il colore precedente
Version 2.766.30
Fixed
- THPDFEmfPatcher.RenderEmfDirect disegna le bitmap di un enhanced metafile alle stesse dimensioni e posizione a qualsiasi Resolution; con una Resolution diversa da 72 uscivano scalate di 72 / Resolution
Version 2.766.29
Added
- L'esportazione SVG ora applica i tracciati di ritaglio
WeW*: ciascuno diventa una clip path SVG che copre ciò che viene disegnato dopo di esso finché lo stato grafico non viene ripristinato, così immagini, sfumature e percorsi che un PDF ritaglia non vengono più disegnati per intero - I Form XObject vengono ritagliati al loro
/BBoxnell'esportazione SVG, e le sfumature assiali e radiali al loro/BBox - Il ritaglio even-odd (
W*) conserva la sua regola di riempimento, e un percorso verniciato insieme aWviene disegnato prima che il nuovo ritaglio entri in vigore, come specifica il PDF
Version 2.766.28
Fixed
- I grafici disegnati con DrawChart conservano il loro layout a qualsiasi Resolution; margini, titoli, etichette degli assi e larghezze di linea sono valori in punti e si restringevano con la Resolution
- Il font predefinito di una nuova pagina, e di una pagina tornata corrente, è 12 punti a qualsiasi Resolution invece di 12 unità di disegno
- L'overlay diagnostico del layout conserva larghezza di linea e dimensione delle etichette a qualsiasi Resolution
Version 2.766.27
Fixed
- DrawInlineImage e DrawFormXObject dimensionano immagine o form in unità di disegno, come la loro posizione; con una Resolution diversa da 72 larghezza e altezza venivano prese come punti, così l'oggetto usciva troppo grande
Version 2.766.26
Fixed
- Una pagina che torna corrente attraverso CurrentPageNumber continua a disegnare nelle unità in cui è stata impaginata; con una Resolution diversa da 72 passava ai punti, così tutto ciò che si disegnava sopra dopo usciva con dimensione e posizione sbagliate
- La pagina conserva anche la propria Resolution quando la si rivisita
Version 2.766.25
Fixed
- Le immagini posizionate con ShowImage conservano la loro dimensione su una pagina dimensionata attraverso Width e Height quando la Resolution del documento non è 72; a Resolution 144 uscivano alla metà della dimensione e spostate
- ExtTextOut posiziona ogni carattere agli avanzamenti indicati su una pagina del genere invece che alla metà di essi
- Le sequenze di glifi incorporati conservano i propri offset e avanzamenti di glifo su una pagina del genere
Version 2.766.24
Added
- L'esportazione SVG ora rispetta la voce
/Extenddelle sfumature assiali e radiali: un'estremità non estesa, che è il comportamento predefinito, resta non verniciata come nel PDF invece di spargere il proprio colore finale su tutto il ritaglio - Per le sfumature radiali questo lascia vuoto anche l'interno del cerchio di partenza, a meno che la partenza sia estesa
Version 2.766.23
Fixed
- Il flattening della rotazione di pagina ora ruota con la pagina anche gli appearance stream delle annotazioni, così le annotazioni con appearance precalcolato o sottoposte a flattening si vedono come sulla pagina ruotata invece di restare schiacciate di lato nel loro rettangolo ruotato
- La rotazione dei widget (
/MK /R) viene corretta in base alla rotazione della pagina, così le appearance dei campi modulo rigenerate dopo il flattening conservano il loro orientamento - Le annotazioni con il flag NoRotate restano dritte e conservano la dimensione dopo il flattening, fermate all'angolo in alto a sinistra come i visualizzatori le mostrano su una pagina ruotata
Version 2.766.22
Fixed
- Il flattening della rotazione di pagina su un PDF con tag non ruota più due volte il rettangolo di un'annotazione quando l'albero della struttura viene raggiunto prima dell'albero delle pagine
- Il flattening della rotazione di pagina non ruota più il bounding box dei Form XObject usati sulla pagina; la loro geometria vive nello spazio della form e la rotazione di pagina si applica già a loro attraverso la trasformazione del contenuto
- I bounding box di layout degli elementi di struttura che appartengono a un'altra pagina non vengono più modificati quando una pagina viene flattenata
Version 2.766.21
Fixed
- La lettura del bleed, trim o art box di una pagina caricata non raccoglie più un
/BleedBox,/TrimBoxo/ArtBoxpiazzato su un nodo/Pagespadre; questi box non sono ereditabili nel PDF, così una pagina senza la propria voce ora riporta il proprio crop box come richiede la specifica - Il flattening della rotazione di pagina non copia più sulla pagina un bleed, trim o art box del genere definito al livello padre
Version 2.766.20
Fixed
- Il testo disegnato sulla Canvas della pagina o in un metafile piazzato con ShowMetafile conserva la sua dimensione quando la Resolution del documento non è 72; a Resolution 144 usciva alla metà della propria dimensione mentre il resto del disegno era corretto
- La Canvas della pagina e ShowMetafile disegnano alla dimensione giusta su una pagina dimensionata attraverso Width e Height, che disegna in punti; a Resolution 144 il disegno usciva il doppio
- La Canvas della pagina e ShowMetafile rispettano anche una Resolution di pagina impostata sulla pagina stessa invece di restringere il disegno di conseguenza
Version 2.766.19
Fixed
- I box di testo Unicode giustificati ora terminano al bordo del box quando è impostata la spaziatura dei caratteri; ogni carattere riceveva la spaziatura sopra la propria posizione giustificata, così ogni linea superava il bordo destro della spaziatura moltiplicata per il numero di caratteri
- I box di testo Unicode giustificati con scalatura orizzontale riempiono di nuovo tutta la larghezza del box invece di fermarsi prima del fattore di scalatura
- La spaziatura delle parole ora conta nella larghezza naturale di una linea giustificata, la stessa larghezza a cui la linea era stata spezzata
- Il testo disegnato con un avanzamento esplicito per ogni carattere cade in quelle posizioni qualunque spaziatura dei caratteri o scalatura orizzontale sia attiva
Version 2.766.18
Fixed
- Il flattening della rotazione di pagina ora ruota in senso orario le pagine con
/Rotate 90e/Rotate 270, così la pagina flattenata assomiglia esattamente all'originale ruotato invece di capovolgersi rispetto a esso - Annotazioni, destinazioni dei collegamenti e geometria della struttura si muovono con la pagina allo stesso modo
- Il flattening di una pagina senza CropBox non aggiunge più un CropBox che riduceva la pagina a un quadrato; vengono ruotati solo i box di pagina che la pagina ha davvero
Version 2.766.17
Fixed
- Le catene di fallback dei font ora trovano facce come SimSun e Microsoft YaHei sui sistemi Windows che le riportano con un nome localizzato, così il testo CJK misto in
WideTextOutBox,WideTextOutBoxExeTextOutWithFallbackviene disegnato nella faccia di fallback invece di mostrare box vuoti - Il testo il cui font è una di queste facce non viene più spezzato in sequenze di fallback né segnalato come irrisolto dalla diagnostica dei glifi irrisolti
- Una faccia può essere elencata in una catena con qualsiasi nome di famiglia che porta, in qualsiasi lingua; una faccia che Windows sostituisce solo con un altro font resta comunque scartata
Version 2.766.16
Fixed
- La composizione N-up ora piazza le pagine con
/Rotate 90e/Rotate 270ruotate in senso orario dentro le proprie celle; prima venivano ruotate nel verso opposto e spinte fuori dalla cella, spesso fuori dal foglio - Le pagine con
/Rotate 180ora vengono ruotate sul foglio invece di essere composte dritte - La composizione N-up ora rispetta i box di pagina e il
/Rotateereditati dall'albero delle pagine, così queste pagine non vengono più saltate né composte senza rotazione - Le pagine vuote inserite in un documento caricato, compresi i fogli N-up composti, non vengono più ruotate o ritagliate da un
/Rotateo/CropBoxereditato dall'albero delle pagine
Version 2.766.15
Fixed
HPDFTokenizeContentStreamAppendora può riutilizzare un array di token dopo che il suo conteggio è stato riportato a zero: i token rimasti dalla passata precedente vengono rilasciati prima, così le loro stringhe non finiscono più in leak e i loro item di array o i dati di immagine inline non compaiono più sui nuovi token- Accodare molti content stream piccoli a un solo array di token ora fa crescere l'array almeno del doppio invece di riallocarlo e spostarlo a ogni append, che teneva lente a compilarsi le pagine costruite da migliaia di piccoli stream
Version 2.766.14
Fixed
- Le pagine con
/Rotate 90o/Rotate 270ora vengono renderizzate ruotate in senso orario, come definisce la specifica PDF, invece che specchiate lungo la diagonale; prima l'angolo in alto a sinistra di una pagina a 90 gradi finiva in basso a destra - La correzione copre il rendering di pagine e regioni, l'esportazione bitmap, metafile e PNG o TIFF a bande, e il backend di rendering SIMD
- Le conversioni di coordinate pagina-schermo e schermo-pagina del viewer e i suoi overlay di ricerca ed evidenziazione seguono la stessa rotazione oraria, così i risultati e l'hit-testing si allineano alla pagina renderizzata
Version 2.766.13
Fixed
- L'esportazione SVG delle pagine ora scrive il testo come UTF-8, come dichiara il documento, così i caratteri accentati e CJK sopravvivono invece di diventare punti interrogativi o byte che rendono il file illeggibile; i codici di controllo che XML non ammette diventano U+FFFD
- Il testo dopo la prima sequenza di una linea, e il testo dopo una regolazione di kerning
TJ, ora viene posizionato correttamente quando la matrice del testo scala o ruota il testo, che è come molti producer PDF impostano la dimensione del font - L'innalzamento del testo e la scalatura orizzontale ora seguono una matrice del testo scalata o ruotata, e le regolazioni
TJrispettano la scalatura orizzontale - Il testo disegnato con le modalità di rendering da 4 a 6 (verniciatura e ritaglio) viene esportato invece di essere scartato, il testo invisibile sposta comunque la posizione del testo, e il testo con contorno conserva la propria opacità di contorno
- La spaziatura delle parole non viene più applicata ai codici a due byte che per caso valgono 32, e le sequenze di spazi vengono conservate così ogni carattere resta alla propria posizione
- I glifi di legatura esportano tutti i caratteri che rappresentano, e i font con codici misti a uno e due byte vengono letti codice per codice
- Le pagine il cui
/MediaBoxnon parte dall'origine ora atterrano sulla canvas SVG invece di venir spostate fuori
Version 2.766.12
Fixed
- Il disegno su
THPDFPage.Canvas, e i metafile riprodotti come grafica vettoriale conShowMetafilea una posizione e scala date, non perdono più parte dei bordi sinistro e superiore quando impostano una regione di ritaglio; ogni regione di ritaglio veniva tirata dentro di un'unità su quei due lati, così un bordo o un riempimento lungo il lato sinistro o superiore usciva più sottile dello stesso a destra o in basso - Le regioni di ritaglio ora coincidono con le stesse regioni quando vengono riempite, e coprono la stessa area a qualsiasi
THotPDF.Resolution
Version 2.766.11
Fixed
- I sottolineati e i barrati del testo Unicode disegnato con
TextOut,UnicodeTextOut,RtLTextOuteExtTextOutora coprono esattamente il testo; venivano misurati sul testo convertito alla code page di sistema, così le sequenze con lettere cirilliche, ebraiche, greche, CJK o altre fuori da quella code page ricevevano barre che si fermavano prima del testo o lo superavano - Le barre seguono anche la spaziatura dei caratteri, la spaziatura delle parole, la scalatura orizzontale e gli spostamenti passati a
ExtTextOut
Version 2.766.10
Fixed
- Gli add-on di esportazione report e griglia (FastReport, QuickReport, ReportBuilder, DevExpress e DBGrid) non si sovrascrivono più a vicenda l'output quando più esportazioni girano insieme, per esempio su un server; il loro file temporaneo prendeva il nome da un timer che cambia solo ogni 10-16 ms, così esportazioni partite insieme scrivevano lo stesso file
Version 2.766.9
Fixed
TextWidthora misura il testo come viene disegnato quando sono impostate spaziatura dei caratteri, spaziatura delle parole o scalatura orizzontale; la spaziatura non veniva scalata dalla scalatura orizzontale, la spaziatura delle parole negativa veniva ignorata e uno spazio finale non riceveva spaziatura delle parole, così la continuazione dei paragrafi, i rettangoli dei link e il testo centrato o allineato a destra finivano fuori dal testo disegnatoTextWidtheGetWideTextWidthrestituiscono la stessa larghezza per lo stesso testo
Version 2.766.8
Fixed
- Il device ReportBuilder (
TppHotPDFDevice) ora disegna il testo nativo dentro il proprio text box; il testo veniva posizionato come se la sua posizione fosse la linea di base, così ogni oggetto testo partiva una linea più in basso e la sua ultima linea usciva dal box - Il testo nativo centrato e allineato a destra viene misurato con le larghezze Unicode con cui viene disegnato, così il testo con lettere fuori dalla code page di sistema, come il cinese su un sistema occidentale, si allinea correttamente
Version 2.766.7
Fixed
- L'esportazione FastReport ora colloca il testo del memo dentro il suo memo; il testo veniva posizionato come se la sua posizione fosse la linea di base, così il testo di ogni memo partiva un'altezza di font più in basso, e il testo allineato in basso veniva disegnato sotto il memo, dove il clipping lo nascondeva
- L'allineamento verticale in alto, al centro e in basso misura tutti dall'alto della prima linea, sia per i memo semplici sia per quelli con tag HTML
Version 2.766.6
Fixed
- Il filtro di esportazione FastReport (
TfrxHotPDFExport) torna a compilare; la proprietàNotEmbeddedFontsleggeva un campo di tipo diverso, e l'esportazione nativa delle immagini usava una proprietàClippedcheTfrxPictureViewnon ha - L'esportazione nativa delle immagini ora ritaglia ogni immagine alla propria view, come fa FastReport, così un'immagine più grande della sua view non trabocca più sugli oggetti vicini
- Un'immagine centrata conserva frame e ritaglio sui limiti della view; a essere centrata è solo l'immagine stessa; prima il frame si spostava con l'immagine
Version 2.766.5
Fixed
- L'add-on DBGrid ora misura il testo delle celle con le larghezze del testo Unicode con cui lo disegna prima di tagliarlo per farlo stare in una colonna; il testo con lettere fuori dalla code page di sistema, come il cinese su un sistema occidentale, veniva misurato come punti interrogativi e sbordava dalla cella, e il testo a doppio byte su sistemi cinesi, giapponesi o coreani veniva tagliato molto prima che la cella fosse piena
- Un taglio non lascia mai metà di una coppia surrogate prima del
...
Version 2.766.4
Fixed
- L'add-on DBGrid (
TDBGridHotPDFExporteDBGridHotPDFExportToFile/ToStream) ora disegna il testo delle celle dentro le proprie celle; il testo veniva piazzato come se la sua posizione fosse la linea di base, così il testo di ogni riga sedeva sul bordo inferiore della cella e veniva tagliato dalla linea della griglia della riga successiva - Il testo dell'intestazione è centrato nella riga di intestazione, e il titolo non tocca più la cima della tabella
Version 2.766.3
Fixed
GetLoadedPDFVersionStringora restituisce%PDF-1.7e simili sui sistemi la cui locale scrive la virgola decimale; lì restituiva%PDF-1,7- Il campo
pdfVersiondiGetLoadedDocumentReportè corretto allo stesso modo
Version 2.766.2
Fixed
- L'importazione HTML (
RenderHTMLeRenderHTML5) produce la stessa pagina a qualsiasiTHotPDF.Resolution; le lunghezze CSS eMargin,BaseFontSize,ListIndenteBlockSpacingdell'importatore sono punti, ma con Resolution 144 testo, margini, liste e tabelle uscivano alla metà - Il testo e la grafica che disegnate prima e dopo l'importazione continuano a usare 1/Resolution di pollice
- I documenti costruiti alla Resolution predefinita di 72 escono esattamente come prima
Version 2.766.1
Fixed
- Le form XFA flattenate con
ApplyXFAAsAcroFormoFlattenLoadedXFAconservano posizioni, dimensioni e corpi del font dal template a qualsiasiTHotPDF.Resolution; con Resolution 144 l'intera form usciva alla metà nell'angolo in alto a sinistra della pagina - Il testo e la grafica che disegnate prima e dopo il flattening continuano a usare 1/Resolution di pollice
- I documenti costruiti alla Resolution predefinita di 72 escono esattamente come prima
Version 2.766.0
Added
THPDFPage.UserWidtheTHPDFPage.UserHeightrestituiscono la dimensione della pagina nelle unità con cui disegnate, 1/Resolutiondi pollice, così il codice di layout può confrontarla con coordinate, margini eTextWidtha qualsiasiTHotPDF.Resolution;WidtheHeightrestituiscono ancora punti, e il codice esistente legge gli stessi valori di prima
Fixed
- Con
THotPDF.Resolutionimpostata a un valore diverso da 72, i paragrafi ora vanno a capo nello spazio reale tra i propri margini e passano alla pagina successiva al margine inferiore; misuravano la pagina in punti, così a 144 un paragrafo con margini larghi poteva andare a capo dopo ogni carattere e allungarsi su troppe pagine - Un paragrafo che prosegue in una nuova pagina conserva la stessa dimensione di pagina, coordinate e dimensione del font a qualsiasi Resolution; a 144 la pagina di prosecuzione passava alle coordinate in punti e il testo su di essa usciva alla metà
THPDFTableinizia una nuova pagina solo quando una riga raggiunge il margine inferiore; a 144 una tabella piazzata nella metà inferiore della pagina metteva ogni riga su una pagina propria- L'importazione HTML impagina il testo su tutta la larghezza della pagina a qualsiasi Resolution invece che sulla metà sinistra
- I metafile disegnati centrati sulla pagina, e le regioni di ritaglio dei metafile che coprono tutta la pagina, usano la pagina intera a qualsiasi Resolution
- La diagnostica di layout per i layer di pagina e le pagine scaricate riporta la dimensione della pagina in unità di disegno
- I documenti costruiti alla Resolution predefinita di 72 escono esattamente come prima
Version 2.765.52
Fixed
- Le password AES-256 con lettere non ASCII ora funzionano anche negli altri lettori PDF; HotPDF calcolava l'hash della password nella code page di sistema, mentre la ISO 32000-2 la definisce UTF-8, così gli altri lettori rifiutavano una password con caratteri cinesi o accentati, e sono state corrette sia la revisione 5 sia la revisione 6
- Le password AES-256 più lunghe di 127 byte ora vengono tagliate a 127 byte come definisce lo standard, così i lettori che lo seguono le accettano
- HotPDF ora apre i file AES-256 di altri producer la cui password contiene lettere non ASCII
- I file che le versioni precedenti cifravano con password del genere si aprono ancora in HotPDF con la stessa password
Version 2.765.51
Fixed
- Il testo ANSI scritto dopo testo Unicode nello stesso font non compare più come box vuoti; quando una pagina disegnava testo Unicode con
TextOute poi usavaTextBoxoTextOutBoxExnella stessa faccia (per esempio Arial a un corpo diverso), il testo ANSI veniva scritto nel font Unicode e i visualizzatori non trovavano i suoi glifi, mentre ora riceve la propria risorsa font e si mostra ed estrae correttamente - Le pagine che usano solo testo ANSI o solo testo Unicode producono lo stesso output di prima
Version 2.765.50
Fixed
- I documenti cifrati con AES-256 revisione 6 (
UseAES256R6, e AES-256 del PDF 2.0) ora si aprono negli altri lettori PDF; l'hash della password veniva calcolato con il salt in ogni round e senza la voce utente sul lato owner, così qpdf, MuPDF e altri lettori rifiutavano entrambe le password, e HotPDF accettava solo i propri file - HotPDF ora apre i file revisione 6 creati da altri producer con la loro password utente o owner invece di segnalare una password errata
- L'esempio AES-256 R6 della demo Security si apre negli altri lettori
Version 2.765.49
Fixed
- I box di testo Unicode giustificati non allargano più le proprie lettere e non sbordano più dal bordo destro del box; con un font scelto per nome, come Arial, ogni linea giustificata usciva circa il doppio della larghezza del box e si sovrapponeva a ciò che stava accanto, mentre ora ogni linea giustificata termina al bordo del box
- Il testo disegnato con un avanzamento esplicito per ogni carattere ora cade dove richiesto anche in questo scenario, invece di spingere ogni carattere di una larghezza di carattere extra verso destra
Version 2.765.48
Changed
- Le demo HelloWorld, CJKAnnotations, TextOut e RtLTextOut per Delphi e C++Builder ora incorporano solo i glifi che usano; incorporavano font di sistema interi come Arial Unicode MS, così un hello world di una pagina usciva a circa 15 MB e l'esempio right-to-left a circa 30 MB, mentre le stesse pagine ora stanno tra 80 KB e 650 KB e hanno lo stesso aspetto
Version 2.765.47
Fixed
- Il testo right-to-left non esce più con lettere in ordine sbagliato in alcuni font; l'ebraico in Arial Unicode MS aveva lettere vicine scambiate in molte parole, e l'arabo in Microsoft Sans Serif non veniva affatto invertito, perché i numeri di glifo di quei font venivano scambiati per segni diacritici quando la linea veniva messa in ordine visivo
- Le linee ebraiche della demo RtLTextOut ora si leggono correttamente
Version 2.765.46
Fixed
GetWideTextWidthora include la spaziatura dei caratteri e la spaziatura delle parole con cui il testo viene disegnato, come faTextWidth; il testo Unicode con a capo automatico e centrato con spaziatura impostata veniva misurato troppo strettoTextOutHTMLora mostra la spaziatura delle parole impostata conSetWordSpacing: colloca ogni sequenza alla propria larghezza misurata, cosa che lasciava fuori la spaziatura; iword-spacingeletter-spacingCSS dell'importazione HTML passano dallo stesso layout
Version 2.765.45
Fixed
SetWordSpacingora funziona con i font incorporati. Il testo in un font incorporato viene scritto con codici carattere a due byte, e il PDF applica la spaziatura delle parole solo al codice spazio a un byte, così la spaziatura veniva ignorata in silenzio ogni volta cheFontEmbeddingera attivo o il testo richiedeva un font Unicode- La spaziatura viene aggiunta dopo ogni spazio come regolazione di posizionamento del testo, che ogni visualizzatore PDF rispetta; il testo senza spaziatura delle parole viene scritto esattamente come prima
- La riga della word-spacing della demo TextOut ora mostra lo spazio extra
Version 2.765.44
Fixed
- Le demo AnnotationInteraction per Delphi e C++Builder ora fanno stare la caption di ogni link dentro il proprio rettangolo di link; il testo partiva troppo in basso, così il bordo del rettangolo lo attraversava, ed era più largo del rettangolo
Version 2.765.43
Fixed
- Il testo barrato (
fsStrikeOut) ora viene barrato attraverso il centro delle lettere minuscole; la linea veniva disegnata mezza linea sotto la linea di base, sotto il sottolineato, così il testo barrato sembrava doppio sottolineato, e anche<s>inTextOutHTMLera interessato - Il testo ruotato ora riceve il sottolineato sotto la linea di base invece che lungo la cima delle lettere, e il barrato attraverso le lettere
- Le linee di barrato sono spesse quanto i sottolineati su ogni percorso di testo; i percorsi Unicode e Latino semplice disegnavano una linea molto più sottile
Version 2.765.42
Fixed
- La demo HTMLText ora produce una singola pagina con tutti e cinque gli esempi sopra; aggiungeva una seconda pagina dopo quella con cui il documento parte già, lasciando vuota la prima pagina, e iniziava a scrivere vicino al fondo della pagina, così l'esempio delle entità e il paragrafo con a capo automatico cadevano fuori pagina
Version 2.765.41
Fixed
- Le demo Layer per Delphi e C++Builder ora mostrano il testo dei propri layer; il testo del layer visibile veniva disegnato nel colore del rettangolo alle sue spalle e non si vedeva, e il testo del layer nascosto era quasi bianco
- La caption delle demo Patterns viene disegnata in nero invece di essere riempita con il pattern a piastrelle, che la spezzettava in frammenti di pattern
- La caption delle demo AlphaTransparency non viene più disegnata verde semi-trasparente con la blend mode Multiply; le forme trasparenti ora tengono la trasparenza per sé
Version 2.765.40
Fixed
- Le demo GraphicDraw per Delphi e C++Builder ora disegnano correttamente le rette tangenti dei propri esempi di curve; la linea del primo punto di controllo della curva di sinistra si fermava prima del punto etichettato, e la curva di destra mostrava un breve tratto orizzontale invece delle linee dal punto di partenza attraverso il punto di controllo fino al punto di arrivo
- I titoli di sezione delle pagine di rettangolo ed ellisse tornano neri invece di prendere il colore dell'ultima forma disegnata
Version 2.765.39
Fixed
- Il testo e le forme disegnate dopo
PrintHyperlinkconservano i colori impostati prima di esso; un colore grigio tornava come un colore diverso (il bianco diventava blu), e i colori impostati in CMYK o attraverso un color space tornavano come un colore RGB precedente - Il colore dell'hyperlink ora si applica solo al testo del link, qualunque fosse il color space in uso sulla pagina
Version 2.765.38
Fixed
TextOutOutlineora disegna i contorni dei glifi alla dimensione del font a qualsiasiResolution; con unaResolutiondiversa da 72 i contorni venivano ridimensionati una volta di più, per esempio alla metà a 144- I contorni dei font con meno di 1000 unità per em, come SimHei, non vengono più disegnati più volte troppo grandi
Version 2.765.37
Fixed
- Le demo CJKUnicode per Delphi e C++Builder ora mostrano la propria linea coreana anche sui sistemi senza Arial Unicode MS; la disegnavano con il primo font cinese trovato, che non ha Hangul, così la linea restava vuota, mentre ora usano Malgun Gothic quando il font scelto non può mostrare il coreano
Version 2.765.36
Fixed
- Il testo cinese e giapponese scritto con font come SimHei non ammucchia più i caratteri l'uno sull'altro; quando lo stesso font veniva usato per una seconda sequenza di testo, molti ideogrammi ricevevano larghezze di poche unità invece di un em intero
- I font interessati memorizzano meno larghezze di avanzamento di quanti abbiano glifi; i glifi dopo l'ultima larghezza memorizzata ora usano quella larghezza, come richiede il formato TrueType
Version 2.765.35
Fixed
- Il testo Unicode nei font la cui griglia di progetto ha meno di 1000 unità per em, come SimHei e SimSun con 256, ora ha la spaziatura corretta; le larghezze dei glifi scritte nel PDF erano circa quattro volte troppo grandi, così i visualizzatori lasciavano ampi spazi dopo gli spazi e gli altri caratteri appena usati
Version 2.765.34
Fixed
- Lo scenario delle immagini scansionate della demo PDFOptimize ora comprime una vera pagina di testo; la sua immagine di prova a 1 bit usciva tutta nera, così CCITT G4 e JBIG2 venivano confrontati su un rettangolo pieno
- Gli scenari delle immagini della demo PDFOptimize ora incorporano solo i glifi della propria etichetta di pagina, così le dimensioni riportate mostrano la differenza tra i metodi di compressione delle immagini invece di essere dominate da un font incorporato intero
Version 2.765.33
Fixed
- La demo E-Invoice ora impagina la pagina visibile della fattura dall'alto: il titolo sta in cima alla pagina e fattura, parti e importi seguono sotto; la pagina veniva disegnata in ordine capovolto, con il titolo vicino al bordo inferiore e la nota del footer in cima
Version 2.765.32
Fixed
- Le immagini JBIG2 codificate strettamente lossless (
LosslessconLossyLevel = 0) ora conservano ogni pixel; la rimozione predefinita dei puntini neri come rumore di scansione ignorava queste impostazioni, così i punti e i puntini delle i e delle j nel testo piccolo sparivano da immagini che dovevano essere lossless - Le impostazioni predefinite orientate alla scansione (
LossyLevel = 5conRemoveIsolatedBlackPixels) continuano a rimuovere le macchie come prima
Version 2.765.31
Fixed
- L'esportazione delle pagine caricate in PNG o TIFF non fallisce più con "received too many rows" alle risoluzioni in cui una banda di rendering non è un numero intero di punti, come i 150 DPI predefiniti di
SaveLoadedPagesAsImagescon una pagina Letter; l'arrotondamento rendeva ogni banda una riga di pixel più alta del previsto, così le bande sommavano più righe dell'immagine
Version 2.765.30
Fixed
TextWidth,TextHeight,GetWideTextWidtheGetWideCharAdvancesora rispondono nelle unità di pagina dellaResolution, le unità a cui il testo viene disegnato. Con unaResolutiondiversa da 72 rispondevano in punti, così il testo misurato non stava nelle coordinate in cui veniva piazzato- Con una
Resolutiondiversa da 72, il testo disegnato conTextOutora parte dalla propria Y invece che troppo in alto, e sottolineati e barrati coprono tutto il testo alla distenza e allo spessore giusti invece che una frazione - A qualsiasi
Resolution,TextBox,TextOutBoxExeWideTextOutBoxExcentrano e allineano a destra le proprie linee sulla larghezza reale del testo, le celle delle tabelle e i paragrafi vanno a capo su quella, e le sequenze stilizzate diTextOutHTMLnon si sovrappongono più - Una sequenza di fallback del font dentro
WideTextOutBoxExconserva la dimensione del font a qualsiasiResolutioninvece di rimpicciolire - L'output a
Resolution72 è invariato
Version 2.765.29
Fixed
- Quando Windows non riesce ad applicare da sé la world transform di un metafile EMF, HotPDF combina le trasformazioni da solo. L'offset verticale di una trasformazione combinata usava il termine sbagliato, così il contenuto di questi metafile poteva risultare spostato in alto o in basso
Version 2.765.28
Fixed
- Mostrare un metafile EMF non stampa più righe diagnostico tipo
[WMF_DEBUG] EMR_POLYGON16 record foundsullo standard output delle applicazioni console; la traccia dei metafile era rimasta attiva nella build di release
Version 2.765.27
Fixed
- Il testo nei metafile EMF mostrati con
ShowMetafileora sta all'altezza a cui lo disegna Windows. Il testo allineato in alto, il predefinito diTCanvas.TextOut, veniva disegnato un'altezza di linea più su, e anche il testo allineato in basso risultava troppo alto - Il testo dei metafile allineato alla linea di base e ruotato è invariato
Version 2.765.26
Fixed
ShowMetafilecon posizione e scala ora disegna il metafile con l'angolo in alto a sinistra nel punto dato e scalato come richiesto. Prima ignorava questi argomenti e disegnava sempre il metafile all'angolo in alto a sinistra della pagina alla sua dimensione naturaleShowMetafilesenza posizione è invariato
Version 2.765.25
Fixed
- I disegni
AngleArcnei metafile EMF mostrati conShowMetafileora disegnano l'arco che descrivono, in entrambe le direzioni, seguito da linee che proseguono dalla fine dell'arco; prima veniva disegnato un cerchio completo, e la sua dimensione era sbagliata ogni volta che il metafile aveva un offset
Version 2.765.24
Fixed
- Sotto PDF/A e PDF/X, le annotazioni di testo libero con contenuti ASCII semplici ora mostrano il proprio testo; la loro appearance disegnava solo cornice e riempimento, perché la Helvetica nominata nella appearance predefinita dell'annotazione non può essere usata non incorporata in quei profili
- Il testo viene disegnato a 12 pt nel font corrente della pagina, che viene incorporato insieme al testo della pagina, va a capo nel box dell'annotazione e si allinea secondo la giustificazione scelta, come già si faceva per i contenuti non ASCII
- Fuori da PDF/A e PDF/X, le annotazioni di testo libero con soli contenuti ASCII vengono scritte esattamente come prima
Version 2.765.23
Fixed
- Con
AutoShapeArabicattivo,TextOuteUnicodeTextOutora collegano le lettere arabe, persiane e urdu nelle loro forme iniziale, mediana e finale e nelle legature, come già facevaRtLTextOut; prima ogni lettera veniva mostrata nella sua forma isolata - Vale lo stesso per
AutoShapeSyriac,AutoShapeNko,AutoShapeAdlam,AutoShapeHanifiRohingyae per il riordino dei punti ebraici (sfHebrewReorderinShapingFeatures) - Con queste opzioni attive, il testo i cui numeri di glifo capitavano negli intervalli di caratteri arabi o ebraici poteva venire mostrato con i glifi sbagliati; non succede più
- Le annotazioni di testo libero disegnate nel font della pagina vengono modellate allo stesso modo del testo della pagina
- L'output con queste opzioni disattivate è invariato
Version 2.765.22
Fixed
- Le forme curve ora rispettano valori di
Resolutiondiversi da 72.Ellipse,Circle,Arc,DrawArc,Pie,DrawPie,ChordeArcTovenivano disegnate nel posto e alla dimensione sbagliati, mentre linee rette, rettangoli e rettangoli arrotondati erano corretti - L'output alla risoluzione predefinita di 72 è invariato
Version 2.765.21
Fixed
- Gli spicchi di torta disegnati con
PieoDrawPieora sono forme chiuse singole, così il loro contorno prende angoli veri dove i bordi retti incontrano l'arco invece di due estremità di linea libere - Le corde nei metafile EMF mostrati con
ShowMetafileora si chiudono lungo la retta tra le estremità del proprio arco; prima la linea correva verso un punto ben lontano dalla forma
Version 2.765.20
Fixed
DrawArceDrawPieora disegnano la parte dell'ellisse che la loro documentazione descrive: in senso antiorario dal punto di partenza al punto di arrivo, come fanno le chiamate GDI di WindowsArcePie; prima disegnavano l'altra parte, così un quarto di arco usciva come tre quarti- Gli spicchi di torta, le corde e gli archi
ArcTonei metafile EMF mostrati conShowMetafileora corrispondono a ciò che Windows disegna, per entrambe le direzioni dell'arco; prima mostravano la parte opposta dell'ellisse, mentre gli archi semplici erano già corretti - I metodi
Arc,Pie,ChordeArcTobasati su angoli sono invariati
Version 2.765.19
Fixed
- I rettangoli ruotati disegnati con
RectangleRotateora sono forme chiuse, come quelli disegnati conRectangle; tracciandone il contorno si lasciava fuori il quarto lato, così un rettangolo ruotato solo a contorno mostrava tre lati - I rettangoli ruotati riempiti, e le barre di sottolineato e barrato del testo ruotato, hanno lo stesso aspetto di prima
Version 2.765.18
Fixed
- I numeri negativi scritti nei PDF generati ora vengono arrotondati correttamente; valori come -50 venivano scritti come -49.99, così coordinate, offset e posizioni negativi nel contenuto della pagina, nei rettangoli delle annotazioni e in voci simili potevano essere storti fino a 0.01 unità
- I valori negativi ora usano l'arrotondamento half-away-from-zero, rispecchiando esattamente i valori positivi; un valore negativo che arrotonda a zero viene scritto come 0
- L'output per zero e numeri positivi è invariato
Version 2.765.17
Fixed
- Le annotazioni di testo libero con contenuti cinesi, giapponesi, coreani, arabi, cirillici o altri non ASCII ora mostrano il proprio testo in ogni visualizzatore; facevano affidamento sul visualizzatore che disegnava il testo in Helvetica, che può rappresentare solo caratteri occidentali, così visualizzatori come Poppler mostravano solo la punteggiatura ASCII
- Queste annotazioni ora portano la propria appearance (ISO 32000-1 12.5.5): il testo viene disegnato nel font corrente della pagina, incorporato e sottoposto a subset insieme al testo della pagina, va a capo nel box dell'annotazione (tra parole, o tra caratteri per il testo senza spazi), si allinea secondo la giustificazione scelta e viene piazzato sulla stessa cornice e riempimento di prima
- L'appearance viene scritta anche sotto PDF/A, dove il font incorporato mantiene il documento conforme e il testo dell'annotazione ora è visibile invece di un box vuoto
- Le annotazioni di testo libero con soli contenuti ASCII vengono scritte esattamente come prima
Version 2.765.16
Fixed
- Le pagine vuote inserite nei documenti caricati con
InsertLoadedBlankPageora portano il dizionario delle risorse che ogni pagina richiede (ISO 32000-1 Tabella 30), così i validator come qpdf non segnalano più l'albero delle pagine come danneggiato e il contenuto può essere aggiunto alla pagina in un secondo momento
Version 2.765.15
Fixed
- Nella demo
Tablel'importo del subtotale ora si estende sulle colonne Qty e Price come previsto; usava l'indice di cella sbagliato, lasciando la colonna Qty come cella vuota
Version 2.765.14
Fixed
- Le immagini nelle celle di
THPDFTableora vengono disegnate dentro la propria cella e rispettano l'allineamento verticale; prima venivano posizionate un'altezza d'immagine più in basso, sotto la cella e fuori dalla tabella
Version 2.765.13
Fixed
- Le larghezze del testo Unicode (
GetWideTextWidthe la misura della giustificazione) ora corrispondono al font; per font come Arial uscivano circa il doppio - Tabelle, testo con a capo automatico e testo allineato a destra, centrato o giustificato costruito su queste larghezze torna a impaginarsi correttamente: il testo corto delle celle non va più a capo, i valori allineati a destra raggiungono il bordo della cella e il testo HTML nelle celle delle tabelle non mostra più grandi spazi tra le parole
Version 2.765.12
Fixed
- Le form con checkbox o radio button ora elencano il font ZapfDingbats (
/ZaDb) nelle risorse predefinite della form. I visualizzatori che disegnano questi campi da soli (il comportamento predefinito quandoAutoFormAppearancesè disattivo) cercano lì il font per disegnare il segno di spunta; prima, i visualizzatori basati su Poppler riportavano un font sconosciuto e non mostravano alcun segno
Version 2.765.11
Fixed
- Nella demo
CJKAnnotationsla prima icona di nota di ogni riga di lingua ora si allinea con le altre icone della riga; veniva posizionata 5 punti più in alto
Version 2.765.10
Fixed
- I font richiesti con il loro nome inglese ora vengono trovati anche sui sistemi Windows in altre lingue. Una richiesta di SimSun, Microsoft YaHei o MS Gothic su un Windows cinese, giapponese o coreano veniva trattata come font mancante, perché Windows riporta il nome nella lingua di sistema, e il testo veniva composto in silenzio in Arial Unicode MS
Version 2.765.9
Fixed
- I font che Windows conserva nelle collezioni TrueType (.ttc), come SimSun, Microsoft YaHei e MS Gothic, ora vengono incorporati come font autonomi validi. Prima, ogni tabella del font incorporato puntava ai dati sbagliati, quindi i visualizzatori lo rifiutavano e ripiegavano su un font di sistema, e sui computer privi di quel font il testo mostrava glifi sbagliati
- Erano interessati anche i documenti il cui font richiesto era assente e che Windows mappava su un font di collezione, per esempio testo Unicode con Arial Unicode MS su sistemi dove era disponibile solo SimSun
Version 2.765.8
Fixed
- I file sorgente che contengono testo non ASCII tornano a essere salvati come UTF-8 con byte order mark. Senza di esso, Delphi legge un file sorgente nella code page del computer di compilazione, quindi sui sistemi Windows cinesi, giapponesi, coreani e altri non occidentali il testo CJK, arabo, ebraico e accentato delle demo usciva illeggibile nei PDF generati, e i messaggi di errore della libreria mostravano caratteri sbagliati
- Le demo
CJKAnnotations,Annotations,HelloWorld,RtLTextOut,PageSizes,TextOut,ShowcaseeViewerPrefproducono di nuovo il testo previsto ovunque vengano compilate
Version 2.765.7
Fixed
- Le informazioni del documento fornite come UTF-8 (
Title,Author,Subject,Keywords, i titoli degli article thread eSetLoadedDocumentInfocon la famigliaSetLoadedTitle) ora vengono memorizzate come Unicode, così i visualizzatori mostrano correttamente testo accentato e CJK e le informazioni del documento corrispondono ai metadati XMP - Anche il testo nella code page di sistema (per esempio un titolo cinese su un sistema Windows cinese) viene memorizzato correttamente, poiché i byte che non sono UTF-8 validi vengono letti in quella code page
Version 2.765.6
Fixed
- La vista iniziale dei nuovi documenti (
InitialZoom) ora scrive destinazioni fit-width e fit-height complete; mancava l'operando richiesto da ISO 32000-1 Tabella 151, quindi i visualizzatori come Poppler segnalavano un array di destinazione troppo corto per ogni documento creato con l'impostazione predefinita
Version 2.765.5
Fixed
- Le etichette di pagina che non iniziano dalla prima pagina ora coprono anche le pagine precedenti al primo intervallo, che conservano i numeri semplici; l'albero delle etichette di pagina deve includere la prima pagina (ISO 32000-1 12.4.2), e senza di esso i visualizzatori potevano mostrare etichette sbagliate
SetLoadedPageLabelora mantiene gli intervalli in ordine di pagina e sostituisce un intervallo che inizia sulla stessa pagina, così i visualizzatori mostrano le etichette previste; prima, i nuovi intervalli venivano accodati fuori ordine e potevano duplicarsiSetLoadedPageLabelnon scarta più le etichette esistenti dei documenti che le conservano in un oggetto separato, e aggiorna anche gli alberi di etichette suddivisi in più nodi- I prefissi delle etichette di pagina forniti come UTF-8 ora vengono memorizzati come Unicode
Version 2.765.4
Fixed
- Le descrizioni dei link fornite come UTF-8 (
AddURILink,AddGoToLink,AddGoToRLink,AddLaunchLink,AddNamedDestinationLinke i link verso destinazioni di struttura) ora vengono scritte come Unicode, così screen reader e visualizzatori mostrano testo accentato e CJK invece di caratteri illeggibili - Lo stesso vale per il testo e l'autore delle annotazioni aggiunte ai documenti caricati con i metodi
AddLoaded...Annotation, allineandole alle annotazioni create nei nuovi documenti
Version 2.765.3
Fixed
AddGoToLinkora può puntare a una pagina aggiunta più avanti in un nuovo documento, così un indice sulla prima pagina può contenere link in avanti; prima questi link venivano scartati senza alcun errore- Un link la cui pagina di destinazione non viene mai aggiunta conserva la propria area ma resta senza azione, invece di puntare a una pagina inesistente
Version 2.765.2
Fixed
SetLoadedOutlineOpenora apre e chiude i segnalibri nei documenti caricati; prima scriveva una chiave che i visualizzatori ignorano e il segnalibro conservava il proprio statoAddLoadedOutline,SetLoadedOutlineURIeSetLoadedOutlineDestinationora agiscono sul segnalibro richiesto; con qualsiasi indice sopra 0 modificavano il segnalibro sbagliato o non facevano nulla- Aggiungere un segnalibro a un documento caricato ora aggiorna i conteggi delle voci visibili del genitore, dei suoi antenati e dell'outline, così i visualizzatori non mostrano più stati di espansione o totali di voci errati
- Impostare un link web su un segnalibro caricato ora rimuove la sua destinazione di pagina, e impostare una destinazione rimuove la sua azione, perché un segnalibro può portarne solo una delle due
- I titoli dei segnalibri forniti come UTF-8 a
AddLoadedOutlineeSetLoadedOutlineTitleora vengono memorizzati come Unicode invece che come byte illeggibili
Version 2.765.1
Fixed
- I segnalibri nei nuovi documenti ora registrano quante voci sono visibili, come richiede ISO 32000-1 12.3.3: prima, l'outline e ogni segnalibro aperto contavano tutte le voci annidate, comprese quelle dentro i segnalibri chiusi
- Impostare
Openedsu un segnalibro dopo l'aggiunta dei suoi figli ora lo apre nel visualizzatore; prima, la modifica non arrivava mai al file - Assegnare
Titlea un segnalibro esistente ora cambia il titolo mostrato nel documento - I titoli dei segnalibri con testo non ASCII forniti come UTF-8 ora vengono scritti come Unicode, così i titoli accentati e CJK vengono mostrati correttamente invece che come caratteri illeggibili
- I segnalibri ora portano il riferimento al genitore richiesto dalla specifica
Version 2.765.0
Added
HPDFTokenizeContentStreamAppendtokenizza un content stream direttamente in un array di token esistente, così chi ne combina diversi evita un array temporaneo per stream
Changed
- La compilazione di una pagina per il rendering non alloca più memoria per ogni numero e operatore del suo content stream, e il contenuto della pagina viene tokenizzato direttamente nella display list della pagina invece di essere copiato lì
- Il rendering parallelo delle pagine scala molto meglio su un documento a freddo: su un documento di prova vettoriale di 128 pagine, 4 worker ora completano il lavoro circa 3-3,5 volte più in fretta di 1 worker (in precedenza circa 1,4 volte nelle build a 32 bit e 1,7 volte in quelle a 64 bit)
- Anche la compilazione e il rendering delle pagine su un solo thread sono circa il 35% più veloci su quel documento; token, display list e output renderizzato restano invariati
Version 2.764.7
Changed
- Il rendering di contenuti che salvano e ripristinano spesso lo stato grafico (
q/Q) non alloca più memoria per ogni salvataggio, il che costringeva le thread worker del rendering parallelo delle pagine ad attendersi a vicenda dentro il memory manager - Il rendering parallelo a freddo di un documento di prova vettoriale di 128 pagine è circa il 7-10% più veloce con 4 worker e circa il 5% più veloce con un solo worker; l'output renderizzato resta invariato
Version 2.764.6
Fixed
- Il rendering parallelo delle pagine non scende più a una pagina alla volta quando le pagine erano già state renderizzate e le loro display list sono ancora in cache
- In precedenza ogni pagina in attesa di essere disegnata tratteneva la propria riserva di memoria mentre ne veniva disegnata una sola alla volta, quindi gli altri worker restavano fermi sul budget di memoria condiviso; ora, quando le pagine in attesa sono tante quante i worker, vengono disegnate in parallelo
- La prima pagina arriva comunque presto, e la memoria riservata da un batch ora resta proporzionale al numero di worker invece di riempire l'intero budget
Version 2.764.5
Fixed
SetStructureClassMapEntryora può registrare uno stesso dizionario di attributi sotto più nomi di classe, o di nuovo sotto lo stesso nome, senza liberarlo- In precedenza, rimuovere o sostituire una di quelle voci rilasciava il dizionario condiviso, così le voci
/ClassMaprimanenti puntavano a memoria liberata e il salvataggio del documento poteva scrivere dati privi di senso o sollevare una access violation - Un dizionario di attributi creato direttamente ora diventa un oggetto indiretto quando viene registrato, e ogni voce
/ClassMapvi fa riferimento; il documento è proprietario del dizionario, quindi chi lo usa non deve liberarlo
Version 2.764.4
Fixed
RemoveUnusedLoadedPageResourcesnon scrive più in una tabella delle risorse dopo averla rimossa, quando la tabella delle risorse/Font,/XObjecto altra di una pagina è scritta direttamente dentro/Resourcese ogni sua voce è inutilizzata- In precedenza quella scrittura finiva su memoria rilasciata, il che di solito passava inosservato ma poteva corrompere la memoria o sollevare una access violation più avanti nella sessione
- Le tabelle delle risorse svuotate vengono comunque rimosse da
/Resources, e l'output salvato resta invariato
Version 2.764.3
Fixed
- Aprire un PDF cifrato a chiave pubblica (certificato) con
PubSecKeyMaterial, tramiteLoadFromFileoBeginIncrementalUpdate, non legge più le buste dei destinatari da memoria già rilasciata durante il recupero della chiave del file - Il guasto dipendeva da come la memoria si ritrovava riutilizzata: il documento di solito si apriva, ma poteva essere rifiutato come se non fosse stato assegnato alcun materiale di chiave, o decodificare i byte sbagliati
- I documenti con più destinatari, il callback di selezione dei destinatari e i materiali di chiave aggiuntivi registrati con
AddPubSecKeyMaterialusano tutti la stessa lista di buste corretta
Version 2.764.2
Fixed
- Gli aspetti dei campi generati per le form caricate, da
AddLoadedTextFielde dagli altri metodi di campoAddLoaded*, daEnsureLoadedFieldAppearanceStreamo daFlattenFormFields, ora hanno un riferimento proprio al font/DRdell'AcroForm invece di condividere la voce/DR - Sostituire o eliminare il dizionario
/DRdell'AcroForm, o rimuovere l'ultimo campo modulo (operazione che rimuove anche l'AcroForm), non lascia più questi aspetti a puntare a oggetti font liberati - In precedenza, liberare in seguito il documento poteva incappare in una access violation nascosta che lasciava il resto del documento non liberato, o corrompeva la memoria, più spesso nelle build a 64 bit
- Un font scritto direttamente dentro
/DRdiventa un oggetto indiretto la prima volta che un aspetto lo usa, così l'aspetto del campo e/DRfanno riferimento allo stesso oggetto font nel file salvato
Version 2.764.1
Fixed
- Chiamare
ProcessObjectStreamsForDecompressiondopoLoadFromFilenon legge più lo stream di file che il caricamento aveva già chiuso; al suo posto riscansiona il file caricato, così i membri degli object stream restano disponibili perExtractObjectFromStream - Il guasto dipendeva da come la memoria risultava disposta: di solito passava inosservato, ma poteva sollevare una access violation o scansionare memoria non correlata, più spesso nelle build a 64 bit
FindAllObjectStreams,ScanAndLoadReferencedObjectseForceLoadMissingReferencedObjectsora non fanno nulla se chiamati fuori da un caricamento, invece di toccare lo stream chiuso
Version 2.764.0
Changed
- Un'istanza di
THotPDF, per esempio un componente depositato su una form, ora può scrivere un numero qualsiasi di documenti uno dopo l'altro:BeginDocdopoEndDocavvia un documento nuovo e indipendente invece di sollevare un'eccezione EndDocrilascia tutto ciò che è stato registrato per il documento scritto, incluse immagini, font, campi modulo, outline, JavaScript di documento, destinazioni con nome, etichette di pagina, profili ICC e output intent, e ilBeginDocsuccessivo libera le sue pagine e i suoi oggetti, così nulla di tutto ciò finisce nel file successivo; conReproducibleOutputattivo, un secondo documento prodotto da un'istanza riutilizzata è byte per byte identico a quello prodotto da un'istanza nuova- Le registrazioni fatte tra
EndDoce ilBeginDocsuccessivo, comeAddPDFAOutputIntento gli script aggiunti tramiteNames, appartengono al documento successivo e non vengono più azzerate daBeginDoc - Le impostazioni di proprietà come
FileName,Compression,PDFACompliance,AuthoreTitle, insieme ai livelli di pagina e alle catene di font fallback, si riportano al documento successivo; una versione PDF alzata automaticamente per un documento torna al valore della proprietàVersion - Il documento scritto resta disponibile dopo
EndDocfino alBeginDocsuccessivo, cosìValidatePDFUA2Structure,CurrentPageNumber,PagesCounte le diagnostiche di layout continuano a operare su di esso - Poiché le password vengono azzerate una volta cifrato un documento protetto,
BeginDocsolleva un'eccezione quandoActivateProtectionè ancora attivo e non è stata impostata una nuova password, invece di proteggere il file successivo con password vuote - Avviare un nuovo documento dopo aver riscritto sulla stessa istanza uno caricato produce comunque un file pulito
Version 2.763.1
Fixed
- La conversione di un EPUB, o l'importazione di HTML con il profilo HTML5, non rischia più una access violation quando un paragrafo non entra nella pagina corrente; il paragrafo ora viene sempre disegnato sulla nuova pagina
- La stessa correzione copre paragrafi, elementi di elenco e righe orizzontali nel renderer a blocchi compatto usato da
HPDFRenderHTMLDocument - Il guasto dipendeva da come la memoria risultava disposta, per cui si manifestava solo occasionalmente, più spesso nelle build a 64 bit, e poteva lasciare una conversione senza output o corromperne il contenuto
Version 2.762.1
Fixed
- Chiamare di nuovo
BeginDocsu un'istanza diTHotPDFche ha già scritto un nuovo documento non finisce più in una access violation; viene sollevata un'eccezione che richiede una nuova istanza, perché l'istanza trattiene ancora oggetti, immagini, font e campi modulo del documento completato - Oltre al crash, il secondo documento avrebbe portato con sé gli oggetti del primo, incluso il suo contenuto e i suoi campi modulo; un'istanza per ogni nuovo documento mantiene ogni file fedele al proprio contenuto
- Caricare un documento esistente con
LoadFromFilee riscriverlo non è interessato
Version 2.762.0
Fixed
- Le annotazioni di testo, testo libero, linea, rettangolo, cerchio, timbro e allegato file sono visibili nei documenti PDF/A-2, PDF/A-3, PDF/A-4 e PDF/X-6; portavano un flusso di aspetto vuoto che accontentava solo il validator e, siccome i viewer disegnano l'aspetto, non si vedeva nulla
- Questi aspetti ora disegnano l'annotazione: i bordi del rettangolo e del cerchio, la linea, un'icona di nota e un'icona di allegato nel colore dell'annotazione, la bordatura del timbro e la casella di testo libero riempita con il suo colore di sfondo
- L'output PDF 2.0 dà a ognuna di queste annotazioni, alle annotazioni markup estese e ai nuovi campi modulo un flusso di aspetto, come richiede ISO 32000-2 Tabella 166, e scrive
/NeedAppearances false; fuori da PDF/A e PDF/X il testo libero e il nome del timbro vengono disegnati in Helvetica - In PDF/A e PDF/X gli aspetti di testo libero e timbro non disegnano testo, perché ogni font lì usato deve essere incorporato; il testo resta nell'annotazione perché i viewer lo mostrino
Version 2.761.6
Fixed
- Le annotazioni di allegato file (
AddFileAttachmentAnnotation) si possono di nuovo aprire e risalvare nei viewer: la file specification scriveva il flusso del file incorporato direttamente come/EF, dove ISO 32000-1 Tabella 44 richiede un dizionario/EFche contenga il flusso sotto/F, così i lettori segnalavano che la voce del file mancava - Il flusso del file incorporato di un tale allegato è tipizzato
/EmbeddedFile, e il testo dell'annotazione viene anche conservato come descrizione del file
Version 2.761.5
Fixed
- Le destinazioni con nome, il JavaScript a livello di documento e gli allegati del documento vengono scritti con le chiavi del name tree in ordine ordinato, come richiede ISO 32000-1 7.9.6; venivano scritti in ordine di registrazione e i lettori che cercano nell'albero potevano perdere voci (qpdf segnalava gli alberi come non ordinati)
- Allegare due file con lo stesso nome file non crea più due voci con una sola chiave, il che lasciava un solo allegato raggiungibile; il secondo riceve una chiave numerata come
a (2).txte conserva il suo nome file originale - Le modifiche di
AddLoadedDocumentJavaScripteAddLoadedNamedDestinationvengono salvate; il name tree modificato non veniva riscritto quando risiedeva in un dizionario diretto, così le nuove voci andavano perse. Entrambi inseriscono nella posizione ordinata, anche negli alberi suddivisi in nodi/Kids, e sostituiscono una voce esistente con lo stesso nome AddLoadedDocumentJavaScriptmemorizza un'azione JavaScript come valore del name tree invece di un semplice script stream, eAddLoadedNamedDestinationscrive l'operando di zoom della sua destinazione/XYZRemoveLoadedJavaScripteRemoveLoadedJavaScriptAllrimuovono gli script dal documento stesso; prima cambiava solo l'elenco restituito dai getter e gli script restavano nel file salvatoSetDocumentAttachmentMetadatarinomina l'allegato che riceve; rinominava la chiave dell'ultimo allegato nell'albero, e la voce rinominata ora si sposta nella sua posizione ordinata
Version 2.761.4
Fixed
- I nuovi AcroForm definiscono sempre il font Helvetica che le stringhe di aspetto predefinite dei campi nominano nelle risorse predefinite della form (
/DR), come richiede ISO 32000-1 12.7.3.3; senzaAutoFormAppearancesil font mancava, così i viewer che costruiscono gli aspetti dei campi non avevano un font con cui costruirli AddLoadedComboBoxcrea una vera combo box; impostava il flag Edit invece del flag Combo, così il campo era una list box che i viewer mostravano come elenco di tutte le opzioni- I campi aggiunti a un documento caricato scrivono
/NeedAppearancescome booleanotrueinvece del nome/true, e un AcroForm creato per loro riceve la stringa di aspetto predefinita e le risorse predefinite a cui le loro stringhe/DAsi riferiscono AddLoadedTextField,AddLoadedCheckBox,AddLoadedComboBox,AddLoadedListBoxeAddLoadedPushButtondanno al nuovo campo un flusso di aspetto, così appare nei viewer che non costruiscono gli aspetti e nei documenti la cui form imposta/NeedAppearances false- Gli aspetti generati per i push button caricati (all'aggiunta, al ridisegno o all'appiattimento) disegnano la didascalia, dove prima erano vuoti
Version 2.761.3
Fixed
- Cambiare il valore di un campo testo o di scelta in una form caricata ora ridisegna il campo:
SetFormFieldValue,ResetLoadedFormFielde gli aggiornamenti delle list box a selezione multipla rigenerano il flusso di aspetto, mentre il file salvato continuava a mostrare il vecchio testo in ogni viewer e in stampa, perché i viewer disegnano l'aspetto, non il valore memorizzato - Gli aspetti generati dei campi testo password mostrano un asterisco per carattere invece della password in forma leggibile (ISO 32000-1 Tabella 228), sia per i nuovi campi con
AutoFormAppearancessia per i campi caricati che vengono ridisegnati o appiattiti AnalyzeLoadedSignatureRevisionsclassifica il nuovo dizionario di aspetto, il flusso di aspetto e le sue risorse che una compilazione della form aggiunge dopo la firma come compilazione della form, come già faceva per il campo stesso, così compilare una form certificata in un aggiornamento incrementale non viene più riportato come modifica fuori dalle strutture riconosciute
Version 2.761.2
Fixed
- Le bitmap con palette da 1 bit e 4 bit aggiunte con compressione Flate conservano i loro colori; venivano rimappate sulla palette di sistema a 256 colori, che spostava ogni colore che quella palette non contiene. Ora vengono incorporate al proprio bit depth con la propria palette, il che rende anche più piccoli i dati dell'immagine
- Le bitmap a 1 bit la cui palette elenca il bianco prima del nero non escono più come negativi con compressione CCITT Group 3, CCITT Group 4 o JBIG2, inclusi i percorsi batch e cross-page di JBIG2; il colore più scuro della palette viene sempre codificato come nero
icAutoMonoeAddMonochromeImageAutomantengono su Flate una bitmap a 1 bit con palette colorata invece di ridurla a bianco e nero con CCITT o JBIG2- Le immagini bidimensionali CCITT Group 3 (
icCCITT32) ora rispettano il loro parametro/K: la prima riga e una riga su due vengono codificate in modo monodimensionale e/Kvale 2, mentre prima ogni riga veniva codificata bidimensionalmente con/K 1, che non consente alcuna riga bidimensionale (ISO 32000-1 Tabella 11, ITU-T T.4)
Version 2.761.1
Fixed
- Le immagini JPEG aggiunte con compressione DCT conservano il loro modello di colore: le JPEG in scala di grigi vengono scritte come
DeviceGraye le JPEG CMYK comeDeviceCMYK, mentre ogni JPEG veniva dichiaratoDeviceRGB; i viewer mostravano così i file in scala di grigi corrotti o troncati e i file CMYK con i colori sbagliati - Le JPEG CMYK che portano l'Adobe marker (il consueto output di Photoshop) ricevono l'array
/Decodeinvertito di cui i loro valori di campionamento hanno bisogno (ISO 32000-1 8.9.5.2 e 7.4.8) - I controlli degli spazi colore PDF/A ora vedono le immagini JPEG in scala di grigi e CMYK come uso di DeviceGray e DeviceCMYK invece di DeviceRGB
StampLoadedPageImageapplica lo stesso modello di colore quando una JPEG viene timbrata su una pagina caricata- Nomi di file come
PHOTO.JPGoscan.jpegora si caricano come JPEG con ogni tipo di compressione; l'overload su file diAddImagericonosce i dati JPEG dalla firma invece che da un'estensione.jpgcase-sensitive e non prova più a leggere questi file come bitmap
Version 2.761.0
Added
- Il nuovo
AddLoadedSignedSignatureFieldaggiunge a un documento caricato un campo firma pronto da firmare, così un PDF già firmato può ricevere una seconda firma (controfirma o approvazione) con un aggiornamento incrementale - Il campo riserva lo spazio firma che
SignPDFWithPFX,PreparePDFForSigningeInsertSignatureHexvanno a riempire; dopoBeginIncrementalUpdateeSaveIncrementalUpdatela nuova firma copre l'intero file mentre le firme precedenti restano valide - Motivo, luogo e informazioni di contatto opzionali, il SubFilter e la dimensione riservata della firma si impostano per ogni campo; l'AcroForm viene marcato come firmato e append-only, e al documento firmato non viene aggiunto alcun flag di rigenerazione dell'aspetto
Fixed
- Il workflow multi-firma documentato per
BeginIncrementalUpdateora descrive passaggi che funzionano; la descrizione precedente si appoggiava a una pagina corrente che dopo il caricamento non esiste e a un campo firma senza spazio firma riservato, così la firma falliva
Version 2.760.1
Fixed
DrawQRCode,DrawDataMatrix,DrawPDF417eDrawAztecripristinano il colore di riempimento della pagina dopo il disegno, come documentato; le forme riempite dopo tendevano a prendere il colore del barcode- Questi barcode vengono disegnati come un unico percorso, con ogni run di moduli scuri su una riga accorpata in un solo rettangolo, così il contenuto della pagina è più leggero e i viewer non mostrano più sottili cuciture tra moduli adiacenti
Version 2.760.0
Changed
- Impostare
CryptKeyLengthaaes256porta l'output a PDF 1.7 quando è più basso, come già fanno le altre funzionalità dipendenti dalla versione, così i documenti vengono protetti davvero con AES-256. Con l'output predefinito PDF 1.6 venivano scritti con AES-128 senza alcun avviso; conStrictVersionLockattivo, una versione più bassa continua a fare fallback ad AES-128
Fixed
- Le pagine di aiuto delle proprietà di protezione mostravano nomi di permessi che non esistono; gli esempi e le descrizioni di
prPrinteprPrint12bitora corrispondono alle opzioni reali e le note sulla crittografia a chiave pubblica elencano i tipi di chiave supportati
Version 2.759.0
Fixed
- I PDF firmati ora tengono fuori dai byte range firmati l'intera stringa
/Contents, compresi i suoi delimitatori<e>, come richiede ISO/IEC 32000-1 12.8.3.3; prima i delimitatori venivano firmati, e i validatori che confrontano il byte range con il valore della firma lo segnalano come byte range non valido - La validazione PDF MAC delle firme con un MAC allegato accetta sia il byte range standard sia quello scritto dalle versioni precedenti
Security
- La verifica delle firme rifiuta un documento il cui spazio non firmato tra i due byte range contiene qualcosa di diverso dalla stringa
/Contentsdella firma stessa, chiudendo una falla di signature-wrapping per cui contenuto fuori dai byte firmati risultava coperto; le firme fatte con le versioni precedenti verificano ancora
Version 2.758.1
Fixed
- L'aspetto predefinito che
AttachSignatureFieldAppearancedà a un campo firma non firmato disegna di nuovo il suo sfondo grigio chiaro: il rettangolo di riempimento era privo di due operandi e impostava il colore dentro il percorso, cosa che i viewer rifiutano - Le annotazioni free-text create su una nuova pagina portano la stringa di aspetto predefinita che ISO 32000-1 richiede, così i viewer possono comporre il loro testo invece di mostrare una casella vuota
Version 2.758.0
Fixed
- Il decodificatore JBIG2 integrato piazza ogni simbolo dopo il primo nel punto della text strip in cui lo mette ISO/IEC 14492; ogni simbolo successivo finiva un pixel più a destra, così il testo nelle scansioni JBIG2 prodotte da altri encoder tendeva a disallinearsi
- Le immagini JBIG2 scritte con l'arithmetic encoder nativo e un symbol dictionary che contiene un solo glifo ora possono essere lette da altri PDF viewer; gli identificatori dei simboli venivano codificati con un bit invece che con nessuno, e quei viewer fallivano al primo glifo
- I symbol dictionary che combinano glifi tramite refinement e aggregazione vengono decodificati con la spaziatura standard, in linea con gli altri decodificatori JBIG2
- Le immagini JBIG2 che condividono un symbol dictionary globale scrivono
/DecodeParmscome array che corrisponde all'array/Filter; gli altri viewer ignoravano il dizionario condiviso e non trovavano i glifi comuni, quindi quelle immagini non venivano visualizzate
Version 2.757.0
Fixed
DirectDrawBarcodee le funzioni barraSimple*ora disegnano barcode veri per ogni simbologia; la maggior parte restituiva barre alternate a intervalli regolari senza alcun dato. GS1-128 con code set C (tipo 22) viene disegnato invece di ricadere sul Code 39, e le barre corte del POSTNET vengono disegnate al 40 % dell'altezzaDirectDrawBarcodescala larghezze e altezze delle barre con il sistema di coordinate della pagina, così i barcode restano leggibili anche quando la scala del documento non è un punto per unità- Code 128, Code 93 e la famiglia EAN / UPC mantengono larghezze di elemento esatte da uno a quattro moduli a prescindere da come è impostato
Ratio; qualunque rapporto diverso da 2 li rendeva illeggibili - EAN-8, EAN-13, UPC-A e UPC-E a cui si passano solo le cifre dei dati ricevono in aggiunta la cifra di controllo; prima l'ultima cifra dei dati veniva presa come cifra di controllo. Con
Checksumattivo, UPC-A non scarta più la sua ultima cifra di dati, e la cifra di controllo UPC-E (che seleziona anche la parità delle barre) viene calcolata dal numero UPC-A espanso - Le cifre di controllo MSI sono corrette per i numeri con un numero di cifre dispari, i codici POSTNET ricevono la loro cifra di correzione, e Interleaved 2 of 5 conserva l'ultima cifra di un numero di lunghezza dispari aggiungendo uno zero iniziale
- Code 128 A codifica le lettere minuscole tramite SHIFT invece di trasformarle in spazi o caratteri di controllo, Code 39 riporta le minuscole a maiuscole, e Codabar conserva i caratteri di start e stop forniti
- I caratteri che una simbologia non può rappresentare ora sollevano un'eccezione; Code 39 e Code 128 li scartavano o li sostituivano, e Codabar leggeva fuori dalla sua tabella di caratteri
- GS1-128 con
Checksumattivo non aggiunge più un'altra cifra di controllo aTextogni volta che il barcode viene misurato o disegnato
Version 2.756.0
Fixed
- I QR Code disegnati con
DrawQRCodeo costruiti conTHPDFQRCodeora vengono riconosciuti dai lettori standard: la format information viene piazzata come specifica ISO/IEC 18004, e la struttura dei blocchi di correzione d'errore è corretta per ogni versione da 10 a 40 (e per la versione 7-Q) - La selezione automatica della modalità mantiene il testo minuscolo in byte mode, così un URL come
https://example.comnon viene più codificato e riletto in maiuscolo - Un testo la cui lunghezza finisce con una o due cifre o con un carattere alfanumerico riceve un simbolo abbastanza grande da contenerlo; prima gli ultimi caratteri andavano persi
- Codificare due volte con la stessa istanza di
THPDFQRCodenon mescola più il simbolo precedente nel nuovo EncoderestituisceFalsequando una versione richiesta esplicitamente è troppo piccola o la modalità numerica o alfanumerica richiesta non può rappresentare i dati, invece di produrre un simbolo troncato- La scelta della mask applica le penalità di ISO/IEC 18004 7.8.3 sui pattern simili ai finder pattern e sul bilanciamento dei moduli scuri
- Il decodificatore di barcode integrato legge i QR Code standard: simboli multi-blocco con verifica Reed-Solomon, segmenti numerici, alfanumerici, byte ed ECI, payload UTF-8 e versioni con più alignment pattern
Added
HPDFQRFunctionMapeHPDFQRExtractDataWordsespongono il layout dei moduli e il de-interleaving dei blocchi con rilevamento degli errori per il codice che legge simboli QR
Version 2.755.9
Changed
- Il rendering delle soft mask delle immagini riutilizza gli indici di campionamento orizzontali esatti e usa la premoltiplicazione alpha tramite SSE2 sui target Delphi x86 e x64 supportati, preservando l'arrotondamento dei pixel e la cancellazione grazie a una memoria temporanea limitata e a un fallback scalare
Version 2.755.8
Fixed
- Il rendering in primo piano può riprendere una volta che il prefetch delle pagine annullato ha rilasciato le risorse del documento, senza attendere che il thread di lavoro abbia completato la propria uscita; la cancellazione esplicita, la sostituzione, il ricaricamento e la distruzione eseguono comunque il join del thread, e gli intervalli di pagine non validi non causano più il leak di un worker sospeso
Version 2.755.7
Fixed
- Il rendering delle pagine preserva il percorso corrente attraverso i restore dello stato grafico e isola i percorsi di Form XObject e glifi Type3, clipping e stato salvato, inclusi restore extra malformati e cancellazione
Version 2.755.6
Fixed
- Il renderer di rettangoli SIMD ora onora le regole di fill even-odd e nonzero composte, preservando i buchi, la direzione dei sottopercorsi riflessi e il posizionamento frazionario dei bordi; la cancellazione durante la rasterizzazione scarta la bitmap parziale e si propaga correttamente
Version 2.755.5
Fixed
- Le importazioni di form multi-select ora riservano i valori di opzione esatti prima di interpretare le grafie di compatibilità esadecimali in XFDF, impedendo ai valori letterali di selezionare un'opzione diversa e mantenendo i valori memorizzati coerenti con gli indici di selezione
Version 2.755.4
Fixed
- L'estrazione del testo da testo CID verticale (WMode 1) ora sposta la penna dello spostamento ISO 32000-1 9.4.4, così la spaziatura dei caratteri accorcia il passo lungo la colonna come definisce la specifica invece di allungarlo
- Una regolazione di posizione
TJnel testo verticale ora sposta la penna giù o su per la colonna invece che di lato, così le colonne estratte non si dividono più e l'ordine di lettura resta dall'alto in basso - L'array
/DW2del CIDFont viene letto nel suo ordine specificato[v1y w1y]durante l'estrazione, così i glifi che si affidano ai predefiniti avanzano di un em intero invece di 0,88 em - Le origini dei glifi verticali estratti restano sulla linea centrale della colonna, e i box dei glifi sono piazzati all'origine verticale meno il vettore di posizione, con la componente orizzontale preimpostata a metà larghezza del glifo
/W2che descrivono più CID consecutivi ora applicano le loro metriche a ogni CID della run durante l'estrazione invece che solo al primo- Il renderer di pagina e l'interprete di estrazione del testo ora condividono una sola implementazione delle regole di spostamento dei glifi e
TJ, così le posizioni renderizzate ed estratte non possono divergere
Version 2.755.3
Added
THPDFQCStatementInfoguadagnaHasPSD2Statement,PSD2RolesOfPSP,PSD2NCANameePSD2NCAId; il descrittore a livello CMS porta gli stessi campiHPDFParsePSD2QcStatementanalizza un statement PSD2 che hai già come DER e rifiuta qualsiasi input malformato
Deprecated
PSD2RolesPayerePSD2RolesPayeerestano per compatibilità del sorgente ma sono sempre vuoti, perché la specifica non definisce elenchi di ruoli pagatore e beneficiario; usaPSD2RolesOfPSP
Fixed
- Lo statement del certificato qualificato PSD2 ora viene letto con la sua struttura ETSI TS 119 495, riportando ogni ruolo del fornitore di servizi di pagamento con il suo OID e nome di ruolo, il nome dell'autorità nazionale competente e l'identificatore dell'autorità; i certificati PSD2 reali prima non riportavano alcun ruolo
- Uno statement PSD2 malformato, incluse lunghezze in eccesso o non minime, componenti mancanti o extra, tipi di stringa sbagliati e nomi non validi UTF-8, viene ignorato nell'insieme invece di essere riportato in parte
Version 2.755.2
Fixed
- Il rendering di pagina del testo verticale (WMode 1) ora fa avanzare ogni glifo dello spostamento in spazio testo ISO 32000-1 9.4.4: la spaziatura delle parole non viene più scalata con la dimensione del font e non viene più aggiunta ai codici CID a due byte, poiché si applica solo al codice spazio a un byte
- La spaziatura dei caratteri nel testo verticale viene applicata lungo la direzione di scrittura esattamente come la definisce la specifica, così le colonne impostate con un
Tcnon nullo renderizzano alla stessa altezza degli altri viewer conformi - Il testo invisibile (modalità di rendering 3 e contenuti opzionali nascosti) fa avanzare le colonne verticali con le stesse regole del testo dipinto, tenendo i glifi visibili successivi nel posto corretto
- L'array
/DW2del CIDFont viene letto nel suo ordine specificato[v1y w1y], così i font che si affidano ai predefiniti avanzano di un em intero invece di 0,88 em - I glifi verticali vengono dipinti all'origine verticale meno il loro vettore di posizione, con la componente orizzontale preimpostata a metà larghezza del glifo, il che centra le colonne sulla posizione della penna
/W2che descrivono più CID consecutivi ora applicano le loro metriche a ogni CID della run invece che solo al primo
Version 2.755.1
Fixed
- ExportLoadedFormToFDF ora genera il corpo FDF completo prima di creare il file di destinazione, così un fallimento a metà esportazione non sostituisce più la destinazione con un documento troncato
- Lo scanner di interscambio degli stream FDF traccia le stringhe esadecimali, mantenendo integri i dizionari dei campi quando un valore hex termina esattamente contro il terminatore del dizionario
- La riconciliazione degli indici di selezione delle choice decodifica grafie miste PDFDocEncoding, UTF-16 ed esadecimali con un unico matcher, così valori di export equivalenti ricostruiscono /I in modo coerente
- L'import XFDF accetta la grafia esadecimale di un valore di export di opzione consegnato come testo letterale semplice, ripristinando i round trip scritti da strumenti di terze parti
- L'export FDF salta i campi solo-widget senza nome di campo, allineandosi all'exporter XFDF e al comportamento di ogni importer
- La demo Stamp di Delphi ancora la sua filigrana e l'annotazione rubber-stamp alle dimensioni reali della pagina, mantenendole visibili su input orizzontali e non A4
- La demo DigiPrint di C++Builder rilascia le sue immagini e i suoi elenchi di righe per pagina, inizializza il fattore di interlinea dell'intestazione e segnala un demo.xml mancante invece di crashare
- Gli script di build della DLL ABI Win64 e dei worker codec trovano dcc64 in bin64 su RAD Studio 12 e successivi, e le build complete della libreria C++Builder rilevano e puliscono i residui trial dalla directory di output condivisa
Version 2.755.0
Added
- I campi choice multi-select caricati ora scambiano i singoli valori selezionati tramite le API FDF su file e stream e i callback XFDF consapevoli degli array, preservando i confini delle opzioni e sincronizzando gli indici di selezione all'import
Version 2.754.6
Fixed
SetLoadedFormFieldExportValueora usa il normale percorso di aggiornamento del valore del campo, preservando i tipi di valore dei pulsanti, gli indici di selezione, gli stati di apparenza, le stringhe codificate e il tracciamento delle modifiche per il calcolo
Version 2.754.5
Fixed
- I valori dei moduli XFDF e gli elementi di testo delle annotazioni conservano ora il loro contenuto esatto senza inserire whitespace di formattazione, inclusi spazi iniziali e finali, tab e interruzioni di riga
Version 2.754.4
Fixed
- Gli helper per valore, predefinito e lunghezza massima dei moduli caricati onorano ora le voci ereditate e indirette, mentre i reset dei campi preservano i tipi dei valori predefiniti, sincronizzano selezioni delle choice e stati dei pulsanti e lasciano invariati i campi fratelli; le apparenze rigenerate dei pulsanti conservano lo stato selezionato e bounds di rendering validi
Version 2.754.3
Fixed
- I campi figlio nominati caricati restano ora individuabili singolarmente quando il loro tipo di campo è ereditato, con tipo, flag e opzioni ereditati disponibili tramite gli helper dei campi, e la rimozione preserva i campi fratelli e i loro widget
Version 2.754.2
Fixed
- Le apparenze rigenerate dei campi choice caricati mostrano ora le etichette Unicode delle opzioni conservando i valori di export, renderizzano le opzioni di elenco non selezionate ed evidenziano selezioni singole o multiple in modo coerente con i valori e gli indici del campo
Version 2.754.1
Fixed
- L'aggiornamento di un campo choice caricato mantiene ora gli indici delle opzioni selezionate coerenti con il nuovo valore, inclusi i valori di export delle opzioni e le voci modificabili fuori dall'elenco delle opzioni, senza modificare gli array di selezione condivisi
Version 2.754.0
Added
- Le factory opzionali HPDFCreateTesseractOCREngine e HPDFCreateRapidOCREngine collegano programmi di riconoscimento locali e modelli forniti dal chiamante ai livelli di testo cercabili, con testo Unicode, coordinate delle parole, timeout, cancellazione e budget di output
Fixed
- Corretti gli advances delle matrici di testo, le larghezze dei font CID indiretti, il ripristino del clipping di q/Q e dei Form, l'orientamento dei JPEG reduced, le soft mask delle immagini e le palette degli stream Indexed per ripristinare layout del testo e contenuti delle immagini sulle pagine interessate
- I glifi pieni TrueType incorporati di piccole dimensioni usano ora l'antialiasing local coverage per migliorare i tratti sottili a basso DPI; le richieste OCR annullate vengono segnalate come cancellazione anche quando il motore di riconoscimento restituisce un fallimento
- RenderOutputDither si applica ora attraverso i backend di rendering e il rendering parallelo delle pagine, con invalidazione della cache e cancellazione coerenti
Version 2.753.0
Added
- SetLoadedFreeTextPlainText converte esplicitamente le annotazioni FreeText caricate supportate in testo semplice ASCII Helvetica e ricostruisce la loro apparenza visibile per riscritture complete e salvataggi incrementali
Fixed
- La conversione delle pagine caricate e la validazione dei salvataggi risolvono ora i page box indiretti ed ereditati, preservando le dimensioni di pagina condivise invece di sostituirle con A4
Version 2.752.5
Fixed
- L'inizializzazione delle bitmap di pagina controlla ora la cancellazione mentre azzera blocchi limitati, rilascia le bitmap non finite ed evita di ritardare il rendering in primo piano mentre il lavoro di prefetch annullato completa l'inizializzazione
Version 2.752.4
Fixed
- La chiusura o il ricaricamento di un documento rilascia ora i suoi grafi di oggetti PDF di proprietà e i payload degli stream, incluse proprietà condivise e cicliche, senza liberare due volte i riferimenti collegati
Version 2.752.3
Fixed
- Le modifiche al valore delle checkbox caricate sincronizzano ora gli stati di apparenza anche quando il dizionario dell'apparenza normale contiene solo lo stato selezionato
Version 2.752.2
Fixed
- Abilitare l'output riproducibile dopo la costruzione del documento fissa ora il timestamp di creazione, così i salvataggi equivalenti restano identici al byte attraverso i tick dell'orologio
Version 2.752.1
Fixed
- I nomi dei campi dei moduli caricati decodificano ora le stringhe PDF in modo coerente, permettendo di trovare e aggiornare i campi con nomi UTF-16 senza cambiarne l'identità
Version 2.752.0
Fixed
- Lo spostamento di un'annotazione non-widget caricata conserva ora l'identità dell'oggetto annotazione e aggiorna il suo riferimento opzionale alla pagina della pagina di destinazione
Version 2.751.0
Fixed
- La cancellazione delle pagine caricate mantiene ora le destinazioni nominate, le destinazioni degli outline, gli alberi di struttura, gli alberi genitore e i riferimenti agli oggetti delle annotazioni, eliminando i riferimenti null raggiungibili sia nelle riscritture complete sia nei salvataggi incrementali
Version 2.750.0
Fixed
- Le riscritture complete dei PDF espandono ora gli oggetti compressi non letti prima di sostituire i contenitori degli object stream, preservando font, spazi colore e ActualText mentre si sistemano testo cinese illeggibile, apparenze di pagina alterate e testo di estrazione modificato
- I documenti cifrati con password utente vuota si caricano ora e iniziano direttamente la riscrittura, mentre gli object stream bloccati falliscono chiaramente invece di produrre un documento incompleto
- Gli oggetti numerici non modificati conservano la loro precisione sorgente, evitando derive sottili di colore e trasparenza dopo una riscrittura
- Le pagine copiate conservano i nomi delle risorse validati e i riferimenti, correggendo errori dei dizionari di risorse indiretti e immagini collegate in modo errato
Version 2.748.6
Fixed
- Risolto il problema per cui una sottosezione di cross-reference che dichiara più voci di quante la tabella contenga scorreva tutto il conteggio dichiarato senza più dati da leggere, facendo sì che rifiutare un file malformato di quaranta byte richiedesse decine di secondi
- Risolto il problema per cui il job runner perdeva tutti i risultati già prodotti quando un'operazione sollevava un'eccezione, e l'import HTML perdeva un oggetto immagine quando lo stream che lo circondava non poteva essere creato
Version 2.748.5
Fixed
- Risolto il problema per cui i file PKCS#12 con password non ASCII non si aprivano: la password è una byte string UTF-8, ma veniva allargata un byte alla volta invece di essere decodificata, così la chiave derivata era sbagliata per ogni carattere fuori dall'ASCII. I file protetti con il moderno schema PBES2 non erano interessati, ed ecco perché i due si comportavano diversamente
- Risolto il problema per cui il validatore di batch di firme e la cache delle evidenze di revoca sollevavano un access violation invece del proprio errore quando costruiti con un'opzione non valida, perché il distruttore girava prima che i membri che rilascia fossero stati creati
- Risolto il problema per cui il task di download delle evidenze falliva nel distruttore quando i suoi argomenti venivano rifiutati, dato che i controlli giravano prima che il thread stesso fosse creato
- Risolto il problema per cui il provider di firme cloud codificava un algorithm identifier il cui secondo arco supera 39; un identificatore malformato ora solleva l'errore del provider stesso invece di un errore di conversione
- I container di certificati e firme ora rifiutano un elemento annidato che dichiara una lunghezza che va oltre l'elemento che lo contiene, così ciò che viene validato e ciò che è coperto dalla firma non possono più divergere
- I valori delle private key vengono cancellati dalla memoria dopo la firma RSA invece di restare sull'heap per l'allocazione successiva
Version 2.748.4
Fixed
- Risolto il problema per cui il caricamento dei font Type 1 leggeva ogni proprietà dalla prima riga del programma del font: la lista di token veniva riempita senza essere svuotata, così le stringhe di versione, famiglia e peso, gli stem hint e la lunghezza della chiave charstring erano presi da token obsoleti. I font Type 1 ora riportano i propri metadati
- Risolto il problema per cui la lunghezza della chiave charstring era tenuta come puntatore a una stringa già liberata e usata senza controllo di range; ora è memorizzata come valore e limitata al range che il formato consente
- Risolto il problema per cui i font non incorporati ricadevano sempre sul font predefinito di sistema: il nome della face richiesta veniva copiato byte per byte nel record del font wide-char, così nessuna famiglia installata corrispondeva mai
- Risolto il problema per cui il parsing di TrueType e OpenType incorporati leggeva oltre la fine di un programma di font troncato decodificando outline dei glyph, argomenti dei composite glyph e la tabella CFF di un container OpenType, e una character map malformata non chiede più un array di glyph negativo
- Risolto l'overflow dei numeri di oggetto dichiarati nelle cross-reference table e negli stream: una voce che rivendicava un numero vicino al limite intero diventava un indice negativo ed era scritta fuori dalla tabella, e un conteggio di oggetti dichiarato o un
/Sizemolto superiore a quanto il file poteva contenere dimensionava gli array del loader basandosi solo su quella rivendicazione
Version 2.748.3
Fixed
- Risolto il problema per cui Data Matrix rifiutava input valido: la dimensione del simbolo era stimata dimezzando il conteggio delle cifre, ma solo le cifre adiacenti condividono un code word, così un testo come
1a2a3aselezionava un simbolo troppo piccolo per i propri dati e non riusciva a codificare - Risolto il problema per cui i caratteri UTF-8 di quattro byte in XFDF, come le emoji, venivano decodificati nella surrogate pair sbagliata, e un byte non riconosciuto non ingoia più i tre caratteri che lo seguono
- I region record dell'enhanced-metafile ora limitano il conteggio dei rettangoli in base alla dimensione del record invece di fidarsi del conteggio nell'header della region, che poteva leggere molto oltre il record
- Le immagini PNG la cui larghezza dichiarata per l'altezza supera il range indirizzabile vengono rifiutate all'header invece di allocare un buffer di pixel di lunghezza negativa
- Il resampling delle immagini di alta qualità ora segnala una richiesta fuori range invece di far traboccare la dimensione del proprio buffer intermedio
- Un'immagine meta prefix WebP che rivendica più entropy group di quanti pixel ha viene rifiutata invece di allocare centinaia di megabyte di tabelle prefix a partire da poche centinaia di byte di input
- Risolti i leak sui percorsi di errore della codifica Aztec, della decodifica bitmap WebP e del worker pool di decodifica degli object stream, dove un oggetto parzialmente costruito veniva abbandonato quando un passo successivo sollevava un'eccezione
Version 2.748.2
Fixed
- Risolto il problema per cui i simboli QR Code perdevano gli ultimi bit del code word: il percorso di posizionamento dei moduli saltava la colonna più a sinistra, così la coda dell'ultimo blocco di correzione d'errore non veniva mai scritta nel simbolo
- Risolto il problema per cui il terminatore QR riempiva di bit a zero tutto il resto del blocco di dati, senza lasciare spazio ai pad code word 0xEC / 0x11 richiesti da ISO/IEC 18004; un simbolo di versione 1 portava invece sei code word a zero
- Un nuovo test rilegge il simbolo generato dai suoi moduli, così il blocco di dati, i pad code word, il blocco di correzione d'errore, la maschera e il posizionamento sono tutti verificati contro lo standard e non contro l'output dello stesso encoder
Version 2.748.1
Fixed
- Risolto il problema per cui tre parser andavano in hang su input malformato invece di segnalarlo: il parser di oggetti su un
>>dentro un array o una]dentro un dizionario, il lettore CMap su una parentesi quadra o graffa vagante, e il lettore XFDF su un costrutto senza nome di tag (una document type declaration, per esempio) o un byte vagante tra attributi. Ognuno smetteva di avanzare il cursore, così un solo byte inatteso trasformava il parsing in un loop infinito - Risolto il problema per cui le sezioni CDATA in XFDF venivano lette come markup: il loro contenuto ora è preso come testo dell'elemento, e il marcatore di sezione è misurato correttamente invece di ingoiare il primo carattere
- Risolto il problema per cui una lunghezza di chunk WebP vicina a 2 GB faceva traboccare il controllo di dimensione, così la copia del payload leggeva oltre la fine del buffer del file; le lunghezze dei chunk ora sono verificate in aritmetica a 64 bit
- Risolto il problema per cui una lunghezza di chunk PNG di 0xFFFFFFFF liberava il buffer del chunk mentre il chunk continuava a riportare la lunghezza dichiarata, lasciando le letture successive puntate su memoria rilasciata; i chunk troppo lunghi vengono rifiutati
- Risolto il problema per cui la decodifica fax CCITT faceva traboccare il calcolo della dimensione del row buffer per geometrie di pagina dichiarate molto grandi, potendo scrivere oltre il buffer; l'archivio delle righe ora è limitato e la decodifica si ferma in pulito al limite
- Risolto il problema per cui l'encoder CCITT leggeva un byte oltre la fine di una scan line per larghezze multiple di otto
- Risolto il problema per cui i comment record dell'enhanced-metafile venivano letti attraverso un puntatore troncato a 32 bit nelle build a 64 bit, che leggeva un indirizzo estraneo per ogni EMF con un commento GDI
- Risolto il problema per cui le immagini a 8 bit con meno di 256 voci di palette pubblicavano memoria non inizializzata come coda della propria tabella dei colori; la tabella ora dichiara il suo reale numero di voci
- Risolto il problema per cui strutture BER a lunghezza indefinita profondamente annidate esaurivano lo stack durante il parsing di un container di firma o certificato; l'annidamento oltre 128 livelli viene rifiutato
Version 2.748.0
Fixed
- Risolto il problema per cui la correzione d'errore di ogni barcode 2D disegnato dalla libreria era sbagliata: QR Code, Data Matrix, PDF417 e Aztec costruivano il proprio polinomio generatore dal termine costante in su, ma lo dividevano come se il termine principale venisse prima, così ogni simbolo portava check word che nessun reader conforme accetta. Le check word ora corrispondono agli esempi risolti di ISO/IEC 18004, ISO/IEC 16022 e ISO/IEC 15438
- Risolto il problema per cui i simboli Aztec perdevano il payload: l'encoder divide l'array di code word sul posto e il chiamante emette quello stesso array, così le word del messaggio venivano sovrascritte dalla divisione e il simbolo non portava né i dati né una mode message valida
- Risolto il problema per cui il polinomio generatore di Data Matrix faceva partire le radici una potenza più in basso, producendo un polinomio diverso da quello prescritto dall'allegato E di ISO/IEC 16022
- Risolto il problema del finder pattern di Data Matrix: la L piena è ora la colonna di sinistra e la riga in basso, e la traccia di clock alternata è la riga in alto e la colonna di destra, ciascuna che parte scura nell'angolo condiviso con la L. Le due erano scambiate, così i reader non riuscivano a stabilire l'orientamento del simbolo
Version 2.747.4
Fixed
- Risolto il problema per cui la modifica di documenti caricati scriveva i numeri PDF con il separatore decimale di sistema: la cucitura delle pagine (page stitching), l'oscuramento dei rettangoli, gli stamp di testo e immagine, le forme di filigrana composte e le appearance delle ellissi ora emettono sempre un punto, così i documenti modificati su un locale con virgola decimale (per esempio Windows in tedesco o francese) non contengono più content stream che i viewer rifiutano
- Risolto il problema per cui il caricamento dei font Type 1 dipendeva dal locale di sistema: i numeri reali di FontMatrix, BlueValues, stem hints e charstring vengono parseati come numeri PostScript con il punto, così i font PFB conservano metriche e outline sui sistemi con virgola decimale invece di collassare in silenzio
- Risolto il problema per cui il parsing di dimensione e colore del font della default appearance (
/DA), degli attributi HTML width esize, dei risultati FormCalc e dei numeri JSON del job seguiva il locale del processo; ora usano il formato invariante in ogni direzione - Risolto il problema per cui il disegno barcode integrato scriveva i rettangoli delle barre tramite un formato dipendente dal locale, producendo un content stream non valido su un sistema con virgola decimale
- Le build Free Pascal ora parsano e formattano gli operandi dei content stream, le metriche di estrazione del testo e i numeri JavaScript con il formato invariante, allineandosi alle build Delphi invece di ricadere sulla conversione dipendente dal locale
- Il number writer non riscrive più il separatore decimale delle impostazioni di formato globali dell'applicazione ospite a ogni chiamata, il che cambiava come il resto del programma formattava i propri numeri ed era insicuro quando più thread producevano documenti allo stesso tempo
Version 2.747.3
Fixed
- Corretta la scomparsa delle modifiche sulle pagine compresse: l'oscuramento a rettangolo, la cucitura di pagine, le forme di filigrana composte e l'appiattimento delle annotazioni aggiungevano i loro operatori a uno stream di contenuti di pagina ancora compresso, così la barra di redazione, la pagina cucita, la forma della filigrana o l'annotazione incorporata mancavano silenziosamente dal file salvato. Il contenuto della pagina ora viene espanso prima di qualsiasi aggiunta
- Corretta la fusione del contenuto aggiunto con l'ultimo operatore già presente sulla pagina quando la pagina non terminava con uno spazio bianco, il che produceva un token illeggibile come
Q0.5e poteva portare un viewer a rifiutare l'intera pagina; ora viene inserita una fine riga dove necessaria
Version 2.747.2
Added
- Aggiunto il supporto a Free Pascal Win32: il pacchetto Lazarus ora compila sia per
i386-win32sia perx86_64-win64tramite entry point di build dedicati, le smoke suite accettano un argomento di architettura e sono stati risolti i problemi del compilatore a 32 bit e del linking dei simboli C; creazione e caricamento di PDF, compressione Flate, cifratura AES e gestione di documenti CBZ sono coperti su entrambi i target
Version 2.747.1
Fixed
- Risolto il problema per cui il retry della maschera ruotata del decoder barcode integrato lasciava byte residui nelle celle intatte della maschera ruotata, inventando inchiostro fantasma e rendendo illeggibili i simboli Code 39 ruotati di un quarto di giro; il buffer ruotato ora viene azzerato esplicitamente, così le foto e le scansioni di Code 39 ruotate si decodificano tramite il retry di rotazione
Version 2.747.0
Added
- Aggiunto l'import di immagini WebP:
AddImageFromFileaccetta ora.webptramite un decoder lossless (VP8L) integrato che implementa la RFC 9649 — codici prefix canonici, meta prefix codes spaziali, riferimenti all'indietro LZ77 con la mappa delle distanze del vicinato, la color cache e tutte e quattro le trasformazioni inverse (predictor, colore, subtract-green, color indexing con pixel bundling); i frame VP8 lossy vengono rifiutati con un messaggio chiaro
Version 2.746.0
Added
- Il decoder barcode integrato ora legge i simboli QR in ognuna delle otto orientazioni in cui può arrivare una pagina fotografata o scansionata: i finder pattern identificano l'angolo mancante e la matrice dei moduli campionata viene ruotata o specchiata nel layout atteso prima della decodifica, così le acquisizioni ruotate o specchiate si leggono senza pre-processing
Version 2.745.0
Added
- Aggiunta la valutazione dei certificati qualificati eIDAS per le firme caricate: GetLoadedSignatureQCStatements riporta i QCStatements ETSI EN 319 412-5 del certificato del firmatario — valori QcCompliance, QcSSCD, QcType, currency/amount/exponent del QcLimitValue e le posizioni PDS — più i ruoli payer e payee PSD2 del TS 119 495, e solleva un'euristica di firma qualificata quando QcCompliance e QcSSCD sono entrambi affermati (la decisione di trust sul QTSP resta al chiamante)
Version 2.744.0
Added
- Aggiunta l'imposizione N-up per i documenti caricati: ComposeLoadedPagesNUp ricompone ogni pagina su fogli composti a griglia nel formato carta della sorgente (2-up, 4-up, 6-up, fino a 16x16) per un output pronto alla stampa, assorbendo il
/Rotatedi ogni pagina nella matrice di posizionamento, condividendo le risorse di pagina con la form composta e disegnando facoltativamente cornici di cella hairline con una gutter regolabile
Version 2.743.0
Added
- FlattenLoadedAnnotations ora esegue il bake delle annotazioni prive di appearance stream invece di saltarle in silenzio: i widget vedono prima generare l'appearance del campo a partire dal valore del campo (il caso
/NeedAppearancescomune nei moduli stampati dal browser), così il valore inserito sopravvive nel contenuto della pagina - Le annotazioni di markup senza
/APricevono un'appearance sintetizzata a partire dalle loro stesse proprietà — testo FreeText e Stamp con styling/DAe quadding/Q, forme Square e Circle con colore/C//ICe spessore/BS, tratti Line e Ink, e markup quad Highlight / Underline / StrikeOut / Squiggly che rispettano/QuadPointse l'opacità/CAopacity - Hidden annotations (the
/F) restano annotazioni quando non hanno un'appearance, perché fare il bake di una nota invisibile la renderebbe visibile
Version 2.742.0
Fixed
- Risolto il fallimento delle build del package Free Pascal dalla 2.738.0 in poi: le dichiarazioni dei membri LTV evidence e seed-value erano finite dentro un blocco condizionale solo-Delphi mentre le loro implementazioni erano incondizionate, quindi il package Free Pascal non compilava più; le implementazioni ora portano la stessa condizionale e il package torna a compilare
Added
- L'import HTML ora risolve le tabelle su una griglia di occupanza completa, così le celle con
rowspanecolspanrivendicano correttamente le loro colonne e le righe successive saltano gli slot occupati invece di slittare a sinistra - Le altezze delle righe delle tabelle derivano dal wrapping del testo della cella con il font della cella stessa invece che da una stima sul conteggio dei caratteri, così i contenuti misti stretti e larghi non producono più celle che traboccano o sovradimensionate
- Le larghezze delle colonne seguono gli hint di larghezza
<col>e gli attributi di larghezza per cella, e le righe di intestazione marcate con<thead>(o righe iniziali di sole<th>) si ripetono in cima a ogni pagina di continuazione quando una tabella attraversa un'interruzione di pagina - Un gruppo rowspan resta intero attraverso le interruzioni di pagina: le righe unite da una cella estesa passano insieme alla pagina successiva, così la cella estesa non viene mai tagliata
Version 2.741.0
Fixed
- Risolto il problema per cui le build Free Pascal terminavano invece di segnalare un errore quando un documento richiedeva uno dei codec che quelle build non linkano: aprire un TIFF, decodificare un'immagine JPEG 2000 o JBIG2, leggere un JPEG progressivo o a scala ridotta, applicare una trasformazione colore ICC o richiedere la ricompressione Zopfli terminava il processo direttamente
- Ognuna di queste operazioni ora fallisce nel modo che il suo chiamante si aspetta già, quindi un documento che ne usa una viene caricato con quella funzionalità saltata invece di abbattere l'applicazione
Added
- Aggiunta l'estrazione del testo in ordine di struttura: ExtractLoadedPageStructureText percorre l'albero della struttura del documento in ordine di redazione (ISO 32000-1 14.8.4) e concatena le sequenze di marked-content di una pagina per MCID, così i documenti taggati come moduli governativi e pubblicazioni accessibili estraggono il loro ordine di lettura autorevole invece di una stima geometrica; i glifi che l'albero non reclama finiscono in una coda geometrica e vengono conteggiati nel report dei non taggati
Version 2.740.0
Fixed
- Risolto il problema dei glifi a colori che perdevano la trasparenza nelle build Free Pascal: le bitmap a colori incorporate venivano lette attraverso un percorso che scarta il canale alpha, quindi ogni glifo di emoji o di font a colori veniva disegnato come un rettangolo opaco. Le bitmap ora conservano il loro alpha per pixel
Fixed
- Abilitato il key agreement P-384 ECDH: la sottrazione condizionale finale della moltiplicazione Montgomery CIOS confrontava contro il limb P più il borrow, che va in wrap a zero sui limb alti tutti a uno dei primi P-384 / P-521 e sbagliava silenziosamente il borrow; il confronto ora rileva il borrow senza l'addizione che va in overflow e il shared secret P-384 coincide con i vettori di riferimento OpenSSL byte per byte
Version 2.739.0
Added
- Le build Free Pascal ora cifrano e decifrano documenti: i punti di ingresso AES sono serviti dall'implementazione FIPS-197 della libreria stessa invece di riportare un errore di operazione non supportata, quindi i file protetti AES-128 e AES-256 si possono creare e aprire anche lì
- Cifratura e decifratura AES-GCM, incluso il contesto di streaming usato per i payload grandi, sono disponibili nelle build Free Pascal
- Lo smoke test Free Pascal ora verifica il cipher contro il known answer FIPS-197, esercita i round trip PKCS#7 e GCM, e crea e ricarica un documento protetto AES-256 con rifiuto della password
Added
- Aggiunta la tipografia di paragrafo CSS2.1 al motore di import HTML5: text-align (con l'attributo legacy align e la mappatura del tag center), letter-spacing e word-spacing tramite gli operatori PDF Tc / word-space, text-indent per i rientri della prima riga e regole text-decoration underline / line-through, così gli import HTML esistenti da web ed email conservano titoli centrati, rientri e sottolineature
- Esteso il decoder QR integrato oltre la versione 1: la versione del simbolo ora si ricava dalla geometria dei finder attraverso la divisibilità della griglia (le versioni 2-40 con una griglia di moduli pulita si decodificano), il tetto di lunghezza del byte mode segue la capacità per versione della Tabella 7 di ISO/IEC 18004, e la mappa dei function module copre gli alignment pattern e i blocchi di informazioni di versione per i simboli più grandi
Version 2.738.0
Added
- Le build Free Pascal ora comprimono e decomprimono i documenti nativamente: il codec deflate è fornito da un backend integrato sull'implementazione Pascal di zlib che viene distribuita con Free Pascal, quindi il contenuto FlateDecode non riporta più un errore di operazione non supportata
- I documenti compressi si possono creare e ricaricare sotto Free Pascal con l'impostazione di compressione predefinita, e cross-reference stream, object stream, file incorporati e contenuto di pagina compresso si decodificano tutti lì
- Il backend copre i wrapper zlib e deflate raw, il wrapper gzip e il rilevamento automatico dell'header, così gli import SVG e il fallback di decompressione multi-window-size si comportano come sotto Delphi
- Lo smoke test Free Pascal ora verifica il codec con un self test di wrapper e checksum più un round trip su un documento compresso
Added
- Aggiunto il completamento della catena AIA caIssuers: HPDFFetchAIAIntermediates percorre gli endpoint con access-method 1.3.6.1.5.5.7.48.2 di un set di certificati CMS attraverso il transport del chiamante (i corpi DER nudi e PEM si decodificano entrambi), e l'opzione di validazione FetchMissingIntermediates alimenta il path building con gli intermedi recuperati, così le firme con signer nel cloud e un solo certificato end-entity validano invece di far fallire il path building
- Aggiunta l'abilitazione LTV in una sola chiamata: PopulatePAdESLTVEvidence percorre ogni firma caricata, recupera online i suoi intermedi più le evidenze OCSP/CRL e scrive il materiale nel DSS del documento, portando un documento appena firmato B-B a B-LT senza array di evidenze assemblati a mano
- Aggiunta l'applicazione dei seed value per la firma: CheckLoadedSignatureSeedValue legge il dizionario /SV di un campo firma e verifica un candidato SubFilter, DigestMethod, Reason e profilo DocMDP contro i suoi vincoli con la semantica force-bit di ISO 32000-1 12.7.5.5, così i vincoli dell'autore del modulo vengono rispettati prima che la firma venga apposta
Version 2.737.0
Added
- Aggiunta la verifica rigorosa del salvataggio tramite la proprietà VerifySavedOutput: dopo la scrittura, una nuova istanza reader con il recupero dei cross-reference disabilitato ricarica il file, così una serializzazione corrotta solleva l'errore nel punto di chiamata invece di emergere al consumer successivo
- Esteso ReproducibleOutput ai documenti cifrati: i flussi AES-CBC usano la convenzione statica dell'IV 14*(1+i), key material e salt derivano in modo deterministico e l'ID canonico del documento normalizza i timestamp volatili di Info, ottenendo salvataggi cifrati byte-identici per le pipeline di regressione
Version 2.736.0
Added
- Aggiunti resampling di alta qualità e dithering monocromatico tramite la nuova unit HPDFResample: i kernel separabili bicubici Catmull-Rom e Lanczos3 sostituiscono la semantica di stretch GDI per il downsampling delle immagini tramite la proprietà ImageDownsampleKernel, e RenderOutputDither applica la diffusione d'errore Floyd-Steinberg dopo la composizione della pagina, così l'output dell'anteprima di stampa conserva il dettaglio fotografico in bianco e nero puro
Version 2.735.2
Fixed
- Risolto il problema per cui i flussi di decompressione Flate passavano l'indirizzo della variabile del buffer invece del buffer stesso quando si riempivano dal flusso sorgente, corrompendo la memoria a ogni lettura e potendo crashare il processo; sono interessati il caricamento di documenti compressi, le classi di inflate stream e gli helper di stream di compressione e decompressione
Version 2.735.1
Fixed
- Risolto il collasso su una singola riga dei campi XFA growable senza data source quando vengono appiattiti: la loro altezza ora si misura dal testo che il template stesso dichiara, che è ciò che un tale campo visualizza. Un campo collegato a dati vuoti continua a misurarsi come vuoto
Version 2.735.0
Added
- Le build Free Pascal ora coprono l'intera libreria: ogni unit compila con FPC 3.2.2 e Lazarus, mentre prima compilava solo il percorso centrale di creazione e caricamento
- I contenitori XPS, EPUB e CBZ si possono importare sotto Free Pascal, tramite un lettore ZIP read-only integrato che gestisce dimensioni ZIP64, entry stored e deflated, verifica CRC ed entry cifrate in modo tradizionale con lo stesso callback della password del percorso Delphi
- L'appiattimento dei form XFA, il motore di calcolo FormCalc, il runtime dei widget, i componenti viewer del documento, gli handler di font Type 1, l'import HTML, la verifica delle firme e il job runner compilano tutti nelle build Free Pascal; appiattire i pacchetti XFA di un documento caricato richiede in più il codec deflate, che quelle build non linkano
Fixed
- Risolto lo swap di byte a 64 bit dell'unit helper PNG, che restituiva valori errati su Win64 e aveva lasciato l'unit completamente fuori dalla build
Added
- Aggiunto il rilevamento dei glifi mancanti al momento del disegno: la proprietà TrackUnresolvedGlyphs registra ogni code point che verrebbe renderizzato come una tofu box .notdef tramite la face Unicode attiva, solleva l'evento OnUnresolvedGlyph per ogni riscontro e lascia intatti i documenti pure-GDI non registrati
- Aggiunto il supporto alla legacy kern table: RegisterUnicodeTTF cattura la kern table dell'era Apple/GDI e l'emissione del kerning ricade sulla sua ricerca binaria di coppie format-0 quando un font non ha lookup kern GPOS, ripristinando la spaziatura classica a coppie nei font come l'Arial di serie
- Aggiunto il font fallback per run dentro il layout dei paragrafi: WideTextOutBox ora spezza ogni riga andata a capo nei code point che il font corrente non riesce a mappare e disegna ogni run nel suo font fallback risolto, così i paragrafi misti latini, emoji e CJK si renderizzano senza tofu quando le catene di fallback sono registrate
Version 2.734.0
Added
- Aggiunta la plumbing per le richieste di time-stamp RFC 3161: HPDFRFC3161BuildRequest emette il TimeStampReq DER con un nonce positive-INTEGER fresco, policy OID e certReq opzionali, e HPDFRFC3161ParseResponse decodifica l'header PKIStatusInfo ed estrae il token, così i callback di transport TSA sono tre righe invece di uno studio del DER
- Aggiunta la dichiarazione di developer extension ISO/TS 32002 (THotPDF.EnsureISO32002Extensions) che copre gli algoritmi di firma EdDSA e le curve ECDSA aggiuntive nei documenti PDF 2.0, idempotente e gated sulla versione come la dichiarazione SHA-3 del 32001
Version 2.733.0
Added
- Aggiunto il key agreement portabile X25519 e X448 con Montgomery ladder più ECDH su curve NIST P-256 / P-521 con moltiplicazione Montgomery CIOS, che permette di creare e svelare i recipient a chiave pubblica key-agreement (KARI) interamente in-process; la RFC 7748 e i vettori di riferimento generati con OpenSSL fissano il comportamento della ladder nella suite di regressione
- Aggiunti HPDFUnwrapKeyAgreementRecipientEnvelope insieme ai punti di ingresso AddPubSecAgreementKeyMaterial e AddPubKeyAgreementRecipientWithSecret, così i documenti cifrati con recipient ECDH / X25519 / X448 si possono aprire con lo scalare privato del recipient e cifrare senza tooling ECDH esterno
Version 2.732.0
Changed
- I salvataggi ora instradano l'output del serializer attraverso uno stream di scrittura bufferizzato da 1 MiB, accorpando le chiamate Write per token di header degli oggetti, chiavi dei dizionari e righe xref in push batchati sulle destinazioni file-backed
- I payload dei cross-reference stream applicano la predizione PNG Up (/DecodeParms /Predictor 12) prima del FlateDecode e compattano i buchi della free-list tramite le sottosezioni /Index, riducendo i contenitori xref su ogni documento PDF 1.5+ e sugli intervalli di oggetti sparsi
- La proprietà CompressionLevel ora seleziona anche l'impegno Flate dei contenitori cross-reference stream e object-stream, così clMaximum produce stream strutturali più piccoli durante il salvataggio
Fixed
- Le larghezze dei campi /W dei cross-reference stream ora si adattano all'intervallo effettivo degli offset invece del layout fisso [1 4 2] il cui cast a Cardinal troncava silenziosamente gli offset oltre 4 GiB producendo output danneggiato
Version 2.731.0
Changed
- Ricostruito l'OCR integrato a template matching con estrazione dei glifi a componenti connesse, scoring di copertura in scala di grigi contro template multi-font in cache, binarizzazione di Otsu con fallback a finestra locale, spezzatura delle parole sui gap bimodali, baseline per parola, rifiuto del rumore a speckle e un alfabeto esteso a 62 caratteri che riconosce testo ASCII con maiuscole e minuscole miste tramite clustering delle altezze a livello di riga e preferenza dal contesto del caso
Version 2.730.0
Added
- Aggiunto il supporto Win64 per Free Pascal 3.2.2 e Lazarus 4.6, incluso un package runtime, uno script di build riproducibile, un layer di compatibilità e uno smoke test non-GUI di creazione e ricaricamento; le integrazioni statiche native dei codec restano solo-Delphi e riportano un errore esplicito di operazione non supportata nelle build Free Pascal
Version 2.729.0
Added
- Aggiunto un runtime di widget XFA dinamico e neutrale rispetto all'host, con editing Unicode, gestione del focus e hit testing, binding consapevole delle istanze, validazione e calcolo atomici, reflow limitato e una factory read-only per documenti caricati che preserva l'XFA sorgente
Version 2.728.0
Fixed
- Corretti la misurazione intrinseca XFA e la continuazione del testo per preservare i valori vuoti espliciti e quelli calcolati, usare il contesto di binding di ogni campo o riga ripetuta, mantenere le azioni breakAfter, evitare collisioni di nomi sintetici e far rispettare un budget globale di misurazione in cache
Version 2.727.0
Changed
- Il layout XFA ora applica le dimensioni intrinseche minime e massime, misura i campi growable dal loro testo collegato e spezza atomicamente il contenuto textEdit idoneo attraverso aree di contenuto e pagine, con campi di continuazione read-only e budget limitati per testo, frammenti e misurazioni
Version 2.726.0
Added
- Aggiunti gli attributi completi NChannel per process e spot, gli hint di miscelazione, gli stream limitati di inchiostri spettrali CxF/X-4 del PDF 2.0 e i controlli di consistenza a livello documento per le definizioni di tint spot e le tabelle di coloranti degli output intent esterni
Version 2.725.0
Added
- Aggiunto un backend di rendering SIMD per scanline deterministico e thread-safe che esegue il preflight delle display list a rettangoli supportate, scrive la superficie bitmap finale a blocchi vettoriali senza una copia bitmap intermedia e restituisce le ragioni esatte di rifiuto per richiesta attraverso l'esistente fallback software e la pipeline di telemetria
Version 2.724.0
Changed
- Ampliato l'evaluator FormCalc nativo limitato con aggregati generali su node-set SOM, argomenti misti scalari e node-set, chiamate numeriche e su stringhe annidate, e funzioni deterministiche di selezione, stringa, trigonometria, logaritmi e conversione sotto i budget esistenti per operazioni, array, profondità, tempo e output
Version 2.723.0
Changed
SubsetLoadedFontsora esegue il subsetting in sicurezza dei programmi Type 1 incorporati PFB e PFA binari spezzati ed esadecimali, mantiene le dipendenze ricorsive dei compositi TrueType e chiude le dipendenze degli outline COLR v0/v1 preservando le tabelle di colore, bitmap, variazione e shaping
Version 2.722.0
Added
- Aggiunti callback per password limitati per le entry XPS, EPUB e CBZ cifrate con ZIP classico, con limiti di retry per entry, controlli di cancellazione, gestione delle credenziali solo in memoria e rifiuto fail-closed della cifratura non disponibile, non valida o non supportata
Version 2.721.0
Changed
DownsampleLoadedImagesora ridimensiona i campioni immagine Separation e DeviceN a 8 bit supportati direttamente nello spazio dei componenti e preserva il grafo originale degli spazi colore, la tint transform, i coloranti, gli intervalli/Decodee la semantica overprint attraverso salvataggio e ricaricamento
Version 2.720.0
Added
- Aggiunti overload di riconoscimento integrati e limitati per OCR ASCII maiuscolo ad alto contrasto, Code 39 orizzontale e simboli QR versione 1 in byte mode puliti e allineati agli assi, che permettono livelli di testo ricercabile e decodifica barcode delle pagine caricate senza un motore fornito dal chiamante, mentre l'input ambiguo o non supportato fallisce in modo sicuro
Version 2.719.0
Added
- Aggiunto il raffinamento limitato di JPEG 2000 per risoluzione e quality layer tramite
THPDFJpeg2000Decoder.LoadProgressiveFromByteArray, più la codifica multi-layer tramiteTJpeg2000Bitmap.QualityLayers, con pixel finali identici per gli ordini di progressione LRCP, RLCP, RPCL, PCRL e CPRL
Version 2.718.0
Changed
- Incorporate le CMap complete UniJIS, UniGB, UniCNS e UniKS UCS2 e UTF16 orizzontali e verticali, inclusi gli scalari supplementari e i default verticali standard, così l'estrazione del testo CJK e la geometria non dipendono più da file di mappatura Unicode esterni o stime a mezza em
Version 2.717.0
Added
- Aggiunti intervalli espliciti di dipendenze shared-object per i documenti linearizzati e uno scheduler di redraw all'arrivo degli intervalli, così le pagine possono dipingere prima che tutte le dipendenze opzionali siano arrivate e ridisegnare esattamente quando i dati appena disponibili cambiano il risultato
Version 2.716.0
Added
- Aggiunta la riparazione limitata del grafo degli oggetti per i riscontri preflight azionabili su xref, trailer, catalog, page tree e name tree, con commit della transazione validato e rollback completo su input non sicuro o ambiguo
Version 2.715.0
Added
- Aggiunti i wrapper di payload cifrato del PDF 2.0 il cui contenuto visibile del documento resta leggibile prima dell'autenticazione, mentre nomi, descrizioni e byte dei file incorporati restano protetti fino a uno sblocco esplicito con password
Version 2.714.0
Changed
- L'export SVG delle pagine caricate ora emette gradienti assiali e radiali, rappresentazioni PNG limitate degli shading mesh dal Type 4 al Type 7 e immagini inline decodificate, senza incrementare i contatori di skip corrispondenti
Version 2.713.0
Changed
- I glifi a colori SVG OpenType ora usano la pipeline Form XObject limitata per archi, gradienti vettoriali, opacità, maschere geometriche e riuso locale di
#id, continuando a rifiutare script, risorse esterne, immagini e contenuto attivo non supportato
Version 2.712.0
Changed
ReplaceLoadedPageTextora sostituisce le corrispondenze che attraversano item di stringa e arrayTJtramite span delle sorgenti dei glifi, preservando i numeri di kerning, i prefissi e suffissi non corrisposti, gli operandi non correlati e la struttura originale del content stream
Version 2.711.0
Added
- Aggiunta la risoluzione di
SyntheticBaseper i CFF FontSet con valori Top e Private DICT ereditati, CharStrings, charset, Encoding e Local Subrs, più una semantica di override deterministica e il rifiuto limitato dell'ereditarietà non valida, ciclica o troppo profonda
Version 2.710.0
Added
- Aggiunta la selezione deterministica e limitata del predittore Flate tramite
HPDFSelectFlatePredictor, con campioni di riga distribuiti, costo stimato in byte, ponderazione CPU configurabile e budget espliciti per byte, righe e lavoro
Version 2.709.0
Added
- Aggiunto l'output nativo opt-in di symbol dictionary e text region JBIG2 Huffman tramite
THPDFJBIG2Options.UseHuffmanEncoding, incluse le tabelle standard DH, DW, BMSIZE, FS, DS e DT, le bitmap collettive raw, le tabelle di symbol ID, il routing nativo deterministico e i round trip pixel-exact del decoder, mantenendo i default arithmetic e MMR
Version 2.708.0
Changed
- Messe in cache, per generazione del font registrato, le mappature inverse cmap dei caratteri arabi e delle presentation form combinate, sostituendo le scansioni ripetute U+FB00..U+FDFF e U+FE70..U+FEFF in
ApplyArabicGSUBRefinement,ApplyArabicGSUBContextualRefinemente nel percorso GSUB contestuale generico, preservando la precedenza dei codepoint e l'output con shaping
Version 2.707.0
Added
- Aggiunto l'encoder di barcode 2D Aztec (ISO/IEC 24778) tramite
THPDFPage.DrawAztece l'unitàTHPDFAztec: codifica di alto livello con programmazione dinamica completa di mode latch, shift e sequenze binary-shift, bit stuffing, correzione d'errore Reed-Solomon su GF(16) fino a GF(4096), selezione automatica dei simboli compatti 15x15..27x27 o full 19x19..143x143 e controllo del livello forzato per dimensioni di simbolo fisse - Aggiunto l'assemblaggio del testo verticale di pagina:
THotPDF.ExtractLoadedPageTexte le API di aggregazione range/stream ora raggruppano i glifi WMode 1 in colonne sull'origine X del glifo, ordinano le colonne da destra a sinistra e percorrono ogni colonna dall'alto in basso, invece di tritare il testo CJK verticale in righe per glifo
Fixed
- Risolto il fallimento dell'export parallelo a bande per un disallineamento della larghezza delle bande PNG sulle pagine con dimensioni in pixel frazionarie (A4 a 96 DPI): la dimensione raster ora viene arrotondata con
Ceilin modo uniforme con i band writer, così i tile consegnati corrispondono sempre alla larghezza dell'encoder
Version 2.706.0
Added
- Aggiunti l'export PNG in streaming delle pagine caricate e l'export TIFF multipagina a bande tramite
THotPDF.SaveLoadedPageToPng,SaveLoadedPageToPngStream,SaveLoadedPagesToTiffBandedeSaveLoadedPagesToTiffStreamBanded, che scrivono i dati immagine compressi riga per riga attraverso band encoder, così le pagine molto grandi non richiedono un framebuffer completo;THPDFBandImageExportInforiporta la telemetria di pagina, banda, riga, worker, memoria, output, timing e cancellazione
Version 2.705.0
Added
- Aggiunta la finalizzazione PDF/A ai percorsi di salvataggio dei documenti caricati:
THotPDF.SaveLoadedDocumenteSaveLoadedDocumentToStreamconvalidano oraGTS_PDFA1(ereditato dal catalogo della sorgente o appena registrato) ed emettono l'identificazione XMPpdfaid:part/pdfaid:conformancequandoPDFAComplianceè impostato, preservando byte per byte un pacchetto pdfaid esistente al risalvataggio - Aggiunto il consumo della scrittura verticale (WMode 1) lato caricamento: le metriche di cella
/W2e/DW2dei CIDFont ora guidano l'estrazione del testo e il rendering della pagina, percorrendo le colonne lungo l'asse y dello spazio testo con il vettore di posizionamento v1x/v1y invece degli avanzamenti orizzontali/Wadvances
Version 2.704.0
Added
- Aggiunto il rendering parallelo a tile e bande delle pagine caricate tramite
THotPDF.RenderLoadedPageTilesParalleleTHotPDF.RenderLoadedPageBandsParallel, con callback nel thread chiamante in ordine per riga, bitmap prese in prestito, cancellazione cooperativa, memoria in-flight controllata dal chiamante, ammissione basata sul picco di memoria e una cache immutabile limitata di glifi Type 3 e halftone screen condivisa tra contesti di rendering isolati
Version 2.703.0
Added
- Aggiunti i batch di digest multisign CSC limitati tramite
THPDFCSCSignatureProvider.SignHashBatch, che usa un SAD hash-pinned e una richiestasignatures/signHashper un batch ordinato a algoritmo unico, facendo rispettare i limitimultisignlocali e delle credenziali, la cardinalità rigorosa delle risposte, l'ordinamento dei risultati sincrono o asincrono, le chiavi di idempotenza SHA-256 basate sul contenuto e il replay del batch completato
Version 2.702.0
Added
- Esteso
THotPDF.RenewPAdESLTATimestampcon evidenze di certificato, OCSP e CRL fornite dal chiamante, che vengono fuse nel DSS esistente prima del nuovo timestamp di documento RFC 3161, preserva ogni revisione precedente byte per byte e deduplica esattamente gli stream di validazione attraverso rinnovi successivi
Version 2.701.0
Added
- Aggiunto il preflight PAdES baseline ed extended profile indirizzabile per clausola tramite
THotPDF.PreflightLoadedPAdES, che riporta ogni requisito applicabile con rule ID stabile, profilo, livello normativo, clausola di standard, percorso PDF, numero oggetto, revisione firmata o corrente e stato di superamento, validando le cardinalità CMS, i riferimenti ESS del certificato del firmatario, i vincoli del dizionario di firma, la copertura dei byte range, il trusted time, le evidenze DSS e la copertura del timestamp di documento
Version 2.700.0
Added
- Aggiunti il caricamento end-to-end delle chiavi private PFX / PKCS#12 ECDSA, Ed25519 e Ed448 e la firma CMS dei documenti, inclusi ECDSA CNG con curve nominate, PureEdDSA opzionale OpenSSL 3, decodifica delle chiavi RFC 8410, regole di digest e parametri RFC 8419, SHAKE256 con output a 512 bit per Ed448, selezione automatica dell'algoritmo della chiave e abbinamento rigoroso certificato-chiave
Version 2.699.0
Added
- Aggiunta la selezione deterministica delle credenziali multi-identità PFX / PKCS#12 tramite
HPDFEnumeratePFXIdentities,HPDFParsePFXByLocalKeyIDeTHPDFCMSSignOptions.PFXLocalKeyID, inclusi gli attributi baglocalKeyIdefriendlyNamerigorosamente a valore singolo, l'abbinamento a chiave pubblica, i bag safe-content ricorsivi, la diagnostica limitata di ambiguità e cicli, e l'incorporamento automatico della catena di certificati intermediate e root corrispondente con deduplica esatta del DER
Version 2.698.0
Added
- Ampliata la decifratura in-process di PFX / PKCS#12 PBES2 con AES-128-CBC e AES-192-CBC più PRF PBKDF2 HMAC-SHA-384 e HMAC-SHA-512, inclusa la validazione opzionale di
keyLengthspecifica del cipher e controlli limitati su salt, iterazioni, IV e padding, mantenendo la compatibilità con AES-256-CBC e HMAC-SHA-1 / SHA-256
Version 2.697.0
Added
- Aggiunta la conversione XPS e OpenXPS Canvas conforme alla specifica
FixedPage.NavigateUriper i Canvas XPS e OpenXPS conforme alle specifiche, così i visual discendentiPath,Glyphse Canvas annidati ricevono l'URI con scope a meno che non lo sovrascrivano, preservando le azioniLinkTargetesterne, di posta, di pagina del package e con percent-decoding attraverso trasformazioni, clip annidati, gruppi di opacità isolati, soppressione dei visual riutilizzabili, ripristino dopo override annidati e i limiti esistenti su link, URI, cancellazione e scheme non sicuri
Version 2.696.0
Added
- Aggiunti i gruppi di trasparenza nativi limitati per i Canvas XPS e OpenXPS, così i valori
OpacityeCanvas.OpacityMasksolidi, a gradiente o a immagine compositano una sola volta i visual figli sovrapposti tramite Form XObject DeviceRGB isolati, con alpha uniforme accorpato, soft mask a alpha variabile condivisi, gruppi annidati, clip trasformati, trasferimento delle risorse, link preservati e rifiuto fail-closed del contenuto malformato, non supportato, singolare o troppo grande
Version 2.695.0
Added
- Aggiunta la conversione nativa limitata di
Canvas.Clipper geometrie abbreviate, locali o remoteStaticResourcePathGeometryvalori, elementi proprietà diretti, figure strutturate di linee, Bézier, quadratiche e archi, trasformazioni di geometria, clip vuoti e annidatoEvenOddoNonZerotramiteW*oWdel PDF, con bounds di navigazione ritagliati, limiti di parsing a 100.000 valori e rifiuto fail-closed delle trasformazioni malformate o singolari
Version 2.694.0
Added
- Aggiunta la navigazione nativa limitata XPS e OpenXPS per i visual
PatheGlyphstrasformati, che preserva i link HTTP, HTTPS e di posta come annotazioni URI PDF e risolve le pagine relative al package più i frammentiLinkTargetcon percent-decoding come azioni PDF GoTo in avanti o indietro dopo che tutte le pagine esistono, con click bounds consapevoli delle metriche, limiti di 65.536 link e 8.192 caratteri, soppressione della cattura dei VisualBrush, cancellazione e diagnostica fail-closed per scheme non sicuri
Version 2.693.0
Added
- Aggiunta la conversione nativa limitata di
VisualBrushXPS e OpenXPS per i visualCanvas,PatheGlyphsinline o basati su risorse, la lookup gerarchica e remota diResourceDictionary,Viewboxassoluto,Viewport,None,Tilee riflessa, trasformazioni, opacità, Form XObject riutilizzabili, tiling pattern condivisi, trasferimento delle risorse consapevole dei token e budget fail-closed per cicli, input malformato, ricorsione, contenuto, cache e posizionamento
Version 2.692.0
Added
- Aggiunto l'incorporamento nativo dei font di package XPS e OpenXPS per programmi TrueType e OpenType, frammenti di membri TTC, risorse offuscate con GUID, ID glifo diretti o derivati dalla cmap, cluster Unicode uno-a-molti, avanzamenti e offset espliciti, origini RTL con larghezza corretta, risorse font condivise, permessi di embedding e no-subsetting, subsetting opzionale dei glifi, mappe
ToUnicodelimitate e output a run posizionati con costo lineare ammortizzato, senza sostituzione delle face via GDI
Version 2.691.0
Added
- Aggiunto il layout OpenXPS limitato
GlyphsIndiceslayout per conteggi rigorosi di unità di codice e glifi dei cluster, advance espliciti in centesimi di em, offset orizzontali e verticali, progressioneBidiLeveldispari, riempimenti solidi da attributo o da elemento proprietà, opacità, batching nativo PDFTJ, fallback a cluster Unicode posizionati, estrazione del testo preservata, diagnostica fail-closed per input malformato e buffer lineari ammortizzati con tetto a 65.536 mappature
Version 2.690.0
Added
- Aggiunto il supporto a
Path.OpacityMaskdi OpenXPS per maschere solide, a gradiente lineare multi-stop con alpha variabile e radiale ellittico, eImageBrushPNG ordinarie, a tile o riflesse, tramite alpha uniforme accorpato, gruppi di trasparenza DeviceGray nativi limitati, shading pattern e stream soft mask di immagine condivisi, gestione fail-closed del contenuto non supportato e il builder riutilizzabileRegisterLuminositySoftMaskStatecon binding delle risorse delle immagini alpha
Version 2.689.0
Added
- Aggiunto OpenXPS
ImageBrushTile,FlipX,FlipYeFlipXYtramite pattern di tiling PDF nativi con uno, due o quattro piazzamenti ritagliati indipendentemente, risorse immagine e soft-mask PNG condivise, matrici di pagina fissa, percorso e brush composte, e i limitiRegisterImageTilingPatternper pattern basati su immagini riutilizzabili
Version 2.688.0
Added
- Aggiunto il supporto a
ImageBrush.Transformdi OpenXPS per matrici di attributi a sei parametri finite ed elementi proprietàMatrixTransform, concatenate dopo il clipping nativo deiPathe prima del clipping del viewport e del posizionamento dell'immagine, così il brush può ruotare, scalare, inclinare o traslare senza cambiare la geometria vettoriale che lo contiene;RelativeTransformnon standard e risorse di matrice non risolte restano diagnostica esplicita
Version 2.687.0
Added
- Aggiunto il posizionamento degli image XObject controllato da matrice tramite
THPDFPage.ShowImageMatrixe ampliato l'import delle fixed page XPS con riempimentiImageBrushJPEG, PNG, TIFF e JPEG XR del package, mappaturaViewboxeViewportassoluta o relativa ai bounds, clipping nativo di path e viewport singolo, opacità di immagine e path, alpha delle soft mask PNG, dimensionamento consapevole del DPI a 96 DPI, caching condivisa delle risorse decodificate e diagnostica fail-safe per tiling, trasformazioni, conversioni colore e stroke di immagini non supportati
Version 2.686.0
Changed
- Aggiunta la registrazione riutilizzabile e limitata dei gradienti radiali multi-stop e ampliato l'import nativo-vettoriale dei path XPS con valori ellittici
RadialGradientBrushda elementi proprietà, spread Pad, alpha uniforme degli stop, opacità del brush, mappatura relativa o assoluta di centro, origine e raggio, shading PDF Type 3 nativo e ripristino delle coordinate che lascia invariata la geometria del path
Version 2.685.0
Changed
- Ampliato l'import ordinato nativo-vettoriale dei path XPS con parsing degli elementi proprietà consapevole delle virgolette e limitato, brush a gradiente lineare solidi e multi-stop, shading pattern PDF nativi, alpha di brush e stop, coordinate del gradiente predefinite relative ai bounds o assolute esplicite, interpolazione degli stop fuori intervallo e diagnostica fail-safe per trasformazioni, modalità di spread, interpolazione colore, alpha variabile e assi degeneri non supportati
Version 2.684.0
Changed
- Aggiunto l'import ordinato nativo-vettoriale dei path XPS con geometria abbreviata limitata, regole di fill, fill e stroke solidi RGB e ARGB, opacità del path, spessore dello stroke, trasformazioni a sei parametri e diagnostica fail-safe per le funzionalità di disegno non supportate
Version 2.683.0
Changed
- Rinforzata la validazione PDF/X-6 sul contenuto effettivamente dipinto con lo stato grafico dei shading pattern al momento della definizione, la semantica ExtGState dei pattern non stroke, i controlli fail-closed su sottotipo di soft mask e backdrop, le metriche esatte dei glifi Type 3 e le regole del colore ereditato, la classificazione rigorosa dell'alpha dei paint combinati, l'inferenza colore JPX limitata e il compositing delle annotazioni consapevole delle appearance
Version 2.682.0
Added
- Aggiunto il supporto di producer e verifier per le firme ECDSA
brainpoolP256r1,brainpoolP384r1ebrainpoolP512r1, inclusi la matrice di digest SHA-2 e SHA3 specifica della curva, la validazione di firma fail-before-provider, i parametri rigorosi dei certificati con curve nominate, gli identificatori di algoritmo ECDSA senza parametri, i valori di firma DER canonici, l'import Windows CNG delle curve nominate e la diagnostica deterministica per parametri espliciti, finali, sconosciuti o non corrispondenti
Version 2.681.0
Changed
- Unificata l'esecuzione del contenuto per bitmap non progressive, DC diretto, Form e display list tramite
HPDFInterpretContentTokensDevicee l'estensione completa facoltativaIHPDFContentOperatorDevice, con un checkpoint di cancellazione per operatore, caching a compile time degli indici di operatore per il replay delle display list senza scansione degli operandi, metriche pubblicheOperatorCount, compatibilità dei semantic device preservata, semantica corretta degli operatori",veye gestione legale del terminatoreEIsenza falsi diagnostici di fallback
Version 2.680.0
Added
- Aggiunti gli overload transazionali e limitati di
RepairPDFA4con opzioni tipizzate, report di riparazione dettagliati, provenienza condivisa dei riscontri, normalizzazione sicura di header PDF 2.0, trailer ID, metadata, Catalog e presentazione, riparazione dell'identificazione PDF/A consapevole dei namespace, policy di commit configurabile parziale o a piena conformità, rilevamento delle regressioni d'errore, rollback byte-exact del grafo e dell'XMP, e un confine rigoroso che preserva il contenuto delle pagine, i font, il colore, la trasparenza, le immagini, gli operatori grafici e il testo estratto
Version 2.679.0
Added
- Aggiunta la validazione PDF/X-6 sul contenuto effettivamente dipinto, con regole selezionabili tra ISO 15930-9:2020 o errata corrige risolta 2025, controlli effettivi su header e canali ICC, attraversamento delle risorse consapevole per array di contenuto, Form XObject, tiling e shading pattern, immagini, glifi Type 3, soft mask e appearance delle annotazioni, diagnostica su overprint mode e trasparenza dei paint combinati, provenienza stabile delle regole e lavoro limitato su byte decodificati, token, oggetti, problemi, ricorsione e stato grafico
Version 2.678.0
Added
- Approfondita la validazione limitata PDF/A-4 con controlli in cache su header e componenti ICC, consistenza degli output intent a livello documento e pagina, analisi effettiva di colori device dipinti e trasparenza attraverso array di contenuto, Form XObject annidati, immagini, image mask, shading e appearance delle annotazioni, stato grafico ereditato, embedding dei font di rendering, relazioni CIDFont e CMap, flag e appearance state delle annotazioni rigorosi, validazione del pacchetto XMP UTF-8 e dei namespace, posizioni logiche nel page tree, diagnostica stabile con consapevolezza delle clausole e tetti configurabili per byte decodificati e token di contenuto
Version 2.677.0
Added
- Completata la validazione limitata PDF/UA-2 su documento, stringhe leggibili, optional content, annotazioni, AcroForm, destinazioni di struttura, outline, file incorporati e page label annidate, inclusa l'appartenenza fisica al ParentTree, i figli scalari della struttura, le restrizioni sugli appearance stream, le proprietà XMP basate su namespace URI, il rilevamento dell'uso privato Unicode e la diagnostica con consapevolezza delle clausole; l'export strutturato HTML, XHTML, XML e JSON ora condivide un modello di lettura accessibile tag-first, con lingua, titolo, navigazione, page label, link sicuri, annotazioni, controlli di form non sensibili, sostituzioni dei marked-content, artifact, alternative delle immagini, fallback geometrico, limiti indipendenti, cancellazione e pubblicazione atomica
Version 2.676.0
Added
- Aggiunta la pianificazione limitata e minimale dei byte range per ogni pagina di un PDF linearizzato tramite
PlanProgressiveLinearizedPageRanges, con decodifica degli hint primari o di overflow raw e Flate, layout di hint combinati allineati al byte e a split continuo dell'Allegato F interoperabili, dipendenze esatte di bootstrap, pagina, gruppo condiviso e cross-reference tradizionali o a stream con prefisso LF o CRLF, accumulo legale di letture corte, un tetto predefinito di memoria del planner di 256 MiB con disambiguazione della codifica fail-closed, merging consapevole delle sovrapposizioni, controlli incrociati strutturali rigorosi, limiti tipizzati e diagnostica di disponibilità, e un percorso unificato[0, /E)per la prima pagina
Version 2.675.0
Added
- Aggiunte politiche di crypt filter indipendenti e conformi agli standard per stringhe, stream normali e file incorporati tramite
ConfigureCryptFilterDefaultseSetStreamCryptFilter, inclusi i filter riservati a password e chiave pubblica,/Identity, la/EFFdi password security corretta per il writer e le pipeline con/Cryptin testa, i confini fail-closed dei recipient per stream a chiave pubblica, il caricamento e l'ispezione case-sensitive dei named filter esterni,/CFM /None, il report della lunghezza chiave V2, il fallback Direct File a politica mista, le politiche separate per il contenitore object stream e le stringhe membri, e gli aggiornamenti incrementali cifrati che preservano le politiche
Version 2.674.0
Added
- Aggiunti gli aggiornamenti incrementali cifrati Standard e a chiave pubblica che preservano le credenziali, tramite un overload di
BeginIncrementalUpdateconsapevole della password e il key material dei recipient assegnato, con file key o FEK trattenute in modo sicuro, politiche di crypt filter separate per stringhe, stream, metadata e Identity, derivazione legacy delle chiavi degli oggetti consapevole delle generazioni, riferimenti/Encryptereditati esatti, revisioni della sorgente byte-identiche, accesso originale a utente, owner o recipient e rifiuto fail-closed dei cambi di cifratura o dei filter eterogenei non supportati
Version 2.673.0
Security
- Aggiunta la validazione limitata del grafo dei segmenti JBIG2 prima della decodifica full-page, di regione, nativa o esterna e prima della condivisione del dizionario globale, con controlli indicizzati su duplicati e riferimenti mancanti, rilevamento iterativo di cicli e profondità delle dipendenze, enforcement dell'associazione a pagina degli stream incorporati, rifiuto dei segmenti vietati, budget per riferimenti lunghi e archi aggregati, guardie di allocazione dei symbol dictionary e telemetria precisa dei fallimenti
Version 2.672.0
Added
- Aggiunta la generazione e la validazione rigorosa del
signature-policy-identifierPAdES E-EPES con policy OID espliciti, hash noti o sconosciuti ETSI, qualificatori SPuri, SPUserNotice e SPDocSpecification, parsing limitato di Unicode e collezioni, hashing del documento di policy, pinning di OID e hash del firmatario primario prima del lavoro crittografico, stati dedicati per le mancate corrispondenze e reporting JSON completo
Version 2.671.0
Added
- Aggiunti i contenitori RFC 5652 deterministici con fino a 256 record
SignerInfoprimari indipendenti tramiteHPDFCMSBuildMultiSignedDataeHPDFCMSMergeSignedData, inclusa la prevalidazione dell'intero batch prima degli effetti collaterali dei signer, attributi, algoritmi, certificati e provider per signer, validazione rigorosa dei contenitori a lunghezza definita, insiemi ordinati DER e deduplicati, risultati di verifica indipendenti, compatibilità byte per firmatario singolo e dimensionamento dei placeholder aggregato senza effetti collaterali
Version 2.670.0
Added
- Aggiunte le identità di signer RFC 5652
SubjectKeyIdentifieropzionali tramiteTHPDFCMSSignOptions.SignerIdentifier, inclusa la codifica compatta IMPLICIT del SID, la selezione automatica della versione diSignerInfoeSignedData, l'estrazione rigorosa delle estensioni X.509, il supporto a provider e dimensionamento dei placeholder e il matching fail-closed di SID, certificato e versione durante la verifica
Version 2.669.0
Security
- Aggiunta la diagnostica fail-fast sulla consistenza degli algoritmi di digest CMS attraverso
SignedData.digestAlgorithms,SignerInfo, i parametri del meccanismo di firma e ilCMSAlgorithmProtectionRFC 6211, con stato di verifica dedicato, codice di fallimento della validazione, propagazione del timestamp, motivazioni dettagliate dei problemi e output JSON
Version 2.668.0
Added
- Aggiunta la generazione e la verifica SHA3-256, SHA3-384 e SHA3-512 attraverso CMS detached, RSA PKCS#1 v1.5, RSA-PSS, contratti dei provider ECDSA, timestamp di contenuto e firma RFC 3161, rinnovo PAdES-LTA, dizionari Seed Value e dichiarazioni di developer extension PDF 2.0 ISO 32001, con hashing limitato a singolo passaggio dei byte range condiviso con le politiche PDF MAC corrispondenti
Version 2.667.0
Added
- Aggiunto
THotPDF.ValidatePDFMACChaincon validazione delle revisioni incrementali dalla più vecchia alla più nuova, indicizzazione cumulativa classica o a xref stream, posizioni esatte dei fallimenti su revisione e xref, rilevamento della sostituzione storica del MAC, enforcement stabile diKDFSalt, rifiuto dei downgrade di forza del digest, controlli autenticati su/Pe/Perms, reporting di preflight e parsing limitato delle revisioni senza copie temporanee del PDF
Version 2.666.0
Added
- Aggiunto
THotPDF.SignPDFWithPFXAndAttachedPDFMACe la validazione con MAC allegato alla firma, tramiteAuthCodediretto nel trailer attivo,SigObjRefindiretto, copertura completa della revisione firmata, binding del digest al valore della firma raw, politiche PDF MAC SHA-2 o SHA-3, hashing in un passaggio dei range di firma e MAC, reporting di preflight e sostituzione atomica dell'output
Version 2.665.0
Fixed
- Corretto
THotPDF.RegisterNChannelColorSpaceper emettere la formaDeviceNa cinque elementi di ISO 32000-2 con/Subtype /NChannele metadata dei componenti process, alzata la sua versione minima PDF a 1.6 e le soft mask di luminosità ora risolvono il paint NChannel attraverso il suo spazio alternativo, mantenendo la compatibilità in lettura con i token legacy della famiglia/NChanneltoken di famiglia
Version 2.664.0
Added
- Completato il rendering delle blend mode PDF con implementazioni integer dell'hot path per Hue, Saturation, Color e Luminosity, e corretta la fast path a opacità piena così ogni blend mode separabile o non separabile attivo fa compositing contro il suo backdrop
Version 2.663.0
Security
- Autenticati i contenitori PKCS#12 prima di esporre i contenuti safe cifrati, verificando l'eventuale
MacDataesterno con iterazioni KDF PKCS#12 limitate, HMAC SHA-1 o SHA-256, confronto dei digest a tempo costante e gestione fail-closed di password errata e manomissione
Version 2.662.0
Added
- Aggiunti tre comandi HotPDFCLI:
renderrasterizza ogni pagina selezionata in<prefix>-page<N>.pngattraverso la pipeline bitmap delle pagine caricate (intervallo--pages,--dpi10..2400, predefinito 150),tablesestrae le tabelle tipizzate in CSV o JSON tramiteExportLoadedTypedTables(--json,-ofile or console) andcomparestampa il report di confronto JSON di due documenti tramiteHPDFDocCompareDocuments(--mode0..5 che copre page-count, page-text, object-count, rendered-image, full e structural)
Fixed
- Risolto il problema della pipeline di trasformazione ICC Win64 che produceva output tutto zero dalle trasformazioni batch a 8 bit (
TransformBytes): la fast path ottimizzata 1D-LUT dentro gli oggetti lcms2 Win64 restituisce zeri mentre la pipeline generica di resampling è corretta, così la trasformazione a 8 bit ora compila concmsFLAGS_NOOPTIMIZEsolo su Win64; il percorso a 16 bit a colore singolo e tutte le trasformazioni Win32 mantengono la fast path ottimizzata (le primarie sRGB batch ora fanno round trip su entrambe le piattaforme)
Version 2.661.0
Added
- Aggiunta la vera compressione Flate ad alto rapporto Zopfli con budget, dopo la baseline zlib a quattro strategie esistente, con selezione rigorosa senza crescita, limiti su input, iterazioni, blocchi, output e tempo trascorso, telemetria dettagliata di stream e immagini parallele e gate deterministici di risparmio su corpus fisso
Version 2.660.0
Added
- Aggiunti i report di preflight XML leggibili dalle macchine e deterministici e i plugin trusted con versione ABI per l'estrazione di feature e regole di validazione personalizzate, con ordinamento stabile, integrazione dei policy bundle, propagazione della cancellazione, controlli fail-closed delle capability e budget finiti per plugin, riscontri, feature, stringhe, output e tempo trascorso
Version 2.659.0
Added
- Esteso il FormCalc XFA limitato con logica condizionale, aggregati numerici ripetuti e callback di istanze dinamiche validati, e aggiunti gli script di form QuickJS sandboxati e disattivati per default, con controllo di flusso completo, typed array nativi, accesso ai dati isolato, budget finiti per istruzioni, tempo, memoria, stack, valori e operazioni per istanza, e telemetria di esecuzione
Version 2.658.0
Added
- Aggiunti i DOM modificabili e limitati dei pacchetti XFA per stream XDP completi e array ordinati di pacchetti, con query sui path per local name, mutazione di pacchetti e nodi, preservazione esatta dei byte intatti, riscrittura selettiva per pacchetto, output deterministico di namespace e attributi, spezzatura sicura dei CDATA, escaping delle entità e budget finiti per input, output, pacchetti, nodi, profondità, attributi, testo e query
Version 2.657.0
Added
- Aggiunta la firma remota CSC API v2 attraverso l'esistente pipeline dei provider CMS, con transport di proprietà dell'applicazione, refresh dei token OAuth, scoperta limitata della catena di credenziali, gestione esplicita di authorization e SAD, firma dei digest sincrona o asincrona, parametri RSA-PSS, polling, timestamp RFC 3161, cancellazione, chiavi di idempotenza stabili e una cache finita delle operazioni completate
Version 2.656.0
Added
- Aggiunti i document handler opzionali con punteggio sul contenuto per XPS, EPUB e CBZ, con registrazione thread-safe sostituibile, una sola scansione validata dell'archivio, ordinamento a fixed page, spine e immagini naturale, caching immutabile delle conversioni PDF, budget condivisi per archivio, risorse, reflow, pagine, pixel, DPI, output e cancellazione, e pubblicazione PDF sicura rispetto al rollback
Version 2.655.0
Added
- Aggiunta l'estrazione limitata di tabelle tipizzate e l'export atomico CSV o JSON con colonne canoniche, merging dei frammenti nella stessa pagina e delle pagine consecutive, span di celle unite, intestazioni ripetute, geometria di pagina, confidence, provenienza e inferenza controllata dalla locale per interi, numeri, booleani, date, date-time, valute e percentuali
Version 2.654.0
Added
- Aggiunto l'export strutturato atomico delle pagine caricate in HTML, XHTML, XML e JSON attraverso un unico modello di ordine di lettura con blocchi, span stilizzati, tabelle rilevate, coordinate, ordine della sorgente, immagini PNG opzionali limitate, escaping Unicode-safe, cancellazione e budget finiti delle risorse
Version 2.653.0
Added
- Aggiunta la riscrittura atomica del colore delle pagine caricate in DeviceGray, DeviceRGB o DeviceCMYK, con preservazione del vettoriale ricercabile, conversione raster lossless con gestione del colore per immagini e risorse complesse, output sicuro rispetto alla rotazione, budget espliciti di fedeltà di rendering e risorse, e politiche preserve, process-convert o reject per le lastre spot
Version 2.652.0
Added
- Aggiunta la rilevazione review-first degli oscuramenti sulle pagine caricate con pattern PII sensibili al checksum, detector di entità e volti pluggable, findings nello spazio pagina con punteggio di confidence, telemetria di lavoro limitata, identità obbligatoria del revisore, staging atomico delle annotazioni approvate e un confine esplicito separato per il burn-in
Version 2.651.0
Added
- Aggiunta la decodifica barcode limitata su pagine caricate e regioni con motori pluggable, rendering progressivo a bassa risoluzione, scan di fallback con rotazioni di un quarto di giro, testo e payload raw validati, bounds e orientamento nello spazio PDF, filtraggio per confidence, deduplicazione delle sovrapposizioni, cancellazione e telemetria delle risorse
Version 2.650.0
Added
- Aggiunti layer di testo OCR cercabili, limitati e cancellabili con motori di riconoscimento pluggable, validazione di confidence e geometria, testo Unicode invisibile allineato alla rotazione, raggruppamento optional-content, telemetria delle risorse e pubblicazione atomica multipagina
Version 2.649.0
Added
- Aggiunti round trip completi del grafo di oggetti attraverso JSON versionato con export snapshot in streaming ed export incrementali, payload sidecar incorporati e atomici raw o decodificati, import limitato compatibile con lo schema, validazione strutturale e delle lunghezze degli stream e pubblicazione transazionale
Version 2.648.0
Added
- Aggiunta la riparazione limitata dei documenti diagnostici QDF modificati a mano che preserva i byte di oggetti e stream, corregge le lunghezze di stream dirette, indirette, mancanti o non aggiornate, ricostruisce gli offset cross-reference classici e i trailer, rifiuta le strutture non sicure e verifica l'output attraverso il loader normale
Version 2.647.0
Added
- Aggiunto un registro thread-safe di filtri stream personalizzati con contratti push e pull limitati, budget di decodifica condivisi, cancellazione cooperativa, requisiti seek espliciti, failure dei filtri custom isolati e telemetria di esecuzione
Version 2.646.0
Added
- Aggiunte API visitor ed eventi per i content operator con viste read-only degli operandi, callback di stato deterministiche, azioni inspect, measure, replace, delete, stop e reject, cancellazione cooperativa, output validato e aggiornamenti atomici delle pagine caricate
Version 2.645.0
Added
- Aggiunto un contratto pluggable per il backend di rendering delle pagine caricate con accesso alle display list compilate, implementazione GDI nativa, dispatch parallelo thread-safe, politica di fallback deterministica, invalidazione della cache e telemetria di esecuzione
Version 2.644.0
Added
- Aggiunta la rilevazione limitata delle sovrapposizioni di layout, i path degli elementi, il source mapping opt-in, overlay nativi vettoriali di overflow e sovrapposizione, callback diagnostiche live e statistiche di lavoro
Version 2.643.0
Added
- Aggiunti chart vettoriali nativi e limitati con serie a linee, barre, aree, torta e scatter, assi automatici o manuali, temi, legende, etichette, alternative Figure PDF/UA e statistiche di rendering
Version 2.642.0
Added
- Aggiunta l'impaginazione RichEdit e RTF limitata sul thread GUI con output EMF vettoriale, immagini, presentazioni OLE supportate opt-in, cancellazione, preservazione della posizione di stream e budget espliciti su input, caratteri, pagine e output
Version 2.641.0
Added
- Aggiunto l'import limitato di SVG 2 come PDF Form XObjects riutilizzabili con geometria e archi nativi, cascade CSS, gradienti vettoriali, supporto clip e mask, testo Base 14, risorse di opacità, annotazioni di collegamento sensibili al posizionamento e statistiche di import
Version 2.640.0
Added
- Aggiunto un profilo di import HTML5 paged-media versionato con parsing DOM tollerante, cascade CSS per la stampa, layout a blocchi e tabelle impaginati, controlli AcroForm opzionali, risorse callback-driven limitate e statistiche per operazione
Version 2.639.0
Changed
- Le mappature di file locali di grandi dimensioni ora adattano il cap di byte mappati configurato tra finestre sequenziali più grandi e fino a 16 finestre MRU più piccole ad accesso casuale, conservano un'opzione esplicita a geometria fissa e riportano geometria attiva, transizioni, conteggi dei pattern di accesso e picchi di byte mappati
Version 2.638.0
Added
- Aggiunto il training limitato dei simboli JBIG2 attraverso le pagine con backend esterni e nativi, un unico dizionario globale condiviso, riutilizzo esatto delle pagine duplicate, inserimento diretto di batch di immagini PDF, telemetria di backend e dimensioni, e un risparmio di compressione misurato del 78,8% sul corpus di regressione di 100 pagine
Version 2.637.0
Changed
- Il rendering parallelo delle pagine caricate ora riduce i worker richiesti in base al budget di memoria a livello di processo, riserva ogni pagina rivendicata, mantiene le prenotazioni dell'output ordinato attraverso la consegna via callback, sveglia chi attende il budget in caso di cancellazione o failure e riporta telemetria su concorrenza, prenotazioni, ammissione, ritardi e attese
Version 2.636.0
Changed
- Il prefetch delle pagine caricate ora compila e renderizza fuori dal lock della cache, si cancella in modo cooperativo attraverso tokenization e playback, cede il passo al rendering in primo piano delle pagine ed espone telemetria su progresso, failure, preemption e latenza di cancellazione
Version 2.635.0
Added
- Aggiunto il rendering parallelo ordinato di pagine in streaming con callback sul thread chiamante, una queue limitata di bitmap completate, backpressure del producer, cancellazione cooperativa, lifetimes delle bitmap in prestito e telemetria su queue, byte, attese, completamenti e consegne
Version 2.634.0
Added
- Aggiunta una pipeline parallela a due stadi per le pagine caricate che compila le display list fuori dal lock della cache di rendering, avvia il playback prima che l'intero set di pagine sia compilato, bilancia dinamicamente worker limitati, preserva l'ordine di input, riduce l'allocazione dei content token ed espone telemetria su stadi, cache, completamenti e latenze
Version 2.633.0
Added
- Aggiunti handle immutabili con reference counting per le bitmap decodificate, con cache hit senza copie, disegno diretto thread-safe dal renderer, copie mutabili isolate on demand, lifetimes indipendenti dall'eviction e telemetria cumulativa su handle e copie
Version 2.632.0
Changed
- L'esecuzione di QuickJS ora funziona sia tramite oggetti statici sia tramite una DLL bridge ABI-neutral su Win32 e Win64, con valori Unicode-safe, report di stato deterministici, limiti configurabili su memoria, stack, script, tempo e interrupt, scoperta sicura delle DLL, recupero dopo script rifiutati e build runtime cross-platform riproducibili
Version 2.631.0
Changed
- La validazione delle regole di business di Factur-X e ZUGFeRD ora esegue l'intera superficie XPath 2 Schematron rivista con database di codici esterni, binding sequenziali, quantificatori, somme FLWOR, identificatori di regola fallback stabili, parsing XML sicuro e limitato, findings espliciti di errori di valutazione, zero skip silenziosi e validazione combinata fail-closed
Version 2.630.0
Added
- Aggiunta l'instancing integrata dei TrueType variable font con assi mappati, tuple
gvarcondivise e private, interpolazione IUP, aggiornamenti degli outline semplici e compositi, metriche phantom-point, baking diHVAR,VVAReMVAR, ricostruzione compatta dei glifi statici, output con checksum corretti e registrazione dei font Unicode senza callback
Version 2.629.0
Added
- Aggiunta la stima dei placeholder CMS senza effetti collaterali a partire da dimensioni di firma esplicite, del provider o da certificati RSA, modellazione esatta dei container statici, riserve conservative dei payload dinamici, rebuild pre-firma, retry dei provider gated sulle capability, garanzie rigorose di singola invocazione per l'external signer, sizing limitato e diagnostica dettagliata dei tentativi
Version 2.628.0
Added
- Aggiunto il subsetting basato sulla reachability dei font incorporati nei PDF caricati, incluso il contenuto delle pagine, i Form XObjects annidati, gli appearance state delle annotazioni, i programmi di font condivisi, i formati TrueType e CFF, la selezione basata sulla dimensione codificata, le mappature CID e ToUnicode stabili, risultati dettagliati e rifiuto predefinito in presenza di firme
Version 2.627.0
Added
- Aggiunta la generazione automatica della struttura PDF/UA per alberi di layout dichiarativi, inclusi intestazioni, liste, tabelle, figure, metadata di lingua e testo alternativo, artefatti di impaginazione, riferimenti marked-content sicuri per le continuazioni, preservazione dell'ordine di lettura, validazione semantica e statistiche della struttura
Version 2.626.0
Added
- Aggiunto un DOM documentale dichiarativo con stili ereditabili, factory di componenti riutilizzabili, testo, spaziatori, stack, container, sezioni, intestazioni e piè di pagina ripetuti, tabelle pesate con righe di intestazione ripetute, profondità di continuazione limitata, statistiche di impaginazione, frammenti di testo e tabelle senza copia, attraversamento lineare del livello top, flush immediato delle pagine e superfici Delphi e C++Builder corrispondenti
Version 2.625.0
Added
- Aggiunto un performance gate statistico ripetibile su Win32 e Win64 che isola load, save, render ed estrazione del testo, registra warmup e 30 campioni raw con p50, p95, varianza campionaria, RSS, I/O di processo, ambiente e identità deterministica delle fixture, poi valuta soglie JSON stabili e restituisce un exit code di fallimento in caso di regressione
Version 2.624.0
Changed
- Ripensato il parsing di dizionari e array semplici attorno a span di sorgente immutabili, conversione numerica diretta, container annidati in un solo pass e inserimento indicizzato nei dizionari, con telemetria pubblica di materializzazione; una fixture Win32 da 30.000 coppie ha ridotto del 64,7% i byte allocati in cinque pass e il tempo elapsed da 3.656 ms a 46 ms
Version 2.623.0
Added
- Aggiunti limiti configurabili del parser per i byte dei singoli token, i token aggregati, le voci di array o dizionario e i token malformati, più un preset rigoroso per input non fidato, eccezioni tipizzate per i limiti e telemetria per load; i gate di regressione rifiutano un token da 2 MiB e un container da un milione di token in meno di 250 ms e sotto un picco di processo di 37 MiB
Version 2.622.0
Added
- Aggiunte API esplicite di rilascio del grafo di oggetti delle pagine caricate e di telemetria che scartano le radici clean possedute dalle pagine e le cache di rendering preservando le risorse indirette condivise e i metadata di reload; l'elaborazione sequenziale di 100.000 pagine resta a un picco stabile di 69,3 MiB e le pagine ordinarie o compresse rilasciate si materializzano di nuovo con la loro identità di oggetto originale
Version 2.621.0
Changed
- I container object-stream decodificati ora usano una cache LRU configurabile con cap sui byte, eviction immediata per container, reload supportato dalla sorgente dopo l'eviction, una modalità zero-retention e telemetria su picchi di byte, eviction e reload
Version 2.620.0
Changed
- Gli alberi di pagine ordinari di grandi dimensioni si aprono ora in placeholder compatti, risolvono le pagine casuali attraverso l'attraversamento guidato da
/Counte un indice hash di oggetti indiretti, mettono in cache le pagine risolte, espongono telemetria e controlli di materializzazione e si espandono automaticamente prima delle mutazioni strutturali o dei save
Version 2.619.0
Changed
- I campi AcroForm caricati, i nomi qualificati, i widget, le annotazioni e le pagine condividono ora una cache lazy bidirezionale delle relazioni con lookup inverso delle annotazioni, lookup della pagina per widget, telemetria di attività, invalidazione esplicita per le modifiche raw del grafo di oggetti e manutenzione automatica safe rispetto alle mutazioni
Version 2.618.0
Changed
- Il lookup degli oggetti pagina usa ora un indice inverso consapevole delle mutazioni e ricostruito lazy per i numeri di oggetto e i puntatori di pagina risolti, sostituendo le scansioni ripetute della tabella pagine attraverso copia di pagine, outline, named destinations, actions, form, accessibilità e riconciliazione dell'albero pagine, esponendo telemetria di validità e attività
Version 2.617.0
Changed
- Il confronto tra documenti renderizzati supporta ora DPI scelti dal chiamante, tolleranza colore su RGB o luminanza, gate di similarità sul rapporto di pixel modificati e in stile SSIM, regioni modificate connesse deterministiche, overlay differenziali PNG opzionali e budget di pixel per pagina e aggregati fail-closed con diagnostica di rendering esplicita
Version 2.616.0
Changed
- Il confronto tra documenti ora attraversa i grafi di oggetti indiretti attraverso path deterministici basati sul catalogo, calcola gli hash di valori e stream entro limiti espliciti di risorse, allinea le pagine prima di classificare inserimenti, eliminazioni, spostamenti e modifiche, distingue gli oggetti spostati da aggiunte e rimozioni e riporta i confronti incompleti invece di trattare i risultati limitati dal budget come identici
Version 2.615.0
Changed
- La decodifica delle immagini caricate ora usa 16 shard di metadata della cache e una coordinazione singleflight esatta per chiave, esegue concorrentemente le decodifiche costose indipendenti preservando una sola decodifica owner per le richieste duplicate, fa rispettare i budget configurati di byte e voci su tutti gli shard ed espone entry point di decodifica serviti dalla cache più telemetria di concorrenza; quattro richieste JPEG indipendenti da 12.000 pixel scalano 3,72 volte su quattro worker Win64 mentre otto richieste con la stessa chiave decodificano una volta sola
Version 2.614.0
Changed
- Il rendering JPEG a bassa risoluzione in scale di grigi e RGB ora seleziona una scala inverse-DCT limitata a 1/2, 1/4 o 1/8, fa fluire le scanline scalate attraverso un resampler fixed-point direttamente nella bitmap target esatta, preserva budget di decodifica, cancellazione e isolamento dei codec worker, ed espone telemetria su sorgente, scalato, target, scanline e memoria attraverso
GetLastJPEGReducedDecodeInfo; la fixture di regressione da 12.000x12.000 a 300x300 gira 24,05 volte più veloce della decodifica completa senza allocare il raster sorgente da 432 MB
Version 2.613.0
Changed
- Gli array
/Contentsdelle pagine caricate espongono ora uno stream concatenato seekable lazy, conservano i segmenti non filtrati in storage supportato dalla sorgente, decodificano al massimo un segmento filtrato alla volta, usano accumulazione di token e byte lineare ammortizzata, preservano gli stream originali in fase di modifica aggiungendo un nuovo segmento e tengono una sequenza da 1 GiB con 10.000 segmenti sotto i 64 MiB di memoria di lavoro aggiuntiva
Version 2.612.0
Changed
- Gli aggiornamenti incrementali ora mantengono il file sorgente con lock in scrittura e supporto file invece di trattenere i byte sorgente completi, visitano ed emettono solo gli oggetti modificati, nuovi e cancellati in sottosezioni xref sparse, inviano in streaming il prefisso originale a un nuovo target e fanno append direttamente con rollback per i save sullo stesso target; una revisione da 4 GiB con un solo oggetto resta entro 128 MiB di memoria di lavoro aggiuntiva
Version 2.611.0
Added
- Aggiunta una cache limitata dei decoder dei font caricati con scope documento e limite LRU di 32 MiB e 128 voci, riutilizzo singleflight del parsing attraverso pagine, estrazione del testo caricato, export SVG e sostituzione del testo, risultati deep-copy indipendenti da
GetLoadedFontDecoder, budget di memoria configurabile e API di telemetria, e invalidazione automatica di grafo, pagina, reload, JSON Patch e configurazione CMap; l'uso ripetuto di un font indiretto condiviso ora parsa encoding, larghezze,ToUnicode,CIDToGIDMape mappature discendenti una volta sola finché resta trattenuto