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 ResolveFontForCodePoint e AnalyzeUnresolvedGlyphs sensibili 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

  • THPDFTable ora tiene sulla stessa pagina le righe legate insieme da un RowSpan: 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
  • TotalHeightRendered riflette il gruppo spostato sull'ultima pagina

Version 2.770.150

Fixed

  • Le celle THPDFTable con ColSpan o RowSpan di 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 EHPDFXFAError invece 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

  • RecalculateLoadedFormFieldsIncremental tratta 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 (THPDFBarcode tipo 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 (THPDFBarcode tipi 18 e 19) non accodano più una cifra calcolata a Text quando Checksum è 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ì Checksum viene 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 ImportLoadedFormFromXFDF e ImportLoadedAnnotationsFromXFDF senza 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"
  • ValidateVisualXmlConsistency non 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

  • GetLoadedInvoiceSummary riporta 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 annidato DateTimeString
  • HPDFFacturXXMLElementText restituisce 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 DecodeLoadedPageBarcodes ritenta una pagina ruotata di 90 o 270 gradi, il raster consegnato al decoder viene ora ruotato in senso orario, come documenta AttemptRotationDegrees
  • 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.pdf generato ora usa davvero stream di contenuto compressi, come promettono i commenti della demo; imposta Compression a cmFlateDecode invece di affidarsi all'argomento BeginDoc, che non controlla la compressione

Version 2.770.102

Fixed

  • Le immagini disegnate con AlphaBlend in un metafile esteso conservano ora la propria opacità registrata quando il metafile viene convertito con THPDFEmfPatcher.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 /BBox quando 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ù EOverflow su 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 q non perdono più lo stato grafico che li racchiude: i salvataggi più profondi venivano ignorati mentre il loro Q corrispondente ripristinava comunque, così testo e grafica dopo il blocco annidato usavano lo stato di prima di un q esterno
  • 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 sh e gli shading pattern usati come colore di fill o stroke

Version 2.770.69

Fixed

  • Demo Navigation: le named destination chapter-1 e chapter-2 ora 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 /Domain a 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 /C1 ora 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 /Range solo 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 if o ifelse profondamente 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 THotPDF in 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: -d su 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 -o sia nella dashboard
  • Demo PreflightCLI: -f json e -f csv ora 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 --pages e 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
  • THPDFDiskPageCache prende 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 /BBox come piazzato dal suo /Matrix e 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 Td vengono 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, HPDFDocRunJob e HPDFDocRunJobWithCallbacks viene ora letto interamente come UTF-8: gli escape \uXXXX non 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 \u malformato 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 RenderLoadedPageToBitmap e 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

  • ImportLoadedInterchangeFromFDF ora confronta nomi di chiave interi quando legge le annotazioni e lo stato FDF: /T non si ferma più a /Type o /Text, /F non più a /FreeText, e /Status non 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 \ddd e le continuazioni di riga con backslash, oltre a \n, \r e 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 TJpeg2000Bitmap ora 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 TJpeg2000Bitmap a 32 bit attraverso SaveToStream e LoadFromStream, 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_destroy mentre 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_destroy restituisce; 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_HANDLE invece 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

  • RenderLoadedPageToDC non solleva più una access violation quando la pagina contiene un image XObject o un'immagine inline; le immagini vengono disegnate nel device context del chiamante
  • GetLoadedPageMetafile non 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 RenderLoadedPageToDC quando 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 W o W* 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* e b* 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 / \x5C non 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 \uXXXX e 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_io fallisce 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 DecodeLoadedPageBarcodes sulle pagine con /Rotate 90 o /Rotate 270 ora 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 ApplyLoadedOCRTextLayer sulle 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à RenderColorimetricLuminosityMasks sceglie 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, Lab oppure ICCBased)
  • Impostarla a true adotta 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 /BC di 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
  • DecodeLoadedImageRegionAtResolution restituisce 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 false ora 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 false mantengono 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 ProcessObjectStreamsForDecompression su un documento caricato non scarta più gli object stream letti durante il caricamento: gli oggetti compressi restano disponibili per ExtractRawObjectFromStream e ExtractObjectFromStream, 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
  • ExtractRawObjectFromStream decodifica 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

  • EncryptFile e DecryptFile con AES-256 non danneggiano più i file dei font incorporati il cui dizionario elenca /Length1 prima 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

  • BuildLoadedPageSVG e SaveLoadedPageAsSVG accettano un parametro opzionale EmbedFonts; è disattivato per impostazione predefinita e le chiamate esistenti esportano esattamente come prima
  • Con EmbedFonts a True, 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 /Differences e 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 Tf e 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

  • LoadFromFile e LoadFromStream hanno overload con un parametro AutoDecrypt. Con AutoDecrypt True, 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 di sans-serif e Courier New prima di monospace. 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_GB2312 o 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

  • THPDFGlyphRecord ha GlyphEndX e GlyphEndY, 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 come PDFReference
  • 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, trademarksans e 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 (a1 a a206), 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 arrowright o spade, a un nome ZapfDingbats

Version 2.766.74

Fixed

  • HPDFExtractGlyphsViaDevice non 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 Q come 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 dentro q ... Q restavano in vigore per il testo che seguiva
  • Quando il font selezionato dentro q ... Q usava codici a due byte e il font fuori da esso codici a un byte, il testo dopo Q veniva 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 RestoreState ora ha sempre il suo font selezionato. La pagina salta una selezione di font che ripete l'ultima scritta, ma non teneva conto che RestoreState (l'operatore Q) riporta il lettore al font in vigore prima di SaveState. Il testo mostrato dopo RestoreState nel 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 SaveState e RestoreState allo stesso modo, così un valore impostato di nuovo dopo RestoreState viene 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 /ToUnicode dichiarava 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, con 1 Tf e una Tm scalata 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 #xx con 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 #xx come gli escape stessi, così i nomi di font CJK memorizzati come byte UTF-8 (come il nome KaiTi_GB2312 in caratteri cinesi) arrivavano a font-family come #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 dentro q ... Q si travasavano sul testo dopo di esso. Le pagine che ingrossano un'intestazione con 2 Tr dentro 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à /Encrypt come 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, e SaveLoadedDocument scriveva un file danneggiato che perdava /Encrypt ma 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 /MediaBox di 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 /CropBox restano invariate

Added

  • THotPDF.GetLoadedPageVisibleBox restituisce il box visibile di una pagina caricata, il suo /CropBox ritagliato sul suo /MediaBox
  • THPDFPageDisplayList.CropBox dà 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, zcaron e altri) non venivano mai trovati. L'estrazione del testo ignorava le voci /Differences di un font che li nominavano, e il renderer di pagina disegnava y, z e 0 dei font CFF incorporati con WinAnsiEncoding o MacRomanEncoding in 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 di grave, 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 sh sia usati in uno shading pattern; ora campiona la funzione dello shading sul suo /Domain in un'immagine PNG incorporata collocata attraverso la /Matrix dello 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 /Background di uno shading mesh mostrato con l'operatore sh, 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 /BBox degli shading function-based, assiali e radiali (ISO 32000-1 8.7.4.5.1); uno shading esteso verniciato con sh o 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 /FontMatrix del font, la dimensione del font e la matrice del testo (ISO 32000-1 9.6.5)
  • I glifi Type 3 che iniziano con d1 vengono 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 /Widths di un font Type 3 come millesimi di em, sebbene siano in glyph space e scalate dalla /FontMatrix del 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, come UniGB-UCS2-H, o con una CMap incorporata ora mappano i loro codici su CID, così le larghezze /W e i glifi incorporati vengono cercati ai CID giusti; prima, per esempio, le lettere latine minuscole in un testo STSong-Light erano 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 -V selezionano 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,BoldItalic o SegoeUI-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 /Encoding ora 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 /Widths di 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 ForceBold e Italic e l'angolo corsivo dei font non incorporati fanno effetto
  • Il flag SmallCap non rende più il testo in grassetto: il grassetto ora segue il flag ForceBold (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" e font-style="italic" dalla parte di stile del nome del font, come Arial-BoldMT, Helvetica-Oblique o MinionPro-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 Q dentro 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 passo XStep e YStep, ritagliata sul /BBox della cella; prima questi path venivano riempiti di nero o mantenevano il colore precedente
  • I tiling pattern non colorati (PaintType 2) 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 Q ripristina un pattern salvato con q
  • I content device possono ricevere selezioni di pattern attraverso la nuova interfaccia IHPDFContentPatternDevice

Version 2.766.46

Added

  • Le immagini con un array /Mask a 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 DecodeLoadedImageColorKeyMask restituisce 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

  • CompressDocument e CompressLoadedDocument lasciano 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 ConfigureAdaptiveObjectStreamPacking viene conservato, CompressDocument ripristina il limite a EndDoc, 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 CompressDocument e CompressLoadedDocument, 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 con UseObjectStreams, CompressDocument o CompressLoadedDocument
  • 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 CompressLoadedDocument con 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; AllowSignatureInvalidation li comprime comunque
  • SubsetLoadedFonts guadagna un'opzione CompactTrueTypeSubsets, 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 /CIDSet mantengono il subset normale
  • CompressLoadedDocument senza 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 Version più 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 /CIDToGIDMap esplicito 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 con RegisterUnicodeTTF, 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 /SMask o con uno stencil /Mask esplicito 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 /Mask esplicito 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 /Rotate non 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 /D viene 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 con cs/sc/scn in 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/CS ora ne imposta il colore iniziale, per esempio la tinta piena per un colore spot, e il ripristino dello stato grafico con Q recupera 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 W e W*: 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 /BBox nell'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 a W viene 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 /Extend delle 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, /TrimBox o /ArtBox piazzato su un nodo /Pages padre; 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 90 e /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, WideTextOutBoxEx e TextOutWithFallback viene 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 90 e /Rotate 270 ruotate 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 180 ora vengono ruotate sul foglio invece di essere composte dritte
  • La composizione N-up ora rispetta i box di pagina e il /Rotate ereditati 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 /Rotate o /CropBox ereditato dall'albero delle pagine

Version 2.766.15

Fixed

  • HPDFTokenizeContentStreamAppend ora 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 90 o /Rotate 270 ora 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 TJ rispettano 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 /MediaBox non 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 con ShowMetafile a 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, RtLTextOut e ExtTextOut ora 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

  • TextWidth ora 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 disegnato
  • TextWidth e GetWideTextWidth restituiscono 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à NotEmbeddedFonts leggeva un campo di tipo diverso, e l'esportazione nativa delle immagini usava una proprietà Clipped che TfrxPictureView non 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 (TDBGridHotPDFExport e DBGridHotPDFExportToFile/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

  • GetLoadedPDFVersionString ora restituisce %PDF-1.7 e simili sui sistemi la cui locale scrive la virgola decimale; lì restituiva %PDF-1,7
  • Il campo pdfVersion di GetLoadedDocumentReport è corretto allo stesso modo

Version 2.766.2

Fixed

  • L'importazione HTML (RenderHTML e RenderHTML5) produce la stessa pagina a qualsiasi THotPDF.Resolution; le lunghezze CSS e Margin, BaseFontSize, ListIndent e BlockSpacing dell'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 ApplyXFAAsAcroForm o FlattenLoadedXFA conservano posizioni, dimensioni e corpi del font dal template a qualsiasi THotPDF.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.UserWidth e THPDFPage.UserHeight restituiscono la dimensione della pagina nelle unità con cui disegnate, 1/Resolution di pollice, così il codice di layout può confrontarla con coordinate, margini e TextWidth a qualsiasi THotPDF.Resolution; Width e Height restituiscono ancora punti, e il codice esistente legge gli stessi valori di prima

Fixed

  • Con THotPDF.Resolution impostata 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à
  • THPDFTable inizia 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 TextOut e poi usava TextBox o TextOutBoxEx nella 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

  • GetWideTextWidth ora include la spaziatura dei caratteri e la spaziatura delle parole con cui il testo viene disegnato, come fa TextWidth; il testo Unicode con a capo automatico e centrato con spaziatura impostata veniva misurato troppo stretto
  • TextOutHTML ora mostra la spaziatura delle parole impostata con SetWordSpacing: colloca ogni sequenza alla propria larghezza misurata, cosa che lasciava fuori la spaziatura; i word-spacing e letter-spacing CSS dell'importazione HTML passano dallo stesso layout

Version 2.765.45

Fixed

  • SetWordSpacing ora 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 che FontEmbedding era 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> in TextOutHTML era 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 PrintHyperlink conservano 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

  • TextOutOutline ora disegna i contorni dei glifi alla dimensione del font a qualsiasi Resolution; con una Resolution diversa 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 (Lossless con LossyLevel = 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 = 5 con RemoveIsolatedBlackPixels) 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 SaveLoadedPagesAsImages con 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, GetWideTextWidth e GetWideCharAdvances ora rispondono nelle unità di pagina della Resolution, le unità a cui il testo viene disegnato. Con una Resolution diversa da 72 rispondevano in punti, così il testo misurato non stava nelle coordinate in cui veniva piazzato
  • Con una Resolution diversa da 72, il testo disegnato con TextOut ora 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, TextOutBoxEx e WideTextOutBoxEx centrano 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 di TextOutHTML non si sovrappongono più
  • Una sequenza di fallback del font dentro WideTextOutBoxEx conserva la dimensione del font a qualsiasi Resolution invece di rimpicciolire
  • L'output a Resolution 72 è 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 found sullo 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 ShowMetafile ora sta all'altezza a cui lo disegna Windows. Il testo allineato in alto, il predefinito di TCanvas.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

  • ShowMetafile con 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 naturale
  • ShowMetafile senza posizione è invariato

Version 2.765.25

Fixed

  • I disegni AngleArc nei metafile EMF mostrati con ShowMetafile ora 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 AutoShapeArabic attivo, TextOut e UnicodeTextOut ora collegano le lettere arabe, persiane e urdu nelle loro forme iniziale, mediana e finale e nelle legature, come già faceva RtLTextOut; prima ogni lettera veniva mostrata nella sua forma isolata
  • Vale lo stesso per AutoShapeSyriac, AutoShapeNko, AutoShapeAdlam, AutoShapeHanifiRohingya e per il riordino dei punti ebraici (sfHebrewReorder in ShapingFeatures)
  • 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 Resolution diversi da 72. Ellipse, Circle, Arc, DrawArc, Pie, DrawPie, Chord e ArcTo venivano 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 Pie o DrawPie ora 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 ShowMetafile ora 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

  • DrawArc e DrawPie ora 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 Windows Arc e Pie; prima disegnavano l'altra parte, così un quarto di arco usciva come tre quarti
  • Gli spicchi di torta, le corde e gli archi ArcTo nei metafile EMF mostrati con ShowMetafile ora 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, Chord e ArcTo basati su angoli sono invariati

Version 2.765.19

Fixed

  • I rettangoli ruotati disegnati con RectangleRotate ora sono forme chiuse, come quelli disegnati con Rectangle; 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 InsertLoadedBlankPage ora 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 Table l'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 THPDFTable ora 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 (GetWideTextWidth e 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 quando AutoFormAppearances è 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 CJKAnnotations la 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, Showcase e ViewerPref producono 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 e SetLoadedDocumentInfo con la famiglia SetLoadedTitle) 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
  • SetLoadedPageLabel ora 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 duplicarsi
  • SetLoadedPageLabel non 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, AddNamedDestinationLink e 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

  • AddGoToLink ora 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

  • SetLoadedOutlineOpen ora apre e chiude i segnalibri nei documenti caricati; prima scriveva una chiave che i visualizzatori ignorano e il segnalibro conservava il proprio stato
  • AddLoadedOutline, SetLoadedOutlineURI e SetLoadedOutlineDestination ora 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 AddLoadedOutline e SetLoadedOutlineTitle ora 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 Opened su un segnalibro dopo l'aggiunta dei suoi figli ora lo apre nel visualizzatore; prima, la modifica non arrivava mai al file
  • Assegnare Title a 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

  • HPDFTokenizeContentStreamAppend tokenizza 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

  • SetStructureClassMapEntry ora 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 /ClassMap rimanenti 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 /ClassMap vi fa riferimento; il documento è proprietario del dizionario, quindi chi lo usa non deve liberarlo

Version 2.764.4

Fixed

  • RemoveUnusedLoadedPageResources non scrive più in una tabella delle risorse dopo averla rimossa, quando la tabella delle risorse /Font, /XObject o altra di una pagina è scritta direttamente dentro /Resources e 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, tramite LoadFromFile o BeginIncrementalUpdate, 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 AddPubSecKeyMaterial usano tutti la stessa lista di buste corretta

Version 2.764.2

Fixed

  • Gli aspetti dei campi generati per le form caricate, da AddLoadedTextField e dagli altri metodi di campo AddLoaded*, da EnsureLoadedFieldAppearanceStream o da FlattenFormFields, ora hanno un riferimento proprio al font /DR dell'AcroForm invece di condividere la voce /DR
  • Sostituire o eliminare il dizionario /DR dell'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 /DR diventa un oggetto indiretto la prima volta che un aspetto lo usa, così l'aspetto del campo e /DR fanno riferimento allo stesso oggetto font nel file salvato

Version 2.764.1

Fixed

  • Chiamare ProcessObjectStreamsForDecompression dopo LoadFromFile non 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 per ExtractObjectFromStream
  • 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, ScanAndLoadReferencedObjects e ForceLoadMissingReferencedObjects ora 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: BeginDoc dopo EndDoc avvia un documento nuovo e indipendente invece di sollevare un'eccezione
  • EndDoc rilascia 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 il BeginDoc successivo libera le sue pagine e i suoi oggetti, così nulla di tutto ciò finisce nel file successivo; con ReproducibleOutput attivo, un secondo documento prodotto da un'istanza riutilizzata è byte per byte identico a quello prodotto da un'istanza nuova
  • Le registrazioni fatte tra EndDoc e il BeginDoc successivo, come AddPDFAOutputIntent o gli script aggiunti tramite Names, appartengono al documento successivo e non vengono più azzerate da BeginDoc
  • Le impostazioni di proprietà come FileName, Compression, PDFACompliance, Author e Title, 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 EndDoc fino al BeginDoc successivo, così ValidatePDFUA2Structure, CurrentPageNumber, PagesCount e le diagnostiche di layout continuano a operare su di esso
  • Poiché le password vengono azzerate una volta cifrato un documento protetto, BeginDoc solleva un'eccezione quando ActivateProtection è 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 BeginDoc su un'istanza di THotPDF che 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 LoadFromFile e 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 /EF che 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).txt e conserva il suo nome file originale
  • Le modifiche di AddLoadedDocumentJavaScript e AddLoadedNamedDestination vengono 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
  • AddLoadedDocumentJavaScript memorizza un'azione JavaScript come valore del name tree invece di un semplice script stream, e AddLoadedNamedDestination scrive l'operando di zoom della sua destinazione /XYZ
  • RemoveLoadedJavaScript e RemoveLoadedJavaScriptAll rimuovono gli script dal documento stesso; prima cambiava solo l'elenco restituito dai getter e gli script restavano nel file salvato
  • SetDocumentAttachmentMetadata rinomina 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; senza AutoFormAppearances il font mancava, così i viewer che costruiscono gli aspetti dei campi non avevano un font con cui costruirli
  • AddLoadedComboBox crea 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 /NeedAppearances come booleano true invece del nome /true, e un AcroForm creato per loro riceve la stringa di aspetto predefinita e le risorse predefinite a cui le loro stringhe /DA si riferiscono
  • AddLoadedTextField, AddLoadedCheckBox, AddLoadedComboBox, AddLoadedListBox e AddLoadedPushButton danno 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, ResetLoadedFormField e 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 AutoFormAppearances sia per i campi caricati che vengono ridisegnati o appiattiti
  • AnalyzeLoadedSignatureRevisions classifica 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
  • icAutoMono e AddMonochromeImageAuto mantengono 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 /K vale 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 DeviceGray e le JPEG CMYK come DeviceCMYK, mentre ogni JPEG veniva dichiarato DeviceRGB; 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 /Decode invertito 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
  • StampLoadedPageImage applica lo stesso modello di colore quando una JPEG viene timbrata su una pagina caricata
  • Nomi di file come PHOTO.JPG o scan.jpeg ora si caricano come JPEG con ogni tipo di compressione; l'overload su file di AddImage riconosce i dati JPEG dalla firma invece che da un'estensione .jpg case-sensitive e non prova più a leggere questi file come bitmap

Version 2.761.0

Added

  • Il nuovo AddLoadedSignedSignatureField aggiunge 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, PreparePDFForSigning e InsertSignatureHex vanno a riempire; dopo BeginIncrementalUpdate e SaveIncrementalUpdate la 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 BeginIncrementalUpdate ora 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, DrawPDF417 e DrawAztec ripristinano 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 CryptKeyLength a aes256 porta 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; con StrictVersionLock attivo, 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 prPrint e prPrint12bit ora 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 /Contents della 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 AttachSignatureFieldAppearance dà 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 /DecodeParms come 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

  • DirectDrawBarcode e le funzioni barra Simple* 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'altezza
  • DirectDrawBarcode scala 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 Checksum attivo, 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 Checksum attivo non aggiunge più un'altra cifra di controllo a Text ogni volta che il barcode viene misurato o disegnato

Version 2.756.0

Fixed

  • I QR Code disegnati con DrawQRCode o costruiti con THPDFQRCode ora 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.com non 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 THPDFQRCode non mescola più il simbolo precedente nel nuovo
  • Encode restituisce False quando 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

  • HPDFQRFunctionMap e HPDFQRExtractDataWords espongono 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 TJ nel 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 /DW2 del 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
  • /W2 che 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

  • THPDFQCStatementInfo guadagna HasPSD2Statement, PSD2RolesOfPSP, PSD2NCAName e PSD2NCAId; il descrittore a livello CMS porta gli stessi campi
  • HPDFParsePSD2QcStatement analizza un statement PSD2 che hai già come DER e rifiuta qualsiasi input malformato

Deprecated

  • PSD2RolesPayer e PSD2RolesPayee restano per compatibilità del sorgente ma sono sempre vuoti, perché la specifica non definisce elenchi di ruoli pagatore e beneficiario; usa PSD2RolesOfPSP

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 Tc non 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 /DW2 del 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
  • /W2 che 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

  • SetLoadedFormFieldExportValue ora 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 /Size molto 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 1a2a3a selezionava 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 e size, 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.5 e 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-win32 sia per x86_64-win64 tramite 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: AddImageFromFile accetta ora .webp tramite 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 /Rotate di 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 /NeedAppearances comune nei moduli stampati dal browser), così il valore inserito sopravvive nel contenuto della pagina
  • Le annotazioni di markup senza /AP ricevono un'appearance sintetizzata a partire dalle loro stesse proprietà — testo FreeText e Stamp con styling /DA e quadding /Q, forme Square e Circle con colore /C / /IC e spessore /BS, tratti Line e Ink, e markup quad Highlight / Underline / StrikeOut / Squiggly che rispettano /QuadPoints e l'opacità /CA opacity
  • 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 rowspan e colspan rivendicano 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

  • SubsetLoadedFonts ora 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

  • DownsampleLoadedImages ora 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 /Decode e 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 tramite TJpeg2000Bitmap.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

  • ReplaceLoadedPageText ora sostituisce le corrispondenze che attraversano item di stringa e array TJ tramite 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 SyntheticBase per 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, ApplyArabicGSUBContextualRefinement e 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.DrawAztec e 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.ExtractLoadedPageText e 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 Ceil in 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, SaveLoadedPagesToTiffBanded e SaveLoadedPagesToTiffStreamBanded, che scrivono i dati immagine compressi riga per riga attraverso band encoder, così le pagine molto grandi non richiedono un framebuffer completo; THPDFBandImageExportInfo riporta 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.SaveLoadedDocument e SaveLoadedDocumentToStream convalidano ora GTS_PDFA1 (ereditato dal catalogo della sorgente o appena registrato) ed emettono l'identificazione XMP pdfaid:part / pdfaid:conformance quando PDFACompliance è 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 /W2 e /DW2 dei 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 /W advances

Version 2.704.0

Added

  • Aggiunto il rendering parallelo a tile e bande delle pagine caricate tramite THotPDF.RenderLoadedPageTilesParallel e THotPDF.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 richiesta signatures/signHash per un batch ordinato a algoritmo unico, facendo rispettare i limiti multisign locali 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.RenewPAdESLTATimestamp con 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, HPDFParsePFXByLocalKeyID e THPDFCMSSignOptions.PFXLocalKeyID, inclusi gli attributi bag localKeyId e friendlyName rigorosamente 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 keyLength specifica 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.NavigateUri per i Canvas XPS e OpenXPS conforme alle specifiche, così i visual discendenti Path, Glyphs e Canvas annidati ricevono l'URI con scope a meno che non lo sovrascrivano, preservando le azioni LinkTarget esterne, 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 Opacity e Canvas.OpacityMask solidi, 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.Clip per geometrie abbreviate, locali o remote StaticResourcePathGeometry valori, elementi proprietà diretti, figure strutturate di linee, Bézier, quadratiche e archi, trasformazioni di geometria, clip vuoti e annidato EvenOdd o NonZero tramite W* o W del 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 Path e Glyphs trasformati, che preserva i link HTTP, HTTPS e di posta come annotazioni URI PDF e risolve le pagine relative al package più i frammenti LinkTarget con 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 VisualBrush XPS e OpenXPS per i visual Canvas, Path e Glyphs inline o basati su risorse, la lookup gerarchica e remota di ResourceDictionary, Viewbox assoluto, Viewport, None, Tile e 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 ToUnicode limitate 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 GlyphsIndices layout per conteggi rigorosi di unità di codice e glifi dei cluster, advance espliciti in centesimi di em, offset orizzontali e verticali, progressione BidiLevel dispari, riempimenti solidi da attributo o da elemento proprietà, opacità, batching nativo PDF TJ, 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.OpacityMask di OpenXPS per maschere solide, a gradiente lineare multi-stop con alpha variabile e radiale ellittico, e ImageBrush PNG 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 riutilizzabile RegisterLuminositySoftMaskState con binding delle risorse delle immagini alpha

Version 2.689.0

Added

  • Aggiunto OpenXPS ImageBrushTile, FlipX, FlipY e FlipXY tramite 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 limiti RegisterImageTilingPattern per pattern basati su immagini riutilizzabili

Version 2.688.0

Added

  • Aggiunto il supporto a ImageBrush.Transform di OpenXPS per matrici di attributi a sei parametri finite ed elementi proprietà MatrixTransform, concatenate dopo il clipping nativo dei Path e 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; RelativeTransform non 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.ShowImageMatrix e ampliato l'import delle fixed page XPS con riempimenti ImageBrush JPEG, PNG, TIFF e JPEG XR del package, mappatura Viewbox e Viewport assoluta 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 RadialGradientBrush da 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, brainpoolP384r1 e brainpoolP512r1, 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 HPDFInterpretContentTokensDevice e l'estensione completa facoltativa IHPDFContentOperatorDevice, 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 pubbliche OperatorCount, compatibilità dei semantic device preservata, semantica corretta degli operatori ", v e y e gestione legale del terminatore EI senza falsi diagnostici di fallback

Version 2.680.0

Added

  • Aggiunti gli overload transazionali e limitati di RepairPDFA4 con 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 ConfigureCryptFilterDefaults e SetStreamCryptFilter, inclusi i filter riservati a password e chiave pubblica, /Identity, la /EFF di password security corretta per il writer e le pipeline con /Crypt in 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 BeginIncrementalUpdate consapevole 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 /Encrypt ereditati 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-identifier PAdES 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 SignerInfo primari indipendenti tramite HPDFCMSBuildMultiSignedData e HPDFCMSMergeSignedData, 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 SubjectKeyIdentifier opzionali tramite THPDFCMSSignOptions.SignerIdentifier, inclusa la codifica compatta IMPLICIT del SID, la selezione automatica della versione di SignerInfo e SignedData, 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 il CMSAlgorithmProtection RFC 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.ValidatePDFMACChain con 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 di KDFSalt, rifiuto dei downgrade di forza del digest, controlli autenticati su /P e /Perms, reporting di preflight e parsing limitato delle revisioni senza copie temporanee del PDF

Version 2.666.0

Added

  • Aggiunto THotPDF.SignPDFWithPFXAndAttachedPDFMAC e la validazione con MAC allegato alla firma, tramite AuthCode diretto nel trailer attivo, SigObjRef indiretto, 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.RegisterNChannelColorSpace per emettere la forma DeviceN a cinque elementi di ISO 32000-2 con /Subtype /NChannel e 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 /NChannel token 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 MacData esterno 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: render rasterizza ogni pagina selezionata in <prefix>-page<N>.png attraverso la pipeline bitmap delle pagine caricate (intervallo --pages, --dpi 10..2400, predefinito 150), tables estrae le tabelle tipizzate in CSV o JSON tramite ExportLoadedTypedTables (--json, -o file or console) and compare stampa il report di confronto JSON di due documenti tramite HPDFDocCompareDocuments (--mode 0..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 con cmsFLAGS_NOOPTIMIZE solo 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 gvar condivise e private, interpolazione IUP, aggiornamenti degli outline semplici e compositi, metriche phantom-point, baking di HVAR, VVAR e MVAR, 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 /Count e 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 /Contents delle 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, CIDToGIDMap e mappature discendenti una volta sola finché resta trattenuto