HotPDF Release Notes
Version history for HotPDF user-visible features, fixes, compatibility updates, and documentation changes
Note: Only the latest 500 change records are kept
Last release
- Latest version: 2.415.0; Release date: 2026-07-12
Version 2.415.0
Aggiunto
HPDFParsePDFDateQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati+HH’mm,-HH’mm, orZQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencatiTDateTime;HPDFFormatPDFDateQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencatiD:YYYYMMDDHHmmSS+00’00GetLoadedExtGStateInforeadsLW/LC/LJ/ca/CAQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencatiGetLoadedShadingCount/GetLoadedShadingNameandGetLoadedPatternCount/GetLoadedPatternNameenumerate the/Shadingand/Patternresource sub-dictionariesReplaceLoadedPageQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencatiSwitchLoadedPagesexchanges two pages,ReverseLoadedPagesQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencatiExtractLoadedPagesToPDFQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencatiGetLoadedPageInheritedBoxQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencatiGetLoadedFileSpecInfoQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencatiGetLoadedEmbeddedFileMIMEreturns the/Subtype,GetLoadedEmbeddedFileChecksumreturns the/Checksumdigest, andTHPDFNameTreeType+GetLoadedNameTreeRootCountQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencatiHPDFEnablePerMonitorDPIdynamically enables per-monitor DPI awareness;THPDFBackgroundRendererQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencatiGetLoadedPageContentStreamCountreports whether/ContentsQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencatiGetLoadedXMPValueQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencatiGetLoadedDocumentReportQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati
Version 2.414.0
Aggiunto
THPDFActionBuilder.URIWithIsMapQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati/IsMap trueQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencatiURIQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati/URIstringAddLoadedCaretAnnotationExQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati/Sy PQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencatiGetLoadedAnnotationDAQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati/DAQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati
Version 2.413.2
Corretto
- Questa versione sincronizza il comportamento e il supporto API descritti tramite i simboli elencati
Version 2.413.1
Fixed
- Type1 and CFF font handling now preserves parser ownership across repeated stream checks and multi-font FontSets, returns stable glyph names and bounding boxes, keeps fractional font sizes and DPI scaling, and avoids composite-glyph and private-dictionary memory errors
- The C++Builder AddDelPages, HugeFileBenchmark, and Security demos now compile for Win64, while page-operation and preflight examples release partially constructed objects safely
Version 2.413.0
Changed
- The Delphi E-Invoice demo now validates required invoice fields, amount and VAT ranges, currency syntax, and embedded XML profile compatibility before writing output
- The attach workflow now rejects identical source and output paths, reports the detected XML guideline, and combines container, PDF/A, XML profile, signature, visual consistency, Schematron, and external-report checks into one verdict
Fixed
- E-Invoice generation and manual validation no longer report a successful result when an enabled validation layer finds issues
- Loaded electronic-invoice summaries now read the invoice number, seller, and buyer from their correct XML aggregates, preventing false visible-text consistency findings
Version 2.412.0
Changed
- All Delphi demos now resolve no-argument relative assets and outputs from their executable directory while preserving the caller working directory for command-line paths
- Delphi command-line demos now provide stricter argument validation, failure exit codes, deterministic comparison inputs, and generated-document verification across page copying, text extraction, preflight, optimisation, inspection, and in-memory workflows
Fixed
- Delphi demos no longer risk page-list overflow above 100 selected pages, create an extra blank page in the add-page workflow, close unrelated PDF viewer windows, or report failed preflight checks as successful
- The E-Invoice attach workflow now rebuilds its current page correctly when a single-page source is converted, signed, and stripped of the temporary initial blank page
Version 2.411.0
Added
- E-Invoice demo: new "Attach to existing PDF" mode converts an existing PDF to PDF/A-3, embeds a Factur-X/ZUGFeRD invoice XML as a document-level attachment, and optionally signs the result with a PFX certificate
Version 2.410.0
Added
- Loaded AcroForm fields can now update flags, maximum length, text justification, per-widget rectangles, rotation, border colour, and visible or printable state, with widget enumeration for radio groups and other multi-widget fields
Fixed
- Loaded field tooltip, border-width, and background-colour edits now mark the correct field or widget dictionaries dirty, apply visual properties to every widget, and invalidate only the affected page render cache
Version 2.409.0
Added
ActivateLoadedLinksturns bare HTTP, HTTPS, FTP,www.,mailto:, and email text into positioned borderless URI annotations across a selected page range
Changed
- Loaded link creation now persists reliably in incremental updates, while automatic activation snapshots existing links once per page, skips matching URI and rectangle pairs, and invalidates each changed page cache only once
Version 2.408.0
Added
- Le annotazioni caricate possono ora aggiornare il loro titolo, nome univoco, data di modifica, rettangolo normalizzato e stile di bordo standard continuo, tratteggiato, smussato, incassato o sottolineato
Fixed
- Le modifiche alle annotazioni caricate ora contrassegnano l'oggetto annotazione come modificato per i salvataggi incrementali, mentre le modifiche visive invalidano solo i rendering memorizzati nella cache della pagina interessata e mantengono le altre pagine caricate
Version 2.407.0
Added
THPDFViewerModelmemorizza, ritaglia, enumera, rimuove e cancella le evidenziazioni persistenti delle aree di pagina senza modificare il PDFTHPDFVieweraggiunge una modalità di interazione con evidenziazione con trascinamento marquee catturato, recupero delle coordinate PDF sensibile alla rotazione, colore configurabile e callbackOnMarqueeSelect
Fixed
- Le trasformazioni delle coordinate del visualizzatore ora mantengono il DPI di rendering effettivo al di sotto di 12 e al di sopra di 2400, mantenendo le selezioni allineate ai limiti di zoom del 5% e del 6400%
Version 2.406.0
Added
THPDFViewerModelcrea miniature di pagina sensibili alla rotazione direttamente a un DPI selezionato per i limiti di pixel forniti dal chiamante, evitando bitmap di pagina intermedie a dimensione intera- Il prefetch delle pagine del modello del visualizzatore riscalda asincronamente un intorno centrato, limitando le pagine pianificate alla capacità della cache delle pagine renderizzate
Version 2.405.0
Added
THPDFPageLayoutora supporta i layout di copertina a doppia pagina PDF 1.5plTwoPageLefteplTwoPageRightcon negoziazione automatica della versione e fallback alla versione rigorosa
Fixed
BeginDocora preserva il layout di pagina selezionato dal chiamante invece di sostituirlo sempre conplOneColumn
Version 2.404.0
Added
THPDFViewerModelcrea istantanee sensibili alla rotazione di aree delimitate di pagine PDF senza allocare una bitmap dell'intera pagina
Version 2.403.0
Added
THPDFViewerModelconverte bidirezionalmente i punti tra lo spazio della pagina PDF e le coordinate del Visualizzatore sensibili alla rotazione a un DPI selezionato dal chiamante
Version 2.402.0
Changed
- I comandi di zoom del visualizzatore ora utilizzano livelli standard stabili dal 5% al 6400%, inclusa la navigazione reversibile attorno a valori personalizzati arbitrari
Version 2.401.0
Added
THPDFVieweraggiunge lo zoom Ctrl+rotellina, lo scorrimento verticale con la rotellina e lo scorrimento orizzontale Shift+rotellina senza rieseguire il rendering per gli input di solo scorrimento
Version 2.400.0
Added
THPDFVieweraggiunge la navigazione delle pagine da tastiera, lo scorrimento, le scorciatoie da tastiera per lo zoom e la selezione della modalità Dimensioni Effettive, Adatta alla Larghezza o Adatta alla Pagina
Version 2.399.0
Added
THPDFViewerdisegna o stampa la vista corrente sensibile alla rotazione con adattamento deterministico che preserva le proporzioni e posizionamento centrato
Version 2.398.0
Added
THPDFViewerModelcrea istantanee EMF vettoriali di proprietà del chiamante di qualsiasi pagina caricata o della vista corrente, inclusa la rotazione non distruttiva della vista di 90 gradi
Version 2.397.0
Added
THPDFViewerModelsalva istantanee di pagina sensibili alla rotazione como BMP, JPEG o PNG su file e flussi di proprietà del chiamante con qualità JPEG configurabile
Version 2.396.0
Added
THPDFViewer.ResetViewripristina le Dimensioni Effettive, cancella la rotazione della vista e le evidenziazioni della ricerca preservando la pagina corrente, con azioni di ripristino e rotazione corrispondenti e aggiornamenti a rendering singolo raggruppati
Version 2.395.0
Added
THPDFViewereTHPDFViewerModelaggiungono la rotazione della vista in senso orario, antiorario e ripristinabile che si applica anche alle istantanee di pagina di proprietà del chiamante senza modificare la pagina PDF
Version 2.394.0
Added
THPDFViewerModelpuò creare istantanee di pagina di proprietà del chiamante e salvare la pagina corrente come BMP senza costruire un controllo Viewer
Version 2.393.0
Added
THPDFLoadedFormFieldora espone i flag di campo, MaxLen, indice di pagina, limiti del widget e gli stati comuni Required, NoExport, Multiline e PasswordGetLoadedFormFieldMaxLengthfornisce l'accesso diretto indicizzato ai limiti di lunghezza del campo di testo caricato
Version 2.392.0
Added
SetDocumentAttachmentMetadatarinomina gli allegati incorporati a livello di documento e aggiorna le loro descrizioni prima della serializzazione
Version 2.391.0
Added
ExtractLoadedPagesTextToStreamtrasmette il testo selezionato della pagina caricata come UTF-8 con separatori personalizzati e output BOM opzionaleTHPDFViewerModelaggiunge il rilevamento dei clic sui campi modulo e la navigazione deterministica da tastiera tra i widget di paginaTHPDFSignatureInfo.CertificateTimeValidityriporta le classificazioni di validità legate al certificato e al tempo di firma
Fixed
- I campi modulo caricati senza riferimenti inversi del widget
/Ppossono ora essere mappati tramite gli array di annotazioni della pagina
Version 2.390.0
Added
THPDFWatermarkTemplate.MakeCurveeTHPDFPage.AddCurveWatermarkaggiungono curve di Bezier cubiche ai compositi caricati e alla creazione di nuovi documenti
Fixed
- I setter dei metadati del documento caricato ora contrassegnano il dizionario Info come modificato in modo che i salvataggi incrementali mantengano le modifiche al titolo e all'autore
Version 2.389.0
Added
InsertLoadedBlankPageinserisce una pagina vuota con dimensioni definite dal chiamante in una posizione esatta del documento caricatoExtractLoadedPagesTextaggrega il testo da un intervallo di pagine a base uno con un separatore definito dal chiamanteGetLoadedFormFieldNameValuePairseSetLoadedFormFieldNameValuePairsforniscono lo scambio di moduli in batchname=valuetramiteTStringsCMapResourcePathsupporta percorsi di distribuzione CMap standard espliciti per servizi, plug-in e layout di applicazioni personalizzati
Changed
- Il visualizzatore VCL ora disegna i rettangoli dei risultati di ricerca e si aggiorna quando il risultato attivo cambia sulla pagina corrente, mentre i controlli della struttura collegati seguono le modifiche al documento del visualizzatore
- Il rendering della pagina ora risolve le caselle multimediali, la rotazione e le risorse ereditate e mappa correttamente le origini di pagina diverse da zero ad ogni rotazione ad angolo retto
Fixed
- I conflitti tra nomi di moduli vengono rifiutati prima dell'inizio dell'inserimento o dell'aggiunta della pagina quando la ridenominazione dell'unione è disattivata, lasciando invariato il numero di pagine di destinazione
- L'eliminazione delle pagine caricate ora scollega i relativi campi widget AcroForm e rimuove i rami vuoti della struttura dei campi invece di lasciare riferimenti alle pagine eliminate
- I moduli helper di ricerca in stile cursore e i risultati mancanti del modello del visualizzatore non cancellano più i record di corrispondenza del testo gestiti con operazioni di memoria grezza
- La scoperta automatica dei CMap ora passa la radice della raccolta effettiva al decodificatore di testo
Version 2.388.0
Added
- La nuova funzione
DeletePagesrimuove gli intervalli di pagine a base uno dai PDF caricati, elimina i duplicati dalle selezioni sovrapposte, segnala l'avanzamento e ricostruisce una struttura di pagine valida per il salvataggio - L'inserimento di pagine e l'unione in coda ora accettano
THPDFMergeOptionsper copiare strutture ricorsive, registrare i campi AcroForm importati e rinominare in modo deterministico i nomi dei campi in conflitto - Il nuovo
AddLoadedRadioButtoncrea un vero campo radio principale con widget figli, valori di esportazione condivisi e stati di aspetto on/off completi - Il nuovo
SearchLoadedNextfornisce una ricerca di corrispondenza successiva locale alla pagina senza stato, mentreGetLoadedOutlineEntriesrestituisce istantanee complete e ricorsive della struttura con dati del genitore e del livello - I nuovi overload per la firma dell'archivio certificati Windows selezionano un certificato dell'utente corrente o della macchina locale tramite impronta digitale SHA-1 e firmano tramite chiavi private CNG o legacy CSP
- Il nuovo
THPDFLoadedDocumentFacadeespone raccolte tipizzate di strutture, moduli, annotazioni, tipi di carattere e immagini con strumenti helper per la modifica e l'estrazione - Le nuove classi
THPDFViewer,THPDFSearchPanel,THPDFOutlineViewer, modello del visualizzatore e azioni del visualizzatore aggiungono controlli VCL riutilizzabili per la visualizzazione delle pagine, la navigazione, lo zoom, la ricerca e i segnalibri - Nuove demo per la stampa avanzata, la convalida della firma, le miniature di pagina, l'esportazione di immagini caricate e l'ispezione dei documenti caricati tipizzati coprono i flussi di lavoro end-to-end
Changed
- La stampa dei documenti caricati ora compila sequenze di pagine fisiche fascicolate o non fascicolate deterministiche, supporta larghezza e lunghezza della carta personalizzate e segnala codici, nomi e dimensioni della carta della stampante
- L'enumerazione dei certificati di sistema ora include le impronte digitali SHA-1, la disponibilità delle chiavi private, le date di validità e i metadati di utilizzo delle chiavi
Fixed
- La crescita del risultato della ricerca testuale caricata non copia più i record di stringhe gestiti con spostamenti di memoria grezza, prevenendo errori di puntatore non valido su Win64
- L'eliminazione delle pagine caricate non libera più le risorse di pagina condivise né lascia conteggi della struttura di pagine obsoleti che ricompaiono dopo il salvataggio e il ricaricamento
Version 2.387.0
Added
- Il nuovo
PrefetchLoadedPagesesegue il rendering di un intervallo di pagine nella cache delle pagine renderizzate su un thread di lavoro in background, consentendo a un visualizzatore che scorre le pagine di ottenere riscontri immediati dalla cache calda invece di attendere ciascun rendering CancelLoadedPagePrefetcharresta il thread di lavoro eIsLoadedPagePrefetchActivene segnala lo stato; il caricamento di un altro documento o la distruzione del componente annulla automaticamente un prefetch attivo- Il rendering memorizzato nella cache e il thread di lavoro di prefetch sono serializzati internamente, in modo che rimanga sicuro chiamare
RenderLoadedPageToBitmapCachedmentre è in esecuzione un prefetch
Version 2.386.0
Added
- Il nuovo
FlattenLoadedAnnotationsdisegna permanentemente l'aspetto normale di ciascuna annotazione nel contenuto della pagina in corrispondenza del relativo rettangolo e rimuove l'annotazione, garantendo che gli elementi visivi dei contrassegni e dei moduli rimangano visibili nei visualizzatori che nascondono o non possono modificare le annotazioni - Il passaggio segue i dizionari dello stato di aspetto tramite
/AS, rispetta il riquadro di delimitazione dell'aspetto e la matrice durante l'adattamento del rettangolo e può essere limitato a un sottotipo di annotazione o a un intervallo di pagine
Version 2.385.0
Added
- Il nuovo
RenderLoadedPageRegionToBitmaprasterizza solo una finestra dello spazio utente scelta di una pagina al DPI richiesto, in modo che pagine molto grandi possano essere renderizzate tassello per tassello in memoria limitata ad alte risoluzioni invece che come un'unica bitmap di dimensioni eccessive - I tasselli si allineano esattamente: la bitmap copre precisamente l'area richiesta, consentendo ai tasselli adiacenti di ricomporsi nella pagina intera senza giunzioni
Version 2.384.0
Added
- Il nuovo
GenerateLoadedPageThumbnailsesegue il rendering delle pagine selezionate di un documento caricato e le incorpora come miniature di pagina JPEG, ovvero le anteprime mostrate nei pannelli delle pagine del visualizzatore; la dimensione del bordo più lungo e la qualità JPEG sono configurabili, e le miniature esistenti vengono sostituite sul posto GetLoadedPageThumbnailSizelegge le dimensioni in pixel di una miniatura incorporata eClearLoadedPageThumbnailsrimuove le miniature dalle pagine selezionate
Version 2.383.0
Added
EnumLoadedPageElementsora riporta elementi del percorso vettoriale insieme a blocchi di testo e immagini: ciascun percorso disegnato restituisce un elemento con il suo riquadro di delimitazione dello spazio utente, l'operatore di pittura (tratto, riempimento o entrambi), i colori di riempimento e tratto in vigore e il numero di segmenti- Il tracciatore del percorso segue l'annidamento di
q/Qe le trasformazionicm, in modo che le forme disegnate all'interno di blocchi in scala o traslati riportino le loro coordinate di pagina effettive
Version 2.382.0
Added
THPDFPrintOptionsottiene i campiDuplex(simplex, lato lungo, lato corto),PaperBinePrintQualityche vengono inseriti nella modalità del dispositivo di stampa prima dell'avvio del lavoro; viene ora applicato anche un valoreOrientationesplicito- Il nuovo
HPDFGetInstalledPrinterselenca le stampanti di sistema eHPDFGetPrinterCapabilitiesriporta il supporto duplex e a colori di una stampante, il numero massimo di copie, i cassetti della carta (con i codici accettati daPaperBin) e le risoluzioni supportate
Version 2.381.0
Added
- Il nuovo
CopyLoadedOutlinesFromDocumentunisce l'albero completo dei segnalibri di un altro documento caricato in quello corrente, preservando titoli, annidamento, ordine dei fratelli e parametri della vista di destinazione mentre rimappa ogni pagina di destinazione di un offset fornito dal chiamante — il compagno ideale delle unioni per aggiunta di pagine per fare in modo che i documenti combinati conservino entrambi i set di segnalibri
Fixed
GetLoadedBookmarkPageIndexora trova i segnalibri oltre la prima voce di livello superiore e all'interno dei livelli annidati; la ricerca precedente corrispondeva ad altri segnalibri solo per coincidenza
Version 2.380.0
Added
- Il nuovo
ImposeLoadedPagesNUpdispone qualsiasi intervallo di pagine su fogli a griglia (qualsiasi disposizione per colonne e righe, dimensione del foglio e spaziatura configurabili) nell'ordine di lettura, adattando ogni pagina alla propria cella con conservazione opzionale delle proporzioni - Il nuovo
ImposeLoadedPagesBookletproduce fogli per opuscoli con rilegatura a sella: le pagine vengono completate fino a un multiplo di quattro e accoppiate in ordine di opuscolo in modo che la stampa fronte-retro e la piegatura producano un opuscolo ordinato correttamente - Entrambe le chiamate di imposizione racchiudono le pagine sorgente come Form XObject e aggiungono i fogli finiti dopo le pagine esistenti, restituendo il numero di fogli
Fixed
- Il rendering delle pagine caricate ora segue un riferimento indiretto nella sottocartella delle risorse
/XObject; le pagine le cui risorse arrivavano come oggetti separati saltavano le relative immagini e moduli in modo silenzioso
Version 2.379.0
Added
SaveLoadedPagesAsImagesottiene due formati TIFF:ifTIFFscrive un file TIFF a pagina singola per pagina, eifTIFFMultiaggrega l'intero intervallo di pagine in un unico TIFF multipagina, unificando l'output TIFF con le scelte esistenti BMP, JPEG, PNG, EMF e WMF- Entrambi i percorsi TIFF rispettano il DPI di rendering richiesto nei tag di risoluzione dell'immagine e utilizzano la compressione Deflate senza perdite
Version 2.378.0
Added
- Il rendering delle pagine caricate ora disegna le modalità di rendering del testo 1 (tratto) e 2 (riempimento poi tratto) con contorni di glifi reali sia per i tipi di carattere incorporati che per i fallback dei tipi di carattere di sistema, utilizzando il colore del tratto e la larghezza della linea correnti; le varianti di ritaglio da 4 a 7 dipingono come le loro modalità di base
Fixed
- Dodici operatori di contenuto a operando singolo (
Tc,Tw,Tz,TL,Ts,Tr,w,J,j,M,ri,i) leggevano il proprio operando dalla posizione del token errata e applicavano sempre lo zero; la spaziatura dei caratteri e delle parole, la scala orizzontale, l'interlinea, l'altezza del testo, la modalità di rendering, la larghezza della linea, le estremità, le giunzioni e il limite di smussatura hanno ora effetto durante il rendering delle pagine caricate
Version 2.377.0
Added
- Il rendering delle pagine caricate ora rispetta la visibilità del contenuto opzionale (livello): il contenuto all'interno delle sezioni contrassegnate con
BDC /OCe gli XObject che portano una voce/OCvengono nascosti quando il relativo livello è disattivato, seguendo la configurazione predefinita del documento (/BaseState,/ON,/OFF) - I dizionari di appartenenza al contenuto opzionale valutano la loro politica
/P(AnyOn,AllOn,AnyOff,AllOff) sui gruppi di membri - Nuove API di livello sui documenti caricati:
GetLoadedOptionalContentGroupCount,GetLoadedOptionalContentGroupName,GetLoadedOptionalContentGroupVisibleeSetLoadedOptionalContentGroupVisibleper ispezionare e ignorare gli stati dei livelli per il rendering; le sostituzioni invalidano automaticamente la cache delle pagine renderizzate
Version 2.376.1
Fixed
- Il rendering bitmap delle pagine caricate ora disegna gli XObject immagine: le ricerche di risorse
Do,gseshin precedenza perdevano i relativi nomi operando con prefisso barra e saltavano l'oggetto in modo silenzioso - L'operatore
cme i valori/Matrixdel Form XObject si concatenano ora nell'ordine corretto, in modo che le sequenze di posizionamento traslazione-più-scala (l'idioma standard di posizionamento delle immagini) posizionino il contenuto nella posizione di pagina prevista
Version 2.376.0
Added
- Le nuove API
RegisterExponentialFunction,RegisterStitchingFunctioneRegisterPostScriptFunctioncreano oggetti funzione autonomi di Tipo 2, Tipo 3 e Tipo 4 da utilizzare ovunque sia accettato un riferimento a una funzione (sfumature, retinature a punti e funzioni di trasferimento, trasformazioni di tinta) RegisterPostScriptFunctionconvalida il programma del calcolatore al momento della registrazione tramite valutazione di prova, in modo che i programmi non validi vengano rifiutati immediatamente invece di degradarsi silenziosamente nei visualizzatori- Il nuovo
RegisterSeparationFunccrea uno spazio colore Separation con un oggetto funzione tint-transform fornito dal chiamante
Fixed
- Il rendering delle trasformazioni di tinta di Tipo 2 (esponenziale) con output a uno o tre componenti non disegna più il nero; in precedenza solo gli output a quattro componenti (CMYK) venivano decodificati correttamente
- Il rendering delle trasformazioni di tinta di Tipo 3 (stitching) ora supporta qualsiasi numero di sottofunzioni, applica la rimappatura
/Encodee accetta array/Boundsa voce singola
Version 2.375.0
Added
- Il rendering della pagina ora valuta le funzioni tint-transform di Tipo 4 (calcolatore PostScript), in modo che i colori Separation e DeviceN e le sfumature di gradiente guidate da programmi di calcolo renderizzino i loro colori effettivi invece di un segnaposto grigio
- L'analizzatore del calcolatore copre il set completo di operatori ISO 32000-1 7.10.5: aritmetica, confronto, booleano e bit per bit, manipolazione dello stack e condizionali
if/ifelse
Fixed
- La selezione dello spazio colore denominato (operatori
cs/CS) nel rendering delle pagine caricate ora risolve correttamente i nomi delle risorse; in precedenza la ricerca falliva e il contenuto tornava allo spazio colore predefinito - Il rendering delle pagine caricate ora segue i riferimenti indiretti a spazi colore con valori di array, come le definizioni
/Separatione/DeviceNmemorizzate come oggetti autonomi
Version 2.374.0
Fixed
- L'importazione/esportazione di annotazioni XFDF ora conserva i dati sull'aspetto predefinito delle annotazioni a cursore (caret) tramite il figlio
<defaultappearance>e la voceDAdell'annotazione PDF
Version 2.373.0
Fixed
- L'importazione/esportazione di annotazioni XFDF ora conserva la geometria della frangia (fringe) delle annotazioni a cursore (caret) tramite l'attributo
fringee la voceRDdell'annotazione PDF
Version 2.372.0
Fixed
- L'importazione/esportazione di annotazioni XFDF ora conserva la rotazione delle annotazioni con timbro di gomma tramite l'attributo
rotatione la voceRotatedell'annotazione PDF
Version 2.371.0
Fixed
- L'importazione/esportazione di annotazioni XFDF ora conserva le relazioni di risposta delle annotazioni di testo tramite
inreplyto,replyTypee le vociIRTeRTdell'annotazione PDF
Version 2.370.0
Added
- I campi numerici, data-ora e password XFA con scorrimento orizzontale disattivato vengono ora appiattiti in widget di testo AcroForm con il flag PDF do-not-scroll
Version 2.369.0
Added
- I campi di testo XFA con politiche di scorrimento disattivate vengono ora appiattiti in widget di testo AcroForm con il flag PDF do-not-scroll
Version 2.368.0
Added
- I campi di testo XFA con
multiLine="1"vengono ora appiattiti in widget di testo AcroForm con il flag PDF multiline
Version 2.367.0
Added
- Le restrizioni di accesso ai sottomoduli XFA vengono ora ereditate nei widget figli, in modo che i campi AcroForm generati rimangano in sola lettura quando un predecessore è
readOnly,protectedononInteractive
Version 2.366.0
Added
- L'appiattimento delle liste di scelta XFA ora mappa
commitOn="select"sul flag AcroForm commit-on-selection-change per i campi di scelta generati
Version 2.365.0
Added
- L'appiattimento delle liste di scelta XFA ora mappa le liste
open="always"su caselle di riepilogo AcroForm a selezione singola anziché su caselle combinate a discesa
Version 2.364.0
Added
- L'appiattimento delle liste di scelta XFA ora mappa le liste combinate
textEntry="1"su caselle combinate AcroForm modificabili, preservando i valori digitati al di fuori della lista delle opzioni
Version 2.363.0
Added
- L'appiattimento delle liste di scelta XFA ora preferisce i valori
<items save="1">quando un campo contiene liste separate per la visualizzazione e per i valori salvati delle opzioni
Version 2.362.0
Fixed
- L'importazione/esportazione di annotazioni XFDF ora conserva gli attributi
justificationetaildi FreeText tramite le vociQeITdell'annotazione PDF - I valori predefiniti del documento JBIG2 ora corrispondono alle impostazioni documentate ottimizzate per la scansione relative al livello con perdita, alla pulizia dei pixel neri isolati e alla dimensione del punto nero
Version 2.361.0
Fixed
- L'importazione/esportazione di annotazioni XFDF ora conserva gli attributi standard di linea di associazione e didascalia, tra cui
leaderLength,leaderExtended,caption,leader-offset,caption-style, i valori di offset della didascalia e l'ortografialeaderExtendutilizzata nel lato importazione da file XFDF compatibili
Version 2.360.0
Added
- L'appiattimento XFA ora sopprime l'output per i campi e gli elementi grafici statici nascosti da
presence="hidden",presence="invisible"opresence="inactive", inclusi i discendenti di contenitori nascosti
Version 2.359.0
Added
- L'appiattimento XFA ora mappa le restrizioni a livello di campo
access="readOnly",access="protected"eaccess="nonInteractive"sul flag read-only di AcroForm generato
Version 2.358.0
Added
- L'appiattimento XFA ora conserva la semantica di
<choiceList open="multiSelect">impostando il flag PDF multi-select sulla casella di riepilogo AcroForm generata
Version 2.357.0
Added
- L'appiattimento XFA ora mappa i campi
<ui><passwordEdit>su campi di testo AcroForm con il flag PDF password, preservando i valori associati e consentendo ai lettori di trattare il campo come un input in stile password
Version 2.356.0
Added
- L'appiattimento XFA ora rispetta le associazioni esplicite dei campi
<bind match="none">, in modo che i campi contrassegnati come non associati rimangano vuoti invece di assumere valori con lo stesso nome dai pacchetti del modulo XFA o dei dataset
Version 2.355.0
Added
- L'appiattimento XFA ora rispetta le associazioni di campo semplici ed esplicite
<bind match="dataRef" ref="...">come$record.customer.legalName, in modo cheApplyXFAAsAcroFormeFlattenLoadedXFApreservino i valori memorizzati sotto un nome di nodo dati diverso prima della corrispondenza automatica per nome identico
Version 2.354.0
Fixed
- L'importazione/esportazione di annotazioni XFDF ora conserva i figli
BorderStyleAltdelle annotazioni di collegamento tramite l'arrayBorderdell'annotazione PDF, inclusi i raggi degli angoli, la larghezza e i valori del modello di tratteggio
Version 2.353.0
Fixed
- L'importazione/esportazione di annotazioni XFDF ora conserva gli attributi standard
interior-colorper le annotazioni di linea, quadrato, cerchio, poligono, polilinea e redazione tramite l'array di coloriICdell'annotazione PDF
Version 2.352.0
Fixed
- L'importazione/esportazione di annotazioni XFDF ora conserva lo stile del bordo standard dell'annotazione e gli attributi dell'effetto bordo nuvoloso, inclusi
width,dashes,styleeintensity
Version 2.351.0
Fixed
- L'importazione/esportazione di annotazioni XFDF ora conserva il testo formattato dell'annotazione tramite
<contents-richtext>e importa la geometria del figlio popup e lo stato aperto nei dizionariPopupdelle annotazioni
Version 2.350.0
Fixed
- L'importazione/esportazione di annotazioni XFDF ora conserva attributi standard aggiuntivi delle annotazioni: valori dello stato aperto e di revisione del testo, stili di terminazione di linea, coordinate
coordsdi collegamento e redazione, stile predefinito di FreeText, aspetto e rotazione predefiniti, e geometria della frangia (fringe) quadrata o circolare
Version 2.349.0
Fixed
- L'importazione/esportazione di annotazioni XFDF ora segue le strutture ISO 19444-1 per annotazioni di linea, poligono, polilinea e inchiostro: le esportazioni di linee includono coppie di coordinate
start/endcomplete, i dati di poligono e polilinea utilizzano elementi figli<vertices>, i dati di inchiostro utilizzano<inklist><gesture>, le coppie di coordinate separate da punto e virgola vengono importate correttamente e i sottotipi di annotazione non supportati non aumentano più il conteggio di quelli esportati
Version 2.348.0
Added
- La proprietà
LoadedPageCount, insieme aDuplicateLoadedPage,AddLoadedBlankPage,SetLoadedPageRotationValueeGetLoadedPageBoxRect, completa l'API per le operazioni sulle pagine dei documenti caricati — consente di duplicare pagine, inserire separatori vuoti, impostare la rotazione e leggere uno qualsiasi dei cinque riquadri di pagina in una sola chiamata GetLoadedEncryptionMethodrestituisce il nome del cifrario (RC4-40/RC4-128/AES-128/AES-256),GetLoadedFileStructureInfoaggrega linearizzazione / flusso di oggetti / tipo xref in una sola chiamata,LoadedSourceFileSizeè una proprietà eSetLoadedPDFVersionaggiorna la versioneStampLoadedPageImageeStampLoadedPageImageFromFileincorporano un Image XObject JPEG (logo / immagine della firma / codice QR) su una pagina caricata in corrispondenza di un rettangolo specificato,InsertLoadedTextdisegna un blocco di testo a riga singola eGetLoadedPageContentLengthrestituisce il conteggio dei byte decodificatiTHPDFPrintOptionsottiene i campiIgnoreHardMargin(compensa i margini fisici della stampante in modo che il contenuto non venga ritagliato) eAutoRotate(le pagine con orientamento orizzontale vengono stampate automaticamente in orizzontale)SaveLoadedPagesAsImagesottieneBMPPixelFormat/BMPMonochrome(esportazione monocromatica / a 8 bit) eJPEGScale(decodifica JPEG sottocampionata a 1 / 2 / 4 / 8 per miniature veloci)CompressLoadedDocumentcomprime con zlib ogni flusso non compresso nel grafo degli oggetti caricati e scrive/Filter /FlateDecode, riducendo le dimensioni dell'output
Fixed
StampLoadedPageTexteStampLoadedPageImageora decomprimono in modo trasparente i flussi di contenuto FlateDecode prima di aggiungere gli operatori — in precedenza, l'applicazione di un timbro su un/Contentscompresso corrompeva silenziosamente il payload zlib e il testo/immagine aggiunto scompariva
Version 2.347.0
Added
AddLoadedOutlinecrea un nuovo segnalibro su un PDF caricato a qualsiasi livello di annidamento (ParentIndex = -1per il livello superiore), con una destinazione/Dest [page /XYZ x y zoom]— la singola funzionalità più richiesta per i documenti caricati, colmando la lacuna per cui HotPDF poteva leggere/modificare/eliminare segnalibri ma non crearliSetLoadedOutlineDestinationeSetLoadedOutlineURIriscrivono la pagina di destinazione di un segnalibro esistente o la impostano su un'azione URIResolveLoadedNamedDestinationconverte una stringa di destinazione denominata in un indice di pagina a base zero, eAddLoadedNamedDestinationregistra un nuovo ancoraggio nell'albero/Names /Destsdel documento caricatoGetLoadedBookmarkPageIndexè una ricerca comoda: passando il titolo di un segnalibro, si ottiene la pagina a cui punta
Version 2.346.0
Fixed
- La qualità di ridimensionamento delle immagini rispetta ora
/Interpolate: la modalità di estensione HALFTONE viene utilizzata per impostazione predefinita (riduzione fluida) e COLORONCOLOR quando l'immagine imposta esplicitamente/Interpolate false, in modo che le piccole immagini raster mantengano i bordi netti definiti dall'autore anziché essere sempre sfocate
Version 2.345.0
Fixed
- Le regolazioni della crenatura (kerning) dell'array TJ non vengono più scartate: gli elementi numerici tra i blocchi di stringhe fanno avanzare la matrice di testo di
-value × FontSize / 1000, posizionando i glifi agli offset previsti per titoli e loghi a spaziatura ridotta provenienti da Word / Illustrator - L'operatore Tw (spaziatura delle parole) si attiva ora anche sullo spazio ideografico CID (U+3000, codice
$3000), in modo che il testo giustificato in giapponese / cinese ottenga la relativa spaziatura delle parole anziché solo per il codice ASCII 32 - Il rilevamento dello spessore del carattere / corsivo consulta ora
/FontDescriptor /Flags(bit 18 ForceBold) e/ItalicAngleoltre al nome/BaseFont, in modo che i tipi di carattere con prefisso subset il cui nome non porta il suffisso-Boldvengano comunque visualizzati con lo spessore corretto
Version 2.344.0
Added
GetLoadedTrappedlegge la chiave/Trappeddal dizionario Info (True/False/Unknown), dove in precedenza era in sola scrittura — i flussi di lavoro di preflight PDF/X possono ora eseguire il ciclo completo dello stato di trappingGetLoadedDocumentMetadataXMLrestituisce i byte grezzi del flusso di metadati XMP in modo che i documenti PDF/A il cui dizionario Info è assente possano comunque esporredc:title/dc:creator/xmp:CreateDateGetLoadedCollectionInfolegge il nome/Collectiondi un Portfolio PDF (l'albero dei nomi EmbeddedFiles riporta ancora la lista dei file)GetLoadedOutlineChildscende di un livello nell'albero dei segnalibri, restituendo il figlio/Firstdi una voce della struttura di livello superiore, rendendo visibili i segnalibri di capitoli / sottocapitoli annidatiRotateLoadedPagesruota ogni pagina in un intervallo di un angolo specificato (accumulandosi sulla proprietà/Rotateesistente), la controparte in batch della rotazione per singola paginaSetLoadedPageBoxForRangeimposta un riquadro di pagina (Media/Crop/Bleed/Trim/Art) per ogni pagina in un intervallo in una sola chiamataGetLoadedViewerPreferencesora legge ancheHideWindowUIeCenterWindow, allineandosi alle sei chiavi emesse dal writer (in precedenza ne venivano restituite solo quattro)
Version 2.343.0
Fixed
- L'idioma di ritaglio
W n/W* napplica ora il ritaglio: l'operatorencompila il percorso in sospeso e chiamaSelectClipPathinvece di scartare sia il percorso che il ritaglio in sospeso, in modo che i ritagli di rettangoli / contenitori scritti comere ... W nnon lascino più sfuggire il loro contenuto oltre il limite SetMiterLimitviene ora inviato a GDI prima di creare la penna per il tratto, in modo che le giunzioni acute rispettino il limite di smussatura del PDF (predefinito 4) anziché il valore predefinito 10 di GDI — eliminando le lunghe punte sulle giunzioni ad angolo acuto- I glifi di Tipo 3 dichiarati con
d0(che consentono il colore) ora cancellano esplicitamente il flag di soppressione del colore, in modo che un glifod1precedente non propaghi la sua soppressione del colore in un glifod0
Added
- Gli operatori
ri(rendering intent) ei(flatness) vengono ora consumati e memorizzati nello stato grafico (campiRenderingIntent/Flatness), mentre in precedenza venivano saltati silenziosamente
Version 2.342.0
Added
- L'operatore della modalità di rendering del testo
Trviene ora consumato; la modalità 3 (invisibile) salta completamente il disegno del blocco di testo, in modo che lo strato di testo nascosto dello sfondo del modulo / OCR non venga più disegnato come glifi spazzatura sovrapposti — il caso diTrpiù comune nei PDF reali; le modalità 1 / 2 (tratto) attualmente tornano al riempimento in attesa del supporto del contorno per singolo glifo - Gli operatori per contenuto contrassegnato
BMC/BDC/EMCe le varianti di proprietàDP/MPmantengono ora un contatore di profondità sul renderer, prerequisito per la successiva valutazione della visibilità OCG / OCMD; gli operatori di compatibilitàBX/EXmantengono un proprio contatore in modo che il renderer sappia di trovarsi all'interno di un blocco di compatibilità
Version 2.341.0
Fixed
- Gli operatori abbreviati di Bezier
veysono ora gestiti dal renderer di pagina, mentre in precedenza venivano saltati silenziosamente — rettangoli arrotondati, cerchi e curve prodotti da Illustrator / PowerPoint / InDesign vengono ora renderizzati correttamente anziché essere troncati o persi DrawTextRunrispetta ora gli operatoriTz(ridimensionamento orizzontale del testo),Tw(spaziatura delle parole, applicata al glifo di spazio) eTs(spostamento del testo) in modo che le esportazioni giustificate da Word posizionino i glifi alla larghezza corretta, le intestazioni estese/compresse orizzontalmente mantengano la loro lunghezza e il testo in apice/pedice si sollevi dalla linea di base — in precedenza questi tre valori di stato del testo venivano memorizzati ma non consumati
Version 2.340.0
Added
SearchLoadedPageTextWholeWordfiltra le corrispondenze di sottostringhe prodotte daSearchLoadedPageTextlimitandole a quelle che si trovano sui confini di parola (il glifo prima dell'inizio e dopo la fine della corrispondenza non deve essere un carattere di parola), fornendo la corrispondenza a parole intere senza aggiungere uno spazio finale alla stringa di ricercaGetLoadedSearchHitRectcomprime l'intervallo di glifi di una corrispondenza in un singolo rettangolo di delimitazione (Left/Top/Right/Bottom dello spazio utente, integrato da una frazione della dimensione del carattere), in modo che un visualizzatore possa disegnare una casella di evidenziazione per risultato invece di scorrere l'array di glifi
Version 2.339.0
Added
ExtractLoadedPageTextColumnsricostruisce il testo multicolonna: i glifi vengono raggruppati in linee di base mediante una tolleranza Y, ogni riga viene ordinata per X e una riga si divide in colonne separate (separate da tabulazione) ovunque lo spazio tra glifi consecutivi superi un multiplo configurabile dell'avanzamento mediano dei glifi — la controparte sensibile alle colonne diExtractLoadedPageTextLayoutche in precedenza dichiarava il rilevamento delle colonne fuori portataTHPDFPageElementora contiene unBaselineRole(brNormal/brSuperscript/brSubscript) popolato daEnumLoadedPageElements: viene contrassegnato un blocco la cui dimensione del carattere è notevolmente inferiore alla mediana della pagina e la cui origine Y si trova sopra o sotto la linea di base dominante
Version 2.338.0
Fixed
- Gli Image XObject vengono ora posizionati trasformando il quadrato unitario tramite la CTM corrente, invece di essere estesi su tutta la bitmap della pagina — il precedente
StretchDraw(Rect(0,0,W,H))posizionava in modo errato ogni immagine sulla pagina; le immagini ora atterrano nel rettangolo effettivamente specificato dal flusso di contenuto
Added
- Le immagini stencil
/ImageMaskvengono rilevate sul lato rendering e disegnate con il colore di riempimento corrente (PDF 8.9.6.1), mentre in precedenza il renderer le disegnava come una semplice bitmap in scala di grigi
Version 2.337.0
Added
- Stile del tratto sul lato rendering: il renderer di pagina rispetta ora gli operatori
J(LineCap: butt/round/square),j(LineJoin: miter/round/bevel),M(MiterLimit) ed(LineDash array + phase) creando una penna geometrica tramiteExtCreatePeninvece del precedenteCreatePen(PS_SOLID, ...)fisso, consentendo il corretto rendering di giunzioni arrotondate, bordi tratteggiati e terminazioni quadrate - Operatore
gs(ExtGState) sul lato rendering: il dizionario ExtGState denominato in/Resources/ExtGStateviene ora consumato perLW/LC/LJ/ML/ca/CAe applicato allo stato grafico, laddove in precedenza il renderer scartava completamente l'operatore - Stato grafico esteso con i campi
LineCap/LineJoin/MiterLimit/LineDash/DashPhase/FillOpacity/StrokeOpacity, tutti con valori iniziali predefiniti PDF
Fixed
- Il ritaglio (
W/W*) imposta ora la modalità di riempimento del poligono GDI (ALTERNATErispetto aWINDING) prima diSelectClipPath, in modo che le intersezioni di ritaglio pari-dispari e nonzero-winding non siano più identiche
Version 2.336.0
Security
- L'analizzatore dello spazio colore
/Indexedsul lato rendering limita oraHiValall'intervallo[0..255]prescritto dalle specifiche, chiudendo un vettore di sovraccarico di lettura del buffer in cui un HiVal malformato consentiva anComps × indexHighdi superare un conteggio di byte a 32 bit e leggere oltre la tabella di ricerca
Added
AttachLoadedAnnotationMeasurescrive un dizionario/Measure(PDF 1.7 §12.5.6.13) su un'annotazione di Linea o Poligono, contenente l'array/NumberFormat(etichetta dell'unità, stile decimale/frazione/arrotondamento, precisione), il rapporto/Scalee il fattore di isotropia/CYX— consentendo a un visualizzatore di calcolare la distanza o l'area reale coperta dalla forma
Version 2.335.0
Added
- Operatore
sh(sfumatura) sul lato rendering: le sfumature assiali (Tipo 2) e radiali (Tipo 3) vengono ora disegnate anziché essere saltate silenziosamente, consentendo ai PDF i cui sfondi dipendono da gradienti in stile Word/Excel di renderizzare la loro sfumatura di colore; la sfumatura viene discretizzata in bande lungo il suo asse e ciascuna banda viene riempita con il colore valutato dalla funzione della sfumatura in quel punto
Version 2.334.0
Added
- L'analizzatore di oggetti funzione sul lato rendering
HPDFEvalTintTransformrisolve ora il Tipo 2 Esponenziale (C0 + xN·(C1-C0)con bloccaggio Domain/Range), il Tipo 0 Campionato (a 8/16/32 bit, mappatura Encode, campione più vicino) e il Tipo 3 Stitching (ricorsione della sottofunzione selezionata da Bounds) — in questo modo le trasformazioni di tinta e le funzioni di sfumatura diSeparation/DeviceNproducono colori effettivi dello spazio alternativo anziché il fallback grigio della versione 2.333.0; i calcolatori PostScript di Tipo 4 si degradano correttamente - Il renderer di pagina collega ora il risolutore di riferimenti indiretti dell'unità di spazio colore e il lettore del flusso decodificato al suo accesso al documento al momento della creazione, in modo che gli oggetti del flusso di trasformazione della tinta possano essere decodificati attraverso lo stesso percorso degli Image XObject
Version 2.333.0
Added
- Spazi colore basati su CIE sul lato rendering:
CalGray,CalRGB(gamma + matrice 3×3) eLab(Lab→XYZ→sRGB con il cubo di punto di rottura 6/29) si risolvono ora in colori reali anziché degradare al nero; la matrice sRGB adattata da Bradford viene memorizzata nella cache per ciascun punto di bianco in modo che il lavoro per pixel rimanga una singola moltiplicazione 3×3 - Lo spazio colore
ICCBasedsul lato rendering si risolve tramite il suo/Alternate(o un'ipotesi basata su N per DeviceRGB/Gray/CMYK quando Alternate è assente), consentendo alle pagine contenenti un profilo ICC di essere visualizzate correttamente senza una dipendenza da lcms - Spazi colore spot
SeparationeDeviceNsul lato rendering: lo spazio alternativo, il riferimento alla funzione tint-transform e il conteggio dei componenti vengono analizzati; la trasformazione della tinta è collegata tramite un valutatore collegabile, in modo che le pagine con colore spot siano distinguibili da “colore non impostato” (la valutazione completa della tinta spetta al motore delle funzioni) - Gli operatori di colore generici
cs/CS/sc/SC/scn/SCNsono ora gestiti dal renderer di pagina, prerequisito fondamentale affinché ogni spazio colore non-Device abbia effetto su una pagina caricata - Risoluzione del colore unificata tramite
HPDFResolveColorcon i record estesiTHPDFColorSpaceFamilyeTHPDFCIEParams, in sostituzione della logica ad-hoc per singolo spazio
Version 2.332.0
Added
RenderSignatureFieldAppearancedisegna un modello di aspetto preimpostato per il campo firma — bordo, riempimento chiaro e fino a quattro righe di testo etichettate (“Firmato digitalmente da <Nome>”, “Motivo: ”, “Località: ”, “Data: ”) — selezionate tramite un setTHPDFSignatureDisplayOptionscome comodo wrapper intorno aAttachSignatureFieldAppearanceEnumerateSystemCertificatesscorre un archivio certificati di Windows (in genereMY/ROOT/CA) tramiteCrypt32.dllcaricata dinamicamente e restituisce i nomi visualizzati del soggetto / emittente più il DER grezzo per ciascun certificato, costituendo l'elemento costruttivo per un'interfaccia utente di firma in stile “scegli un certificato / chiavetta USB”
Security
- L'algoritmo di hash della firma è SHA-256 per impostazione predefinita con il valore Seed PAdES
DigestMethodsche accetta già SHA-256 / SHA-384 / SHA-512, eliminando qualsiasi percorso di firma SHA-1
Version 2.331.0
Added
RenderLoadedPageToDCdisegna una pagina direttamente nel contesto di dispositivo fornito dal chiamante (tela della stampante, superficie fuori schermo,TCanvaspersonalizzato), eliminando il passaggio intermedio in bitmap per i flussi di stampa e ad alto DPIRenderLoadedPageToClipboardinserisce una pagina negli appunti sia come bitmap a 24 bit che come enhanced metafile (testo vettoriale), in modo che l'operazione incolla-in-Word / incolla-nell'editor-di-immagini funzioni direttamentePrintLoadedDocumentcon un recordTHPDFPrintOptionsgestisce la stampante VCLTPrintertramite un intervallo di pagine, DPI, copie, fascicolazione, ridimensionamento FitPage e rendering per pagina — la libreria di documenti ora fornisce il proprio percorso di stampa invece di lasciare a ciascun chiamante il compito di implementarne uno
Version 2.330.0
Added
GetLoadedPageLabellegge l'intervallo/PageLabels /Numsche copre un determinato indice di pagina, restituendo il codice dello stile, il prefisso e il numero iniziale — la controparte di lettura diSetLoadedPageLabel, consentendo di ispezionare e gestire nel ciclo completo anche etichette non create direttamente dal chiamanteStitchLoadedPageSideBySideExesegue l'unione affiancata di 2 pagine con una spaziatura orizzontale configurabile e un fattore di scala della pagina sorgente, laddove il legacyStitchLoadedPageSideBySideera impostato su mezza larghezza senza alcuno spazio
Version 2.329.0
Added
AddLoadedRubberStampAnnotationcon un enumTHPDFRubberStampIconche copre tutti i 14 nomi di timbri standard (Approved, AsIs, Confidential, Departmental, Draft, Experimental, Expired, Final, ForComment, ForPublicRelease, NotApproved, NotForPublicRelease, Sold, TopSecret), consentendo ai visualizzatori di renderizzare le bitmap familiari senza un flusso di aspetto personalizzatoSetLoadedAnnotationCloudyBordertrasforma un'annotazione Quadrato / Cerchio / Poligono in un bordo nuvoloso scrivendo/BE /S /C /Ipiù l'array di colori interni/ICSetLoadedLineAnnotationCapsimposta gli stili/LEper la fine della linea (punta di freccia) per le annotazioni Linea / Polilinea dal nuovo enumTHPDFLineEndStyle(None / OpenArrow / ClosedArrow / Butt / ROpenArrow / RClosedArrow / Slash / Diamond)
Version 2.328.0
Added
EnsureLoadedFieldAppearanceStreamgenera un Form XObject/AP /Nper un campo AcroForm esistente a partire dalle sue proprietà/DA+/V+/Rect, consentendo ai visualizzatori che ignorano/NeedAppearancesdi renderizzare comunque il valore del campo senza passare per AcrobatApplyLoadedFieldValidationcollega un trio di script Formato / Pressione tasti / Convalida a un campo utilizando gli helper AcrobatAF*, coprendo i tipi di input Numero, Percentuale, Data, Ora, Valuta, Codice postale, SSN, Telefono e ArbitraryMask — il chiamante non deve più scrivere manualmente il codice JavaScript perAFNumber_Format/AFDate_FormatEx/AFRange_ValidateApplyLoadedFieldCalculationcollega uno scriptAFSimple_Calculatein modo che un campo aggreghi i valori di un set di campi sorgente specificati tramite Somma / Media / Prodotto / Minimo / Massimo
Version 2.327.0
Added
- Ricerca e sostituzione visiva
SearchAndRedactReplaceLoaded: per ogni riscontro della stringa cercata, maschera il rettangolo corrispondente con un colore a scelta (o salta la maschera conHPDF_NO_MASK) e vi applica sopra il testo sostitutivo, integrando la funzione a livello di byteReplaceLoadedPageTextnei casi in cui il font originale manchi di una tabella di codici carattere inversa o la sostituzione richieda un font diverso - Estrazione di testo da area
GetLoadedPageTextInRegionconcatena ogni glifo la cui origine ricade all'interno di un rettangolo nello spazio utente, inserendo interruzioni di riga tra le linee di base — elemento fondamentale per i flussi di interfaccia utente di tipo “copia testo da questo riquadro” SearchLoadedFirstin stile cursore restituisce la prima corrispondenza come un singolo recordTHPDFTextMatch, consentendo ai chiamanti di scorrere i risultati senza gestire un intero array di corrispondenze
Version 2.326.0
Added
- Proprietà
MeasurementUnita livello di documento (muPoints/muPixels/muInches/muMM/muCentimeters/muTwips), in modo che ogni coordinata di creazione di alto livello venga convertita in punti PDF tramiteToPDFUnit/FromPDFUnit - Sostituzione dei segnaposto nel testo della filigrana:
<%PageNo%>,<%TotPage%>,<%FileName%>,<%ShortDate%>,<%LongDate%>,<%ShortTime%>,<%LongTime%>vengono risolti per ogni pagina durante l'applicazione, consentendo di ottenere timbri con date e scritte in stile “Pagina X di Y” con una sola chiamata - Metodo di pagina
AddTextWatermarkExche combina la sostituzione dei segnaposto, coordinate sensibili all'unità e un recordTHPDFWatermarkBaseunificato (angolo, opacità, preimpostazioni di posizione) - Helper di pagina per filigrane di forme:
AddRectangleWatermark,AddEllipseWatermark,AddLineWatermarkeAddPolygonWatermark, ciascuno dei quali racchiude le primitive di tracciato in una coppia di stati graficiq/Qcon trasparenza fill/stroke registrata - Record unificato
THPDFWatermarkTemplatecon factoryMakeText/MakeRectangle/MakeEllipse/MakeLine/MakePolygonpiù un tipo compositoTHPDFWatermarkTemplateArray - Filigrana su documenti caricati:
StampLoadedPageTexteStampLoadedPagesTextaggiungono un blocco di testo trasparente e ruotato alle pagine esistenti, rispettando la proprietàMeasurementUnite lo stesso set di segnaposto;StampLoadedPagesCompositeapplica un intero array di modelli (testo + forme) a un intervallo di pagine - Controllo dell'ordine Z sui timbri dei documenti caricati:
Underlay = Trueantepone il flusso della filigrana prima del/Contentsesistente tramite la forma ad array, in modo che la filigrana venga disegnata dietro il contenuto della pagina EnumLoadedPageElementsrestituisce blocchi di testo (glifi aggregati per linea di base + font) e posizionamenti di Image XObject come recordTHPDFPageElementcon riquadri di delimitazione- Esportazione multiformato
SaveLoadedPagesAsImages: raster BMP / JPEG / PNG più vettoriale EMF / WMF, un file per pagina, con DPI, prefisso del nome file e qualità JPEG configurabili - Rendering vettoriale di una pagina su un
TMetafiletramiteGetLoadedPageMetafilemediante il nuovo percorsoTHPDFPageRenderer.ExecuteToDC, mantenendo il testo e i tracciati vettoriali scalabili per la stampa, gli appunti e i flussi di unione
Version 2.325.3
Fixed
- L'aggregazione dei report di preflight in batch non causa più l'overflow del conteggio totale dei byte quando un singolo file di input supera i 2 GB
Version 2.325.2
Fixed
- Il salvataggio di un documento superiore a 2 GB con i flussi di oggetti abilitati (
UseObjectStreams) non scrive più un flusso di riferimenti incrociati corrotto; gli offset degli oggetti e la posizione del flusso di riferimenti incrociati, in precedenza ridotti a un intero a 32 bit, vengono ora gestiti come valori a 64 bit durante l'intera scrittura
Version 2.325.1
Fixed
- Quattro scansioni di sola modalità recupero utilizzate quando un PDF danneggiato non può essere analizzato normalmente — decompressione del flusso di oggetti, scoperta del flusso di oggetti e due passaggi di riparazione dei riferimenti — non leggono più un file superiore a 2 GB in un buffer troncato; ciascuna ora salta questo fallback su tali file invece di scansionare dati corrotti
Version 2.325.0
Added
- L'importazione EMF/WMF ora renderizza i gradienti rettangolari
EMR_GRADIENTFILL(GRADIENT_FILL_RECT_H/GRADIENT_FILL_RECT_V) come pattern di sfumatura assiale PDF di Tipo 2, mappando ciascuna coppia di coloriTRIVERTEXa una chiamataRegisterAxialGradiente riempiendo il rettangolo con il pattern risultante; in precedenza questo record era un no-op documentato, ora i rettangoli con sfumatura di Word/Excel/PowerPoint nei file EMF vengono disegnati con la corretta miscela di colori da sinistra a destra o dall'alto in basso
Version 2.324.0
Added
- L'importazione EMF/WMF ora analizza i commenti
EMR_GDICOMMENT, distinguendo i marcatori passthrough Adobe PDF (0x416F4650= "AoFP", MS-EMF §2.3.3) da altri tipi di commento; quando il marcatore Adobe è presente, il payload del commento viene scansionato alla ricerca della parola chiavepdfmarked evidenziato tramite log di debug per consentire agli utenti di identificare quali produttori di EMF emettono frammenti PostScript pdfmark; altri tipi di commento rimangono no-op; sia HotPDF che llPDFLib in precedenza contenevano solo uno stub vuoto per questo record
Version 2.323.0
Added
- L'importazione EMF/WMF riconosce ora esplicitamente
EMR_GRADIENTFILLcomo un no-op documentato (i pattern di sfumatura PDF di Tipo 2/3 potrebbero esprimere riempimenti sfumati, ma il rendering del visualizzatore non è coerente e l'interpolazione Gouraud per pixel di GDI non si mappa in modo pulito); in precedenza questo record veniva scartato silenziosamente senza una voce nella tabella dei casi
Version 2.322.0
Changed
- La firma basata su PFX indirizza ora gli input di dimensioni pari o superiori a 64 MB attraverso un firmatario in streaming a blocchi (
HPDFCMSSignPDFStreamChunked) che scansiona i segnaposto/ByteRange+/Contentsin letture mobili da 256 KB, calcola l'hash delle due finestre dell'intervallo di byte tramiteHPDFCMSSHA256StreamRanges, quindi copia il flusso di input nel flusso di output correggendo i byte dei segnaposto al volo, in modo che la memoria di picco rimanga limitata dal buffer da 256 KB anziché dall'intera dimensione del file; gli input più piccoli mantengono inalterato il percorso rapido in memoriaPos()+Move()
Version 2.321.0
Added
- Dizionari di utilizzo dei gruppi di contenuto opzionali:
SetOptionalContentGroupUsagecollega una voce/Usagea un OCG registrato (PDF 1.7 §8.11.4.4 Tabella 100), consentendo ai visualizzatori di mostrare/nascondere automaticamente i livelli in base al contesto; le categorieView/Print/Exportscrivono lo stato<Category>State=ON/OFF;Zoomscrive un valore reale accoppiatoMin;Language/Creatorscrivono valori di tipo stringa - Copia del sottoalbero della struttura:
THPDFDocOutlineObject.CopySubtreeclona in profondità l'intero sottoalbero figlio di un nodo sotto un nuovo genitore, propagando Titolo / Colore / Grassetto / Corsivo / Aperto mentre vengono coniati nuovi numeri di oggetto e nuove destinazioni - Helper di topologia della struttura:
IsDescendant(predicato sicuro contro i cicli utilizzato daMoveTo) eMoveTo(cambia il genitore di un nodo, scollegandolo dalla sua vecchia catena di fratelli e ricollegandolo come ultimo figlio del nuovo genitore, con manutenzione completa di/Prev//Next//First//Last//Countsu ogni antenato interessato)
Version 2.320.0
Aggiunto
- Nested optional-content /Order tree:
BeginOptionalContentOrderGroup/AddLayerToOptionalContentOrder/EndOptionalContentOrderGroupDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati/OrderDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati/OCGsDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.319.1
Fixed
- Il caricamento di un PDF la cui immagine JBIG2 incorporata utilizza l'opzione di codifica Huffman standard (anziché la più comune codifica aritmetica MQ) non fallisce più del tutto: il caricatore ora riprova con il motore di decodifica alternativo prima di rinunciare, garantendo il corretto caricamento di tali immagini indipendentemente dal motore di decodifica preferito
Version 2.319.0
Changed
- L'importazione EMF/WMF applica ora un controllo centralizzato InPath all'ingresso di
ExecuteRecord: mentre una parentesi di tracciato è aperta (rilevatoBeginPath, non ancora raggiuntiEndPath/AbortPath), solo i record di costruzione del tracciato (linea/curva/poligono/spostamento/chiusura/fine/annullamento oltre ai record del sistema di coordinate e dello stato del DC) raggiungono i relativi gestori; i record di testo e bitmap che in precedenza trapelavano nel tracciato aperto vengono ora scartati centralmente, riflettendo la protezione dell'entry-point di llPDFLib ed eliminando una categoria di bug da PDF malformati causati da record vaganti all'interno di una parentesi di tracciato
Version 2.318.0
Added
- Gruppi di pulsanti radio per contenuto opzionale: il nuovo
RegisterOptionalContentRadioGroupdichiara set di livelli che si escludono a vicenda in cui i membri si disattivano l'un l'altro (PDF 1.7 §8.11.4.3/RBGroups); l'uso tipico è nei pannelli di livelli a scelta singola come "Bozza / Revisione / Finale"
Version 2.317.0
Added
THPDFDocOutlineObject.InsertBefore/InsertAfterinseriscono un nuovo fratello nella lista doppiamente collegata della struttura esistente in una posizione arbitraria, completando gli helper esistentiAddChild(aggiunta in coda) eAddChildFirst(aggiunta in testa) in modo che gli alberi della struttura possano essere costruiti in qualsiasi ordine senza dover scollegare e ricollegare i nodi- L'importazione EMF/WMF ora riconosce esplicitamente la famiglia ICM/tavolozza (
EMR_SETBRUSHORGEX,EMR_SELECTPALETTE,EMR_SETCOLORADJUSTMENT,EMR_SETICMMODE,EMR_CREATECOLORSPACE,EMR_SETCOLORSPACE,EMR_DELETECOLORSPACE,EMR_GDICOMMENT) e la famiglia senza mappatura PDF (EMR_FRAMERGN,EMR_INVERTRGN,EMR_PAINTRGN,EMR_FLATTENPATH,EMR_WIDENPATH,EMR_SETMETARGN,EMR_OFFSETCLIPRGN,EMR_PLGBLT,EMR_POLYTEXTOUTA,EMR_POLYTEXTOUTW), inoltrandoli al DC di riferimento GDI ove applicabile senza emetterli nel flusso di contenuto PDF; in precedenza questi record venivano scartati silenziosamente, ora sono documentati e mantenuti coerenti con il lato GDI
Version 2.316.0
Added
- La nuova demo
JBIG2Benchmarkgenera quattro PDF dalla stessa scansione sintetica di tre pagine, uno per ciascuna configurazione diTHPDFJBIG2Options(senza perdita per immagine,LossyLevel=5per immagine, globali accumulati su più pagine, estrazione di simboli rettangolari), stampando le dimensioni di ciascun output per consentire un confronto diretto tra i valori predefiniti ottimizzati per la scansione della v2.310.0, l'accumulatore su più pagine della v2.314.0 e le modalità di estrazione
Version 2.315.0
Changed
- Il dizionario JBIG2 accumulato su più pagine si suddivide ora in lotti automatici: quando il totale cumulativo della larghezza dei glifi supera i 131071 pixel, il dizionario corrente viene congelato, emesso come un singolo flusso
/JBIG2Globalse l'accumulatore viene ripristinato, avviando un nuovo flusso di globali per il lotto successivo; rispecchia il riversamento basato suTotalWidthdi llPDFLib e mantiene i singoli flussi globali a una dimensione che i lettori gestiscono in modo efficiente su cicli di scansione molto grandi
Version 2.314.0
Added
- Dizionario dei simboli JBIG2 accumulato su più pagine: abilitando
THPDFJBIG2Options.AccumulateGlobalsAcrossPages := True(accanto agli interruttori esistentiUseSymbolDictionary+UseGlobalSegments+ fallback nativo), le immagini consecutive a 1 biticJBIG2condividono un dizionario dei simboli in memoria in crescita e un flusso indiretto/JBIG2Globals, invece di emettere un dizionario per ciascuna immagine; il nuovoTHPDFJBIG2SymbolDictionaryconserva il set di glifi persistente con la stessa corrispondenza con/senza perdita usata dall'encoder per immagine; la nuova funzionesmoke_jbig2_accum_decodeverifica che due pagine con diversi layout di glifi condividano un singolo riferimento all'oggetto delle variabili globali e le decodifichi ripristinando i pixel di origine bit per bit
Version 2.313.0
Added
- I flussi dei segmenti globali JBIG2 prodotti dall'encoder nativo del dizionario dei simboli sono ora indirizzati per contenuto a livello di documento tramite
THPDFJBIG2GlobalsPool, in modo che le immagini che producono variabili globali identiche in byte condividano un unico flusso indiretto/JBIG2Globalsinvece di emetterne uno proprio; il nuovo fumosmoke_jbig2_globals_multicopre tre pagine di glifi identici che convergono su un singolo flusso di variabili globali condiviso
Version 2.312.0
Added
- L'importazione EMF/WMF ora copre
EMR_SCALEVIEWPORTEXTEX,EMR_SCALEWINDOWEXTEX,EMR_EXCLUDECLIPRECT,EMR_CREATEDIBPATTERNBRUSHPT,EMR_SETMITERLIMIT,EMR_SETTEXTJUSTIFICATIONeEMR_SETROP2, colmando il divario di sette record con llPDFLib in modo che i flussi EMF emessi da vecchie toolchain GDI non scartino più silenziosamente tali record;SETMITERLIMITeSETROP2hanno effetto immediato, mentre gli altri memorizzano lo stato per un successivo collegamento sul lato rendering senza alterare l'output corrente delle coordinate o del ritaglio
Version 2.311.0
Added
HPDFCMSSHA256StreamRangeselabora ora le due finestre PDF/ByteRangedirettamente da unTStreamin blocchi da 256 KB, consentendo di calcolare l'hash di PDF firmati multi-GB senza dover prima copiare l'intero file in unaAnsiString; colma il divario con la funzioneCalcHashbasata su flusso di llPDFLib, che la funzione esistente in memoriaHPDFCMSSHA256ByteRangesnon poteva eguagliare per input molto grandi
Version 2.310.0
Changed
THPDFJBIG2Optionsora adotta per impostazione predefinita parametri ottimizzati per la scansione (LossyLevel = 5,RemoveIsolatedBlackPixels = True,BlackDotSize = 3) consentendo alle immagini scansionate a 1 bit di comprimersi in dimensioni molto inferiori fin da subito; impostareLossyLevel = 0oLossless = Trueper ripristinare la corrispondenza rigorosa senza perdita
Performance
- La crescita della tabella xref è ora geometrica (piccoli documenti +N, documenti più grandi +25%) invece di riallocare l'array dinamico su ogni oggetto indiretto, eliminando il costo O(n²) che rallentava il caricamento e la creazione di PDF di grandi dimensioni con molti oggetti
Version 2.309.4
Added
- Aggiunto
THPDFDocOutlineObject.AddChildFirstin modo che i nodi della struttura generati possano anteporre una voce figlia prima dei fratelli esistenti pur preservando l'ordine della struttura salvato
Version 2.309.3
Added
- Aggiunto
pmUseOCaTHPDFPageModein modo che i documenti generati possano richiedere il pannello dei livelli di contenuto opzionali con catalogo/PageMode /UseOC
Version 2.309.2
Added
- Aggiunti overload delle stringhe del titolo per
THPDFPage.AddTextAnnotationin modo che le annotazioni di testo generate possano scrivere la voce del titolo o dell'autore PDF/T, conservando gli argomenti esistenti relativi a icona, colore e stato aperto
Version 2.309.1
Fixed
- L'azzeramento di
THotPDF.OutputStreamtramite l'assegnazione dinilora ripristina il normale output suFileNameinvece di lasciare il documento in modalità output su flusso
Version 2.309.0
Fixed
- L'importazione EMF/WMF ora rispetta le modalità di regione
EMR_EXTSELECTCLIPRGNper il ritaglio di copia, intersezione ed esclusione, mantenendoEMR_SETWORLDTRANSFORM,EMR_MODIFYWORLDTRANSFORMeEMR_SETPIXELVcoperti dai test di regressione non GUI
Version 2.308.0
Added
- La registrazione in fase di progettazione dell'add-on FastReport viene ora fornita come
frxHotPDFDesign, posizionandoTfrxHotPDFExportsulla tavolozza FastReport VCL pur mantenendo l'unità di runtime esistente e l'entry pointRegisterdisponibili per motivi di compatibilità
Version 2.307.0
Added
SignPDFWithPFXora analizza i file PFX crittografati PBE-SHA1-3DES PKCS#12 legacy in aggiunta ai profili PBES2 AES-256-CBC
Version 2.306.0
Changed
- Le chiamate ripetute che aggiungono la stessa immagine codificata ora riutilizzano l'Image XObject PDF esistente, preservando output distinti per diverse impostazioni di qualità JPEG e relazioni di maschera
Version 2.305.0
Added
TfrxHotPDFExport.PageRangeconsente ora alle esportazioni FastReport di scegliere il filtraggio delle pagine a base uno come1,3-5riutilizzando il parser condiviso dell'intervallo di pagine di HotPDF
Version 2.304.0
Fixed
- L'appiattimento delle tabelle da XFA a AcroForm consente ora a singole colonne automatiche completamente estensibili di ereditare la larghezza del contenuto della tabella, in modo che i campi senza una propria larghezza
wricevano comunque una larghezza misurabile e conservino la spaziatura delle righe
Version 2.303.0
Fixed
- L'appiattimento delle tabelle da XFA a AcroForm consente ora alle celle di testo estensibili di ereditare i valori fissi di
columnWidthsquando omettono il propriow, in modo da misurare l'altezza delle righe e mantenere separate le righe successive
Version 2.302.0
Fixed
- L'appiattimento da XFA a AcroForm misura ora i campi di testo estensibili all'interno di flussi nidificati
layout="tb"e avvoltilayout="lr-tb", e le righe di tabella mantengono ora l'altezza delle celle di testo estensibili quando posizionano i campi successivi
Version 2.301.0
Fixed
- L'appiattimento da XFA a AcroForm mantiene ora i campi di testo nei contenitori di flusso
layout="tb"elayout="lr-tb"quando omettono un'altezza esplicitah, misurando l'altezza del contenuto avvolto invece di saltarli come layout estensibili non supportati
Version 2.300.0
Fixed
THotPDF.ExtractObjectFromStreamrestituisce ora il dizionario analizzato per i membri materializzati del flusso di oggetti e non fabbrica più chiavi diagnostiche di dati grezzi quando i chiamanti ispezionano i flussi di oggetti PDF 1.5+ caricati
Version 2.299.0
Added
THotPDF.DecompressAllObjectStreamsè ora pubblico e forza i file PDF caricati che utilizzavano flussi di oggetti a salvare con oggetti compatti materializzati come normali oggetti indiretti, invece di copiare il layout del flusso di oggetti di origine
Version 2.298.0
Fixed
- La creazione di campi AcroForm rifiuta ora i nomi di campo radice duplicati sia per i nuovi documenti che per la modifica di documenti caricati, preservando il flusso di lavoro genitore-condiviso valido per i gruppi di pulsanti radio
Version 2.297.0
Added
TDBGridHotPDFExportOptionse il componenteTDBGridHotPDFExportespongono oraPDFAComplianceePDFXCompliancein modo che le esportazioni di tabelle DBGrid possano scegliere gli stessi controlli di conformità agli standard HotPDF usati dalla generazione diretta dei documenti
Version 2.296.0
Added
TQRHotPDFExportFiltereTdxHotPDFExportOptionsespongono oraPDFAComplianceePDFXCompliancein modo che le esportazioni QuickReport e DevExpress possano scegliere gli stessi controlli di conformità agli standard HotPDF usati dalla generazione diretta dei documenti
Version 2.295.0
Added
TfrxHotPDFExporteTppHotPDFDeviceespongono oraPDFAComplianceePDFXCompliancein modo che le esportazioni di report possano scegliere gli stessi controlli di conformità agli standard HotPDF usati dalla generazione diretta dei documenti
Version 2.294.0
Added
- I costruttori di canvas Form XObject e tiling pattern consentono ora ai chiamanti di comporre risorse riutilizzabili tramite helper di disegno tipizzati prima di registrarle per il riutilizzo nella pagina
THPDFExtGStateOptionsconsente ora a un ExtGState di combinare impostazioni di trasparenza, modalità di fusione, larghezza della linea, estremità della linea, giunzione della linea e limite di smussatura
Version 2.293.0
Added
- La codifica JBIG2 nativa supporta ora la compressione con dizionario dei simboli con dizionari globali condivisi opzionali, modalità di estrazione di rettangoli e di sole immagini, controlli per differenze di pixel con perdita e fallback PDF/A su CCITT nei casi in cui JBIG2 non sia consentito
- Il rendering EMF/WMF gestisce ora i record bitmap
TransparentBlteMaskBlttramite i percorsi di trasparenza e maschera d'immagine del PDF - Le modalità di esportazione nativa di FastReport e ReportBuilder coprono ora una maggiore quantità di output a livello di oggetto, inclusi memo/testo formattato stilizzato, codici a barre, immagini, forme vettoriali, linee, ritagli, cornici, tratteggi e percorsi di annotazione URL
- Le demo HugeFileBenchmark segnalano ora metriche del working-set e del picco del working-set, supportano un limite di memoria opzionale e mantengono i file di lavoro generati separati dall'output del report
- La demo Delphi
PDFOptimizedocumenta ora le scelte di compressione lato produttore per flussi di contenuto, flussi di oggetti, qualità JPEG, output CCITT e JBIG2
Fixed
- I controlli di copertura delle demo includono ora i file README delle demo basate sull'inglese, mappano gli esempi C++Builder consolidati sui relativi file effettivi e mantengono le demo GUI disabilitate per impostazione predefinita nei cicli di test di routine
Version 2.292.32
Added
- I pennelli a tratteggio EMF/WMF si mappano ora su pattern di piastrellatura PDF (tiling patterns) in modo che i disegni CAD e i report importati possano conservare la texture del tratteggio anziché appiattire tali riempimenti a un colore a tinta unita
Fixed
- Le modifiche al dizionario dei documenti caricati contrassegnano ora gli oggetti come modificati in modo che
SaveLoadedDocumentriscriva i PDF modificati invece di copiare l'origine originale dopo le modifiche alla struttura e all'albero degli oggetti - La rimozione della struttura caricata ricollega ora i segnalibri fratelli, e le decorazioni di testo sottolineato e sbarrato non ruotato emettono ora operatori di rettangolo pieno
Version 2.292.31
Added
THPDFEmfOptions.ShowNullBrushconsente ora al rendering EMF/WMF di esporre riempimenti con pennello nullo per flussi di lavoro diagnostici e di importazione in stile CAD, preservando per impostazione predefinita i pennelli nulli non riempiti
Version 2.292.30
Added
THPDFEmfOptions.CanvasOverconsente ora al replay del Canvas di pagina di posizionare il contenuto PDF esistente al di sopra del metafile Canvas analizzato, mentre l'impostazione predefinita mantiene l'ordine corrente con il Canvas in primo piano
Version 2.292.29
Added
THPDFEmfOptions.Redrawconsente ora ai chiamanti EMF/WMF di mantenere il percorso di ridisegno temporaneo predefinito o di disattivarlo e analizzare direttamente il metafile originale
Version 2.292.28
Added
THPDFEmfOptions.UseFrameconsente ora al rendering EMF/WMF di ritagliare l'output importato in base alla cornice dell'intestazione EMF per i metafile che si basano su limiti di cornice dichiarati
Version 2.292.27
Added
THPDFEmfOptions.ShowNullPenconsente ora al rendering EMF/WMF di esporre i contorni con penna nulla per flussi di lavoro diagnostici e di importazione in stile CAD, preservando per impostazione predefinita le penne nulle invisibili
Version 2.292.26
Added
THotPDF.SetFormFieldTooltipconsente ora alle applicazioni di assegnare suggerimenti di campo/TUdi AcroForm in base al nome del campo per i widget creati tramite i metodi di campoAdd...esistenti
Version 2.292.25
Fixed
- La modalità ad oggetti nativi di
TfrxHotPDFExportpreserva ora il ritaglio diTfrxPictureViewe il rendering della cornice quando le viste immagine vengono scritte direttamente come Image XObject di HotPDF
Version 2.292.24
Added
- La modalità ad oggetti nativi di
TfrxHotPDFExportmappa ora le viste di codici a barre FastReport unidimensionali orizzontali supportate direttamente sugli operatori di codici a barre HotPDF, mantenendo sul percorso di fallback esistente il testo leggibile, la generazione del checksum, il testo supplementare, la rotazione, le barre colorate e le simbologie non supportate
Version 2.292.23
Added
- La modalità comando di disegno nativo di
TppHotPDFDevicemappa ora i comandi di disegno di codici a barre ReportBuilder unidimensionali supportati direttamente sugli operatori di codici a barre HotPDF, preservando il fallback in enhanced-metafile per i comandi che richiedono testo leggibile, codici aggiuntivi, calcolo della cifra di controllo, barre colorate, rotazione o simbologie postali non supportate
Version 2.292.22
Fixed
- L'avvio automatico del visualizzatore PDF può ora essere soppresso in esecuzioni non interattive tramite
HOTPDF_SUPPRESS_AUTO_LAUNCH=1, e i test e smoke runner inclusi abilitano questa protezione per impostazione predefinita in modo che le esecuzioni di regressione non GUI non aprano finestre del visualizzatore
Version 2.292.21
Added
THPDFPage.ShowMetafileExha ora un overloadTHPDFEmfOptionsper singola chiamata, consentendo ai chiamanti di ignorare le impostazioni di rendering EMF/WMF per un singolo disegno di metafile, preservando i valori predefiniti a livello di documento
Version 2.292.20
Added
TfrxHotPDFExportespone ora i controlli di output HotPDF per le esportazioni FastReport, tra cuiAutoCreateURL,FontEmbedding,NotEmbeddedFonts,ActivateProtection,UserPassword,OwnerPassword,CryptKeyLength,ProtectOptionseEncryptMetadata
Version 2.292.19
Added
- Aggiunta un'unità add-on dedicata
dbGridHotPDFDesignin modo che i pacchetti in fase di progettazione possano registrareTDBGridHotPDFExportsulla tavolozza IDE di HotPDF, mantenendo l'adattatore di esportazione runtime DBGrid utilizzabile senza riferimenti ai pacchetti in fase di progettazione
Version 2.292.18
Changed
HPDFParsePFXsupporta ora profili PBES2/PBKDF2 che utilizzano la PRF HMAC-SHA-1 predefinita, oltre a HMAC-SHA-256 esplicita, migliorando la compatibilità con le esportazioni PKCS#12 AES-256-CBC più vecchie e continuando a rifiutare con una diagnostica i profili PBE-SHA1-3DES non supportati
Version 2.292.17
Added
- Aggiunto
THPDFTextOutBoxResultoltre aTHPDFPage.TextOutBoxExeTHPDFPage.WideTextOutBoxExin modo che l'output della casella di testo a capo possa segnalare il numero di caratteri scritti, le righe scritte e se il testo sorgente ha superato i limiti della casella, mentre i metodi legacy continuano a restituire il conteggio dei caratteri scritti
Version 2.292.16
Added
- Aggiunto
THPDFPage.TextFromBaseLine(Boolean)per alternare l'output del testo della pagina tra la semantica del bordo superiore e della coordinata Y di base, piùTHPDFPage.AppendScopedRawContentper racchiudere operatori di contenuto grezzo avanzati in una coppia automatica di salvataggio e ripristino dello stato grafico
Version 2.292.15
Changed
- La modalità ad oggetti nativi di
TfrxHotPDFExportpreserva ora il testo memo ritagliato e la spaziatura dei caratteri FastReport quando mappa le viste memo preparate direttamente sulle operazioni di testo della pagina HotPDF
Version 2.292.14
Added
TppHotPDFDeviceespone ora una modalitàRenderModeopzionale per l'esportazione di comandi di disegno nativi ReportBuilder, mappando i comandi comuni di testo, forme, linee, immagini e collegamenti URI direttamente sulle operazioni di pagina HotPDF e tornando automaticamente al bridge in enhanced-metafile esistente per le pagine contenenti comandi non supportati
Version 2.292.13
Added
- Aggiunto
THotPDF.EncryptMetadataper la crittografia standard delle password AES in modo che i chiamanti possano scrivere/EncryptMetadata false, mantenere in chiaro i flussi XMP/Metadataed emettere la corrispondente derivazione di chiave AES-128 o il flag dei metadati/PermsAES-256, invece di basarsi sul comportamento precedente di crittografia dei metadati sempre attiva
Version 2.292.12
Added
- Aggiunti wrapper di campo AcroForm in fase di creazione tramite
THPDFAcroFormFieldeTHPDFPage.CreateTextField,CreateCheckBox,CreateRadioButton,CreateComboBoxeCreateListBox, consentendo la configurazione concatenabile di suggerimenti, flag comuni, aspetto predefinito e azioni aggiuntive per campi o widget subito dopo la creazione del campo
Version 2.292.11
Added
- Aggiunti helper di alto livello per maschera d'immagine, trasparenza, qualità JPEG per singola immagine e compressione monocromatica automatica:
AddImageAsMask,AddImageWithMask,AddImageWithTransparency,AddImageWithTransparency32,AddImageWithJpegQuality,AddMonochromeImageAutoe il selettore di compressione opzionaleicAutoMono
Version 2.292.10
Added
- Aggiunti helper per azioni aggiuntive dei campi AcroForm per catene
THPDFActionBuilder, inclusi wrapper denominati per/AA /K,/AA /F,/AA /V,/AA /C, trigger mouse e focus del widget, e corrispondenti helper di cancellazione per voci di trigger di campi e annotazioni
Version 2.292.9
Added
- Aggiunti helper per azioni aggiuntive del ciclo di vita del documento per catene
THPDFActionBuilder:SetDocumentCloseAction,SetDocumentWillSaveAction,SetDocumentDidSaveAction,SetDocumentWillPrintAction,SetDocumentDidPrintAction, e corrispondenti metodi di cancellazione che scrivono voci di catalogo/AA /WC,/AA /WS,/AA /DS,/AA /WPe/AA /DP
Version 2.292.8
Added
- Aggiunto il supporto per azioni aggiuntive di pagine generate con
THPDFPageActionTrigger, helper di pagina corrente perSetPageAdditionalAction,SetPageOpenAction,SetPageCloseActione corrispondenti metodi di cancellazione, più helper indicizzati per pagina diTHotPDFche scrivono azioni di pagina/AA /Oe/AA /Ca partire da catene riutilizzabiliTHPDFActionBuildersenza modificare la pagina di disegno attiva
Version 2.292.7
Added
- Aggiunta la scrittura delle etichette di pagina per i documenti generati e dei thread di articoli tramite
THPDFPageLabelStyle,THotPDF.SetPageLabel, i cinque helper per etichette di pagina specifici per lo stile,THotPDF.ClearPageLabels,THotPDF.RegisterArticleThreadeTHPDFPage.AddArticleBead
Version 2.292.6
Added
THPDFActionBuilderora crea dizionari di azioni avanzate perThread,Sound,Movie,Rendition, visibilità del livelloSetOCGState, transizioni di paginaTranseGoTo3DView, con gli helperShowLayer,HideLayereToggleLayerpiù le restrizioni PDF/A/PDF/X
Version 2.292.5
Added
THPDFPage.SetAnnotationAdditionalActioneTHotPDF.SetFormFieldAdditionalActionora collegano cateneTHPDFActionBuilderriutilizzabili ai dizionari di trigger/AAdelle annotazioni e di AcroForm, sostituendo solo il trigger selezionato e preservando le restrizioni delle azioni PDF/A/PDF/X
Version 2.292.4
Added
THPDFNamesFacadeora aggiunge wrapper di funzioni JavaScript e istantanee di array per JavaScript caricato e destinazioni denominate,THPDFActionBuilderora crea azioni di invio/ripristino con ambito di campo e destinazioni di pagina remote, e la modalità ad oggetti nativi dell'adattatore FastReport preserva gli sfondi dei memo, l'allineamento del testo e gli stili della cornice
Version 2.292.3
Added
THPDFActionBuilderora supporta destinazioni denominate remote e azioni Launch, e la modalità ad oggetti nativi dell'adattatore FastReport mappa gli URL delle viste su annotazioni di collegamento URI di HotPDF
Version 2.292.2
Added
THPDFActionBuilderora supporta azioniGoToPagemirate direttamente alla pagina, gli helper per i nomi dei file EMF/WMF accettanoTHPDFEmfOptionsper chiamata, e la modalità ad oggetti nativi dell'adattatore FastReport mappa le viste immagine direttamente su Image XObject di HotPDF
Version 2.292.1
Added
- Il rendering EMF/WMF supporta ora le sostituzioni di
THPDFEmfOptionsper singola chiamata tramite gli overloadShowEnhancedMetafile,EnhancedShowMetafileeShowMetafileavanzato, consentendo a un singolo metafile di scegliere compressione, scala, DC di riferimento, modalità di estensione e comportamento della penna estesa senza modificare le impostazioni a livello di documento diTHotPDF.EmfOptions
Version 2.274.1
Fixed
- Le procedure per i glifi
Type3dichiarate cond1ora ignorano gli operatori di selezione del colore all'interno della procedura e disegnano sempre con il colore di riempimento corrente del testo, come richiesto dalle specifiche PDF; i glifi dichiarati con la formad0mantengono i propri colori - La soppressione si applica solo all'interno della riproduzione del glifo (inclusi gli oggetti modulo nidificati) e non influisce mai sui colori selezionati dal contenuto della pagina circostante
Version 2.274.0
Added
- Le procedure per i glifi
Type3che dichiarano un riquadro di delimitazioned1vengono ora ritagliate in base ad esso durante il rendering della pagina, in modo che procedure per glifi malformate o sovradimensionate non possano più disegnare al di fuori dei loro limiti dichiarati - I glifi che utilizzano la forma
d0mantengono il loro comportamento non limitato, e i riquadri degenerati (vuoti o invertiti) vengono ignorati anziché azzerare il glifo
Version 2.273.0
Added
- Il rendering della pagina risolve ora i dizionari
/Encodingdei font semplici: gli array/Differencesrimappano i codici dei caratteri su glifi con nome, assumendo la priorità sulla mappa dei caratteri propria del programma del font come richiesto dalle specifiche PDF — i documenti prodotti da toolchain derivate da TeX e PostScript, che si basano fortemente su/Differences, ora disegnano i glifi previsti - I nomi dei glifi si risolvono tramite l'Adobe Glyph List (inclusi i formati
uniXXXXe i nomi dei subsetgNN/glyphNN), tramite il set di caratteri di un programma di font compatto o tramite la mappa dei caratteri di un programma TrueType, a seconda di quale sia supportato dal font incorporato - Le codifiche di base predefinite
StandardEncoding,WinAnsiEncodingeMacRomanEncodingvengono rispettate per i codici senza una sostituzione/Differences, correggendo l'intervallo 0x80–0x9F che un'ipotesi Latin-1 semplice gestisce in modo errato - I programmi compatti (
Type1C) che si basano esclusivamente su una codifica predefinita — in precedenza ricorrendo a un font di sistema per l'intero blocco — ora renderizzano i loro contorni incorporati tramite la ricerca del nome standard
Version 2.272.0
Added
- Il rendering delle pagine con glifi incorporati copre ora i font semplici (non-CID)
Type1con un programma compattoFontFile3Type1C: i codici dei caratteri a un byte si risolvono attraverso la codifica incorporata del programma del font in contorni reali di charstring di Tipo 2, completando la copertura dei contorni incorporati per le varianti di font CID e semplici - I font semplici
TrueTypeaccettano inoltre un programmaFontFile3OpenType(variante CFF) quando non è presente alcunFontFile2 - I codici dei caratteri che la codifica integrata non può mappare mantengono il fallback al font di sistema per singolo glifo, e i font che si basano esclusivamente sulle codifiche predefinite Standard/Expert continuano a utilizzare il precedente fallback per l'intero blocco
Version 2.271.0
Added
- Il rendering della pagina supporta ora i font
Type3: la procedura del flusso di contenuto di ciascun glifo viene riprodotta attraverso il renderer combinando la matrice del font, la dimensione del font, la matrice del testo e la trasformazione corrente, facendo apparire nell'output renderizzato i timbri, i font per codici a barre e altri glifi disegnati tramite procedure invece di saltarli - La mappa
/Encoding/Differencesassocia i codici dei caratteri alle procedure dei glifi, e le larghezze/Widthsdello spazio dei glifi vengono interpretate tramite la/FontMatrix, mantenendo corretti gli avanzamenti per i sistemi di coordinate dei glifi non standard - Le procedure dei glifi possono fare riferimento al dizionario delle risorse
/Resourcesdel font stesso (ricorrendo alle risorse della pagina) e sono protette dalla stessa guardia contro la ricorsione dei Form XObject
Version 2.270.0
Added
- Il rendering delle pagine con glifi incorporati copre ora i font semplici (non-CID)
Type2(nota: in batch è TrueType): i codici dei caratteri a un byte si mappano sui glifi tramite la tabellacmapdel programma del font incorporato, consentendo alle pagine che utilizzano normali font TrueType incorporati di essere renderizzate con le loro esatte forme di glifi anziché con un font di sistema con nome simile - La ricerca della
cmapsegue una solida catena di sottotabelle — prima Unicode (formato 4 e formato 12), poi sottotabelle con codifica a simboli con lo specchio per uso privatoF000, quindi sottotabelle Macintosh legacy (formati 0 e 6) — allineandosi al comportamento di fallback della pipeline di creazione - I codici dei caratteri che la
cmapincorporata non può mappare ricorrono al precedente disegno con font di sistema per singolo glifo, in modo che i font misti o parzialmente subset si degradino correttamente anziché perdere testo
Version 2.269.0
Added
- Il rendering delle pagine con glifi incorporati copre ora i programmi di font CFF: il testo nei font
Type0/CIDFontType0con un programmaFontFile3(CIDFontType0C,Type1Co un wrapperOpenType) viene renderizzato a partire dai contorni reali di charstring di Tipo 2, invece di sostituire un font di sistema con nome simile - L'interprete di charstring supporta l'intero set di operatori di disegno — linee, curve, la famiglia flex, maschere di suggerimento e chiamate a sottoprogrammi locali/globali con bias del sottoprogramma — in modo che i font CFF prodotti a livello professionale riproducano le loro esatte forme di glifi
- I programmi CFF con chiave CID mappano i codici dei caratteri tramite il charset del font, mantenendo corretta la selezione dei glifi per i font subset il cui ordine dei glifi differisce dall'ordine CID; la selezione del dizionario dei font per singolo glifo (
FDArray/FDSelect) viene rispettata - I programmi incorporati TrueType (
FontFile2) e CFF (FontFile3) condividono ora un'unica pipeline di rendering; i font senza un programma incorporato utilizzabile mantengono il precedente fallback al font di sistema
Version 2.268.0
Added
- Rendering di pagine con glifi incorporati: il testo nei font
Type0/CIDFontType2con un programma TrueType incorporato (FontFile2) viene ora renderizzato a partire dai contorni reali dei glifi del font — contorni quadratici, punti impliciti sulla curva e glifi compositi vengono riprodotti come tracciati vettoriali riempiti — invece di sostituire un font di sistema con nome simile - Sono supportati sia i layout
Identityche quelli espliciti del flussoCIDToGIDMap, coprendo i font incorporati subset; i documenti prodotti dalla pipeline Unicode di HotPDF eseguono ora il ciclo completo tramiteRenderLoadedPageToBitmapcon le esatte forme dei glifi incorporati - Gli avanzamenti CID rispettano ora le voci di larghezza
/We/DW, e i codici a due byteIdentity-Havanzano correttamente, correggendo il posizionamento del testo per i font con chiave CID nell'output renderizzato - I font senza un programma incorporato utilizzabile (variante CFF
FontFile3, errori di mappatura) mantengono il precedente fallback al font di sistema
Version 2.267.0
Added
- Cache delle immagini decodificate per il rendering delle pagine: gli Image XObject ripetuti su più pagine (loghi, intestazioni di lettere, immagini di filigrane) vengono ora decodificati una sola volta per caricamento del documento invece di una volta per disegno, dimezzando approssimativamente il tempo di rendering per le pagine con immagini condivise e velocizzando di conseguenza l'esportazione in TIFF multipagina
- La cache è limitata da
ImageCacheMaxBytes(predefinito 32 MB) con sfratto dei dati utilizzati meno di recente, viene ripulita automaticamente quando un documento viene caricato e si svuota insieme aInvalidateRenderedPageCachedopo le modifiche sul posto - Nuova
THPDFWeightedCacheriutilizzabile (unitàHPDFCache): una cache limitata in byte basata sui dati utilizzati più di recente con statistiche di hit/miss e un helper per chiave di hash del contenuto SHA-256, disponibile per le applicazioni host per memorizzare nella cache i propri passaggi intermedi pesanti
Version 2.266.0
Added
- Supporto per font a simboli e legacy in
RegisterUnicodeTTF: i font che contengono solo una mappa di caratteri a simboli (Wingdings, Webdings e simili caratteri con cmap (3,0)) ora si registrano con una mappa di codepoint funzionante invece di risolvere ogni carattere in.notdef - I codepoint dei simboli sono raggiungibili sia attraverso il loro intervallo nativo
U+F0xxsia attraverso il semplice ASCII ('A'raggiunge lo stesso glifo diU+F041), allineandosi a come i visualizzatori trattano il testo codificato a simboli - I font legacy la cui mappa dei caratteri offre solo una sottotabella in formato 6 (tabella ritagliata) o formato 0 (tabella di byte) ora ricorrono a queste ultime, consentendo ai vecchi font di origine Mac di incorporarsi correttamente; i percorsi primari Unicode formato 4 / formato 12 rimangono invariati
Version 2.265.0
Added
- Cache delle pagine renderizzate:
RenderLoadedPageToBitmapCachedconserva le pagine renderizzate di recente indicizzate per pagina e DPI, in modo che il nuovo rendering della stessa pagina (anteprime di pagina, miniature, esportazioni ripetute) ritorni in microsecondi invece di reinterpretare il flusso di contenuto — i riscontri nella cache sono in genere migliaia di volte più veloci - La cache contiene fino a
RenderCacheCapacitypagine (predefinito 8) in ordine di utilizzo più recente e restituisce una bitmap indipendente di proprietà del chiamante a ogni chiamata; il caricamento di un nuovo documento la ripulisce automaticamente, eInvalidateRenderedPageCachela cancella dopo le modifiche alle pagine sul posto
Version 2.264.0
Added
- Output in testo formattato:
THPDFPage.TextOutHTMLrenderizza una stringa marcata con un subset HTML —<b>,<i>,<u>,<s>,<br>e<font size color face>con annidamento — in questo modo i paragrafi stilizzati non richiedono più una chiamataSetFont/TextOutseparata per ogni variazione di stile - Dimensioni di font miste su un'unica riga condividono una linea di base comune (impostata dal font più grande della riga), e l'interlinea di ciascuna riga segue il suo font più grande, fornendo un output tipograficamente corretto per intestazioni mescolate al testo del corpo
- I colori accettano
#RRGGBBe i 16 nomi di colori HTML standard; le entità&<>" e le entità numeriche&#N;(inclusi i codici dei piani supplementari) vengono decodificati - La chiamata restituisce la coordinata Y a cui continuerebbe una riga successiva, in modo che i blocchi consecutivi di
TextOutHTMLsi sovrappongano in modo naturale
Version 2.263.0
Added
- Estrazione del testo con conservazione del layout:
ExtractLoadedPageTextLayoutricostruisce la disposizione visiva di una pagina sotto forma di testo semplice — i glifi vengono raggruppati in linee di base e lo spazio vuoto orizzontale / verticale viene riprodotto su una griglia di caratteri, consentendo a colonne, rientri e allineamenti di tabella di sopravvivere nell'output - Ampi spazi tra i blocchi di testo sulla stessa linea di base diventano serie di spazi, e ampi spazi tra le linee di base diventano righe vuote, rendendo il risultato idoneo per operazioni di diff, grep e inserimento in pipeline di analisi del testo che si basano sull'allineamento posizionale
- L'estrazione del flusso di lettura esistente
ExtractLoadedPageTextrimane invariata; selezionare quest'ultima quando conta solo il contenuto testuale e la nuova chiamata quando conta il layout
Version 2.262.0
Added
- Ricerca dei segnalibri sull'intero albero:
FindLoadedOutlineByTitlepercorre l'intera gerarchia della struttura di un documento caricato (tutti i livelli di annidamento, non solo i capitoli di livello superiore) e risolve la pagina di destinazione del segnalibro corrispondente, con corrispondenza parziale e sensibile alle maiuscole opzionale - Sia le destinazioni dirette
/Destche le destinazioni dell'azioneGoTovengono risolte in un indice di pagina, consentendo di saltare immediatamente a un segnalibro trovato GetLoadedOutlineTitlesDeepenumera ogni titolo di segnalibro nell'albero in ordine depth-first (lettura), integrando l'esistente enumerazione limitata al solo livello superiore
Version 2.261.0
Added
- Estrazione in batch degli allegati:
SaveAllLoadedEmbeddedFilesscrive ogni file incorporato di un documento caricato in una directory di destinazione in un'unica chiamata, creando la directory se mancante e restituendo il numero di file scritti - I nomi degli allegati vengono ripuliti prima dell'uso — i separatori di percorso e i caratteri rifiutati dal file system diventano trattini bassi, impedendo a un documento di scrivere al di fuori della directory scelta — e i nomi duplicati ricevono automaticamente un suffisso
_CopyNprima dell'estensione
Version 2.260.0
Added
- Esportazione TIFF multipagina per documenti caricati:
SaveLoadedPagesToTiffesegue il rendering delle pagine selezionate e le scrive in un singolo file TIFF 6.0 con un'immagine per pagina — il formato di interscambio previsto dalle pipeline di archiviazione dei documenti, scansione e fax - Le pagine vengono selezionate con la familiare sintassi degli intervalli a base uno (
"1,3-5,7-"; se vuota seleziona ogni pagina), renderizzate a un DPI scelto dal chiamante e memorizzate come RGB a 24 bit con compressione Deflate opzionale (attiva per impostazione predefinita; passareFalseper un output non compresso) SaveLoadedPagesToTiffStreamscrive lo stesso TIFF multipagina su qualsiasiTStream; entrambe le chiamate restituiscono il numero di pagine effettivamente scritte
Version 2.259.0
Added
- Convalida della firma digitale per documenti caricati:
VerifyLoadedSignaturericalcola l'impronta digitale di/ByteRangee controlla crittograficamente la firma RSA rispetto al certificato incorporato nella firma, segnalando un verdetto preciso (valido, documento modificato dopo la firma, firma non valida, algoritmo non supportato o contenitore malformato) GetLoadedSignatureInforestituisce il nome del firmatario, i nomi distinti del soggetto e dell'emittente, il numero di serie e il periodo di validità del certificato, il momento della firma, l'algoritmo di hash, il subfilter e i campi/Reason//Location//ContactInfoper ciascun campo firma senza modificare i byte del documentoVerifyLoadedSignatureExcombina entrambe le cose: una sola chiamata convalida e restituisce il record di informazioni popolato, incluso se la firma copre l'intero documento;VerifyAllLoadedSignaturescontrolla tutti i campi firma contemporaneamente- Algoritmi supportati: RSA (PKCS#1 v1.5) con impronte digitali SHA-1, SHA-256, SHA-384 o SHA-512, che coprono le firme
adbe.pkcs7.detachedeETSI.CAdES.detachedcon o senza attributi firmati - Un overload di
TStreamconvalida i documenti caricati da flussi; la catena di certificati e la convalida della attendibilità rimangono responsabilità del chiamante
Version 2.258.0
Added
- Il decodificatore esterno JBIG2 ad alte prestazioni è ora disponibile nelle build a 32 bit (Win32); in precedenza era solo a 64 bit; il caricamento di file PDF con immagini
/JBIG2Decodee l'uso diExtractLoadedImagelo utilizzano per impostazione predefinita su entrambe le piattaforme, decodificando in genere da 3 a 9 volte più velocemente rispetto al decodificatore Pascal nativo - L'interruttore
UseExternalJBIG2Decodersi comporta allo stesso modo a 32 bit e a 64 bit: impostarlo aFalseper selezionare il decodificatore Pascal nativo
Version 2.257.1
Fixed
- Ripristinato il backend dell'encoder JBIG2 ad alte prestazioni nelle build a 64 bit (Win64): una regressione del controllo di piattaforma introdotta durante il collegamento del backend a 32 bit ha escluso l'encoder esterno dalle build Win64, per cui
AddImagecon compressioneicJBIG2ricorreva silenziosamente all'encoder MMR Pascal nativo; Win64 codifica ora nuovamente tramite il backend aritmetico, in genere da 4 a 8 volte più velocemente con compressione uguale o migliore;THPDFJBIG2Options.UseExternalEncoder := Falserimane la modalità esplicita per selezionare il fallback MMR
Version 2.257.0
Added
- Il backend dell'encoder JBIG2 ad alte prestazioni è ora disponibile nelle build a 32 bit (Win32); in precedenza era solo a 64 bit;
AddImagecon compressioneicJBIG2lo utilizza per impostazione predefinita su entrambe le piattaforme, producendo flussi JBIG2 codificati in modo aritmetico conformi agli standard da 4 a 7 volte più velocemente rispetto al fallback Pascal nativo - L'interruttore
THPDFJBIG2Options.UseExternalEncodersi comporta allo stesso modo a 32 bit e a 64 bit: impostarlo aFalseper ricorrere all'encoder MMR Pascal nativo
Fixed
- Risolta una serie di crash solo a 32 bit (access violations) nel livello di supporto dell'encoder collegato staticamente che rendeva inutilizzabile il backend dell'encoder JBIG2 nelle build Win32; l'output di codifica è verificato come identico byte per byte al backend a 64 bit ed esegue il ciclo completo senza perdite attraverso i decodificatori JBIG2 integrati e nativi
Version 2.256.0
Added
- Esteso il supporto delle annotazioni XFDF ai restanti quattro sottotipi della Tabella 1 ISO 19444-1, completando la copertura completa di tutti i 18 elementi di annotazione XFDF:
<fileattachment>(decodifica il<data>base64 in un flusso di file incorporato + Filespec all'importazione, ricodifica all'esportazione),<sound>(flusso/Soundincorporato con parametri audio/R /B /C /E),<redact>(un'annotazione standard/Redactcon/OverlayText,/DA,/Qe/IC— distinta dalla mascheraRedactLoadedRectdel flusso di contenuto esistente) e<link>(<OnActivation><Action>mappato su un dizionario di azioni URI o Named, con destinazioni denominate<Dest>) - Aggiunto un codec base64 autonomo (
HPDFXFDFEncodeBase64/HPDFXFDFDecodeBase64) in modo che il livello XFDF non dipenda daHPDFXFA; in precedenza la libreria forniva solo un decodificatore - Esteso
THPDFXFDFAccesscon callback del flusso incorporato (ResolveStream/NewIndirectStream/ReadStreamBytes) collegate aTHotPDF.ResolveLoadedStream/NewIndirectStream/HPDFReadStreamBytes - Aggiunti 3 casi DUnitX a
HotPDF.XFDFTests(ciclo completo base64, Redact con OverlayText, Link con azione URI) — la suite completa è ora a 310/310 su Win32 e Win64
Version 2.255.0
Added
- Aggiunta l'importazione/esportazione XFDF (ISO 19444-1):
THotPDF.ExportLoadedFormToXFDF/ImportLoadedFormFromXFDFeseguono il ciclo completo dei valori dei campi AcroForm tramite l'XML Forms Data Format (la controparte XML di FDF), coprendo campi semplici e strutturati (nomi separati da punti), liste multiselezione (più figli<value>fratelli), valori di esportazione di caselle di controllo / pulsanti radio e campi firma (solo nome, nessun<value>come da §6.3.3.1); l'output è un documento UTF-8<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">con lo spazio dei nomi Adobe come richiesto da §5.5.2 - Aggiunte le funzioni
THotPDF.ExportLoadedAnnotationsToXFDF/ImportLoadedAnnotationsFromXFDFper i 14 sottotipi di annotazione della Tabella 1 ISO 19444-1 che HotPDF già crea (text / freetext / line / square / circle / polygon / polyline / highlight / underline / strikeout / squiggly / stamp / ink / caret), trasportando gli attributi comuni (page, rect, color, flags, name, date, title, contents, subject, creationdate, opacity, intent), la geometria specifica per tipo (QuadPoints per contrassegno, Vertices per poligono/polilinea, L per linea, InkList per inchiostro), l'icona per testo/timbro e i popup figli; i sottotipi FileAttachment / Sound / Redact / Link-action sono rinviati a una fase successiva - Aggiunto
Lib/HPDFXFDFXml.pas: un motore XML leggero e indipendente (nessuna dipendenza da MSXML / OmniXML, compilabile su Delphi 5 .. RAD Studio) che fornisce un DOM minimo (THPDFXFDFNode), un parser tollerante (BOM, commenti, CDATA, istruzioni di elaborazione, ordine degli attributi, autochiusura, UTF-8 multibyte) e un generatore UTF-8 che applica la convenzione di escape ISO 19444-1 §5.8.2 (entità per & < > ", riferimenti a caratteri per LF/CR/TAB, letterali ottali per altri byte di controllo) - Aggiunto
Lib/HPDFXFDF.pas: lo strato logico per XFDF, disaccoppiato daHPDFDoctramite un record di puntatori a funzione (THPDFXFDFAccess) vincolato dalla sezione di implementazione di HPDFDoc (stesso pattern diHPDFTextExtraction); fornisce helper per il colore#RRGGBB↔ DeviceRGB e per nome flag ↔ bit-set intero - Aggiunto
HotPDF.XFDFTests(8 casi DUnitX) che coprono il motore XML (ciclo completo di escape, tolleranza del parser, campi nidificati, UTF-8), l'esportazione/importazione di campi su un record di accesso simulato e l'esportazione/importazione di annotazioni su un mock creato da istanze realiTHPDFDictionaryObject— tutti i test passano su Win32 e Win64
Version 2.254.0
Added
- Aggiunta l'estrazione strutturata delle fatture lato lettura:
HPDFFacturXXMLElementTextesegue una scansione delle sottostringhe sensibile ai confini di parola per qualsiasi elemento CII/UBL (nessun XML DOM, funziona su ogni versione di Delphi supportata),HPDFFacturXInvoiceSummaryFromXMLeTHotPDF.GetLoadedInvoiceSummaryrestituiscono un recordTHPDFFacturXInvoiceSummarycon i campi comuni BT-1/2/5/27/44/106/110/112/115 (numero fattura, data di emissione, valuta, nomi di venditore/acquirente, totali di riga/imposta/complessivi), con il nome dell'acquirente perfezionato individuando l'aggregatoBuyerTradePartyanziché solo il primoram:Name - Aggiunta la scansione di regressione strutturale PDF/A-3 come
THotPDF.GetLoadedPDFAIssues, deliberatamente separata daValidateFacturXInvoicein modo che il verdetto sul contenitore Factur-X rimanga stabile (una fattura ibrida con un OutputIntent mancante è comunque un contenitore valido, semplicemente non è un file conforme a PDF/A-3); rispecchia le asserzioni ISO 19005-3 sollevate da veraPDF per font non incorporati (fxviFontsNotEmbedded), OutputIntent mancante (fxviMissingOutputIntent) e crittografia vietata (fxviEncryptedDocument), tutti nuovi membri dell'enumTHPDFFacturXValidationIssue - Aggiunta la classificazione degli allegati incorporati tramite
THotPDF.GetLoadedFacturXAttachments: enumera ogni file incorporato e lo classifica secondo la tassonomia 6.4 della specifica Factur-X 1.09 (fattura CII primaria, rappresentazione supplementare UBL o EDIFACT, documento di supporto) utilizzando il nuovo enumTHPDFFacturXAttachmentRole, consentendo ai destinatari di instradare gli allegati senza dover ricavare nuovamente il ruolo dai nomi dei file - Aggiunto il supporto per allegati supplementari EDIFACT simmetrico a UBL:
THotPDF.AddEDIFACTSupplementaryFileincorpora un messaggio EDIFACT comefactur-xedifact.edi(MIMEtext/plain, relazioneAlternative),HPDFIsFacturXEDIFACTFileNamene riconosce il nome file eDetectFacturXInvoicelo registra in un nuovo campoTHPDFFacturXInvoiceInfo.EDIFACTFileName - Aggiunto il supporto per PDF/A-4 / PDF/A-4f (ISO 19005-4, nota a piè di pagina 2 della specifica Factur-X 1.09):
PDFAPartriconosce ora'4'/'4F'(emettendopdfaid:part=4) ePDFAConformanceLevelrestituisce vuoto per la parte 4 poiché il PDF/A-4 elimina i livelli A/B/U;IsPDFA2OrLatercopre automaticamente la parte 4 applicando i controlli sulle restrizioni esistenti - Aggiunto il controllo di coerenza visiva/XML del Principio 4 come
THotPDF.ValidateVisualXmlConsistency: estrae il testo visibile di ogni pagina e verifica che i valori di numero fattura, venditore, acquirente e totale complessivo presenti nell'XML incorporato compaiano anche nella rappresentazione leggibile (specifica Factur-X 1.09 5.1); un disallineamento viene segnalato come elenco di nomi di campi mancanti, impostato come avviso euristico piuttosto che come errore di convalida bloccante, poiché il PDF potrebbe formattare o mandare a capo i valori
Changed
- L'esempio di fatturazione elettronica
ShowValidationReportrenderizza ora il riepilogo della fattura lato lettura, il set indipendente di problemi PDF/A-3, l'elenco degli allegati classificati e il verdetto di coerenza visiva/XML del Principio 4 insieme ai controlli esistenti sul contenitore e sulle regole aziendali Schematron, dimostrando le nuove API lato lettura su ogni PDF generato
Version 2.253.1
Fixed
- Allineato il codice sorgente della demo di fatturazione elettronica con le relative asserzioni dei test di regressione:
TInvoiceForm = class(TForm)utilizza ora la dichiarazione standard con spazi, eIsDefaultOutputFileintroduce una variabile localeProfileper iterazione (impostata daGetProfile(I)) in modo che il sorgente contenga l'esatto valore letteralestring(Profile.OutputBaseName)+ '.pdf'controllato dai test, evitando la chiamata duplicata aGetProfileper iterazione del ciclo; risolve i due storici fallimenti diEInvoiceDemoDefaultOutputUsesProfileSuffix/EInvoiceDemoUsesProjectFileAndOutputNames
Version 2.253.0
Added
- Aggiunto il rendering delle pagine dei documenti caricati:
THotPDF.RenderLoadedPageToBitmap(PageIndex, DPI)disegna una pagina su un oggetto GDITBitmapRGB a 24 bit (a carico del chiamante) interpretando il flusso/Contentsa fronte di uno stato grafico completo (CTM, colori, attributi delle linee, stato del testo) e un tracciato corrente, inviando ogni operatore a GDI tramite bridge per tracciati / testo / immagini; il set di operatori supportati copre il subset comune di PDF di documenti: testo (BT ET Tf Tc Tw Tz TL Tr Ts Td TD Tm T* Tj TJ ' "), costruzione e pittura del tracciato (m l c v y re h S s f F f* B b B* b* n W W*), colore (rg RG g G k K), stato grafico (q Q cm w) eDoper le immagini e un livello di ricorsione di Form XObject; gli spazi colore gestiti sono DeviceRGB / Gray / CMYK e Indexed; CalRGB / Lab / ICCBased si degradano a un'approssimazione ottimale; sei nuove unità (HPDFRenderMatrix,HPDFRenderGraphicsState,HPDFRenderColorSpace,HPDFRenderPath,HPDFRenderFontMetrics,HPDFPageRenderer) mantengono il renderer disaccoppiato daHPDFDoctramite un record di accessori di puntatori a funzione - Aggiunto
HotPDF.RenderTests(3 casi DUnitX) che coprono il rendering delle pagine di testo (bitmap non vuota), corrispondenza dimensioni pagina-DPI e restituzione di nil per indice di pagina fuori intervallo — tutti i test passano su Win32 e Win64
Version 2.252.0
Added
- Aggiunta la sostituzione di testo nei documenti caricati:
THotPDF.ReplaceLoadedPageTexteReplaceLoadedDocumentTextriscrivono ogni occorrenza di una chiave codificando al contrario la sostituzione tramite la tabella dei codici carattere del font (HPDFEncodeUnicode) e inserendo il risultato esclusivamente negli intervalli di byte di codice corrispondenti di ciascun operando di stringa — byte non corrispondenti, spazi vuoti tra i token e operatori sono preservati alla lettera; ogni flusso/Contentsè elaborato isolatamente in modo che le pagine a più flussi rimangano ben formate; i flussi compressi vengono decompressi per la modifica e salvati non compressi (la voce/Filterviene rimossa, accettando un file più grande);ReplaceCountsegnala il numero di riscritture di operandi eseguite - Aggiunto
HPDFEncodeUnicodeinHPDFTextExtraction: l'inverso diHPDFDecodeCharCode, mappa un code point Unicode sui byte del codice carattere del font percorrendo al contrario la stessa catena strategica (ToUnicode bfchar/bfrange, flusso Encoding cidchar/cidrange + CIDToUnicode, Type0 CIDToGID/CIDIdentity, tabelle predefinite WinAnsi/MacRoman), garantendo la stabilità del ciclo completo di codifica→decodifica per qualsiasi codice risolvibile dal decodificatore - Aggiunti
HPDFSerializeStringLiteral/HPDFSerializeHexStringinHPDFContentStream: riserializzano i byte grezzi del codice carattere in un valore letterale di stringa del flusso di contenuto PDF ((...)con()\ed escape ottali) o in una stringa esadecimale (<...>), rispecchiando le funzioniReadLiteralString/ReadHexStringdel tokenizer in modo da eseguire in modo pulito il ciclo di analisi → riserializzazione - Aggiunto
HPDFMatchGlyphsinHPDFContentStream: un matcher di sequenze di glifi in modalità funzione pura estratto daSearchLoadedPageTextin modo che i percorsi di ricerca e sostituzione condividano un unico nucleo di corrispondenza - Aggiunto
THPDFPageFontResolver.LookupDecoderin modo che il percorso di sostituzione possa ottenere una copia del decodificatore del font per la codifica inversa al di fuori del ciclo dell'interprete - Aggiunto
HotPDF.ReplaceTests(8 casi DUnitX) che coprono cicli completi del serializzatore (letterale/esadecimale/escape byte alto) e scenari end-to-end di stessa lunghezza, lunghezze differenti, corrispondenze multiple, degradazione del flusso compresso e assenza di chiave cercata — tutti i test passano su Win32 e Win64
Version 2.251.0
Added
- Aggiunta la ricerca testuale nei documenti caricati:
THotPDF.SearchLoadedPageTexteSearchLoadedDocumentTextindividuano ogni occorrenza di una chiave confrontando la sequenza di glifi Unicode prodotta daExtractLoadedPageGlyphs, restituendo unaTHPDFTextMatchArrayle cui voci riportano l'intervallo di glifi, l'origine e la larghezza nello spazio utente, e l'indice di token/voce sorgente in modo che il chiamante possa successivamente riscrivere i byte dell'operando; la corrispondenza case-insensitive utilizza il folding solo ASCII per mantenere il comportamento identico tra le toolchain da Delphi 5 a XE - Esteso il tokenizer e l'interprete del flusso di contenuto con il tracciamento dei byte-offset:
THPDFContentTokenandTHPDFArrayItemregistrano oraStartOfs/EndOfsche coprono ciascun operando esattamente come scritto (inclusi i delimitatori()o<>), e ciascunTHPDFGlyphRecordriportaTokenIndex/ItemIndex/ByteOffsetche rimandano all'operando e all'unità di codice che lo hanno prodotto — la base per la sostituzione del testo sul posto - Aggiunto
HotPDF.SearchTests(10 casi DUnitX) che coprono la ricostruzione dell'intervallo di offset per operandi letterali/esadecimali/array TJ, il riferimento inverso glifo→token e ricerche end-to-end singole, case-insensitive, con corrispondenze multiple e sull'intero documento, oltre ai casi limite di chiave vuota o mancante — tutti i test passano su Win32 e Win64
Version 2.250.0
Fixed
- Irrobustito
ImportLoadedFormFromFDF: sostituito lo scanner a livello di byte/T+spazio +/V+spazio (che analizzava erroneamente/Type /Cataloge altri token/T*come nomi di campi, inghiottiva byte tra gli oggetti fino alla parentesi successiva(e perdeva i valori delle stringhe esadecimali) con un'analisi strutturale — ciascun dizionario di campo<< /T ... /V ... >>all'interno dell'array/Fieldsviene sezionato tramite il tracciamento della profondità delle parentesi (rispettando i valori letterali di stringa esadecimali e normali) e passato aHPDFParserParseSimpleDictionary, garantendo il corretto ciclo completo per valori/Vdi tipo stringa, esadecimale, nome e numerico - I valori
/Vtrasportati come stringhe esadecimali UTF-16BE (<FEFF...>) ora mantengono la loro forma esadecimale durante l'importazione:HPDFSetDictFormValuerileva il prefisso BOMFEFFe impostaIsHexadecimalin modo che il writer riemetta<FEFF...>invece di una stringa letterale corrotta(FEFF...); i valori dei nomi di caselle di controllo / pulsanti radio (/Yes,/Off) vengono conservati come nomi perché il percorso di correzione dei tipi esistente mantiene già lo slot diTHPDFNameObject
Added
- Aggiunto
HotPDF.FDFTests(5 casi DUnitX) che coprono il ciclo completo di esportazione→importazione per i campi di testo, la conservazione del tipo nome-valore delle caselle di controllo, il salto silenzioso dei nomi di campo sconosciuti, il ciclo completo del valore esadecimale UTF-16BE e la regressione del rumore della parola chiave/Type— tutti i test passano su Win32 e Win64
Version 2.249.0
Added
- Aggiunto il supporto ai metadati ZUGFeRD 2.5 / Factur-X 1.09:
HPDFIsFacturXVersionaccetta l'alias di versione2p5, il nuovo helperHPDFFacturXNormalizeVersionlo rimappa su2p0nell'XMP emesso come da specifica Factur-X 1.09 6.3.2 (la versione dello schema di estensione XMP è disaccoppiata dalla versione della specifica dei dati XML), eHPDFFacturXFileNameOK,HPDFFacturXXMLGuidelineOKe la tripla nome schema/URI namespace/prefisso dell'XMP trattano2p5in modo identico a2p0; l'esempio di fatturazione elettronica ottiene una settima voce di profilo (ZUGFeRD 2.5 / Factur-X 1.09, EN 16931) convalida rispetto al corpus ufficiale di campioni 2.5 - Aggiunto il supporto per l'allegato supplementare UBL secondo la specifica Factur-X 1.09 6.4:
THotPDF.AddUBLSupplementaryFileincorpora una rappresentazione UBL come file associato secondariofactur-xubl.xmlcon relazioneAlternativee MIMEapplication/xmlaccanto alla fattura CII primaria (delegando alla pipeline esistenteAddPDFA3AssociatedFile),HPDFIsFacturXUBLFileNamene riconosce il nome file,DetectFacturXInvoicelo registra in un nuovo campoTHPDFFacturXInvoiceInfo.UBLFileNamee l'esempio di fatturazione elettronica attiva la doppia incorporazione tramite una casella di controllo conBuildUBLSupplementaryXMLche emette uno scheletro compatto UBL 2.1 EN 16931 - Aggiunta la convalida opzionale delle regole aziendali Schematron EN 16931 sotto forma di nuova unità
HPDFEInvoiceValidator: fornisce i cinque file di regole ufficiali Factur-X 1.09 (MINIMUM/BASIC WL/BASIC/EN16931/EXTENDED) inLib/resources/Schematron/ed esponeHPDFValidateEInvoiceche esegue il controllo del contenitore tramiteValidateFacturXInvoice, quindi valuta ogni regola rispetto all'XML incorporato; il motore basato su MSXML (solo XE2+, subset XPath 1.0) contrassegna le asserzioni XPath 2.0 comeskipped, mentre Delphi 7 compila uno stub che segnala il motore come non disponibile senza influire sul verdetto del contenitore; l'esempio di fatturazione elettronica e l'harness headlessEInvoiceValidationora renderizzano i risultati delle regole interne insieme ai report del validatore esterno
Changed
AddFacturXAssociatedFileora normalizza l'argomentoVersiontramiteHPDFFacturXNormalizeVersionprima di scrivere l'XMP, in modo che i chiamanti di2p5emettano il token XMP2p0conforme alle specifiche senza modificare il comportamento esistente di1.0/2p0- L'esempio di fatturazione elettronica
GenerateInvoicePDFottiene un parametro opzionaleAttachUBL(predefinito suFalse, preservando i siti di chiamata esistenti) e contrassegna il nome dell'output predefinito con-withUBLquando viene richiesto l'allegato UBL
Version 2.248.0
新增
- 加固 E-Invoice 例程的 profile 索引模型:把
GetProfile从 1 基 case 加else兜底改为显式 0 基双射(0 BASIC..5 EN 16931),下拉框顺序同步重排,默认仍为 EN 16931;补全 E-Invoice 例程 README 对 ZUGFeRD 1.0 COMFORT 和 ZUGFeRD 2.0 BASIC 两个 profile 的输出文件、校验状态和运行输出描述
Version 2.247.0
新增
- 新增已加载文档的 22 项创建/写入 API(第九轮,实现 PDFtoolkit 的中等工程量特性,全部在已加载对象图上构造字典并注册到 AcroForm/Page):表单字段创建——文本字段(
AddLoadedTextField)、复选框(AddLoadedCheckBox)、组合框(AddLoadedComboBox)、列表框(AddLoadedListBox)、按钮(AddLoadedPushButton)、签名字段(AddLoadedSignatureField),自动建立/补全 AcroForm 与/NeedAppearances;注释子类型——橡皮图章(AddLoadedStampAnnotation)、高亮/下划线/波浪线/删除线(AddLoadedHighlightAnnotation)、矩形/圆形(AddLoadedSquareAnnotation)、直线(AddLoadedLineAnnotation)、墨迹(AddLoadedInkAnnotation)、多边形/折线(AddLoadedPolygonAnnotation)、插入符(AddLoadedCaretAnnotation);FDF 表单数据互换(ExportLoadedFormToFDF/ImportLoadedFormFromFDF);N-up 拼版(StitchLoadedPage/StitchLoadedPageSideBySide);脱敏遮罩(RedactLoadedRect)
Version 2.246.0
Aggiunto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
GetLoadedFormFieldOption/GetLoadedFormFieldOptions)/write (SetLoadedFormFieldOptions), field default-value read/write (GetLoadedFormFieldDefaultValue/SetLoadedFormFieldDefaultValue), field reset (ResetLoadedFormField), text-note annotation (AddLoadedTextAnnotation), free-text annotation (AddLoadedFreeTextAnnotation), annotation color (SetLoadedAnnotationColor), cross-page annotation move (MoveLoadedAnnotation), bookmark color (SetLoadedOutlineColor)/style (SetLoadedOutlineStyle)/delete (RemoveLoadedOutline), document Trapped flag (SetLoadedTrapped), optional-content group visibility (SetLoadedOCGVisibility), page-label write (SetLoadedPageLabel)
Version 2.245.0
Aggiunto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
SetLoadedAnnotationFlagsDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiAddLoadedLinkAnnotation), bookmark expand/collapse state (SetLoadedOutlineOpen), document open-action (SetLoadedOpenActionPage), form-field export-value read/write (SetLoadedFormFieldExportValue/GetLoadedFormFieldExportValue), form-field tooltip (SetLoadedFormFieldTooltip/GetLoadedFormFieldTooltip), form-field border width/background color (SetLoadedFormFieldBorderWidth/BackgroundColor), clear all JavaScript (RemoveLoadedJavaScriptAll), page content copy (CopyLoadedPage)
Version 2.244.0
新增
- 新增已加载文档的 15 项写入/编辑 API(第二轮写入,借鉴 PDFtoolkit 的
RemoveAnnotation/SetRotationAngle等模式):页面旋转写入(SetLoadedPageRotation)、注释删除/内容修改/清空(RemoveLoadedAnnotation/SetLoadedAnnotationContents/ClearLoadedAnnotations)、查看器偏好写入(SetLoadedViewerPreferences)、日期写入(SetLoadedCreationDate/ModDate)、Catalog 版本写入(SetLoadedCatalogVersion)、页面持续时间/过渡效果写入(SetLoadedPageDuration/Transition)、书签标题修改(SetLoadedOutlineTitle)、嵌入文件删除(RemoveLoadedEmbeddedFile)、表单字段值写入(SetLoadedFormFieldValueByIndex/ByName)
Version 2.243.0
新增
- 新增已加载文档的 14 项写入/编辑 API(首次突破只读检视,借鉴 PDFtoolkit 的
SetXMLMetadata/InsertAnnotation/Stitch等模式):页面模式/布局写入(SetLoadedPageMode/PageLayout)、文档语言写入(SetLoadedLanguage)、文档信息写入(SetLoadedCreator/Producer/Title/Author/Subject/Keywords)、Info 键删除(RemoveLoadedInfoKey)、XMP 元数据写入(SetLoadedXMPMetadata)、文档级 JavaScript 增删(AddLoadedDocumentJavaScript/RemoveLoadedJavaScript)、页面框写入(SetLoadedPageBox)。这些方法修改已加载的对象图,调用SaveLoadedDocument持久化
Version 2.242.0
新增
- 新增已加载文档的 15 项检视 API(第四轮 PDFtoolkit 功能差距扫除):页面模式/布局读取(
GetLoadedPageMode/PageLayout)、Catalog 版本(GetLoadedCatalogVersion)、页面对象号(GetLoadedPageObjectNumber)、表单字段标志位组合(GetLoadedFormFieldFlags)/NoExport 检测(IsFormFieldNoExport)、注释标志解码(IsLoadedAnnotationHidden/Printable/Locked)、度量单位转换(PointsToMM/MMToPoints/PointsToInches/InchesToPoints/PointsToCm/CmToPoints)
Version 2.241.0
新增
- 新增已加载文档的 20 项深度检视 API(第三轮 PDFtoolkit 功能差距扫除):Info 字典键枚举(
GetLoadedInfoKeyCount/KeyName/KeyValue)、表单字段矩形/页索引(GetLoadedFormFieldRect/PageIndex)、注释 URI/弹出框/名称/修改日期(GetLoadedAnnotationURI/PopupRect/Name/ModDate)、书签颜色/样式(GetLoadedOutlineColor/Style)、元数据流检测(HasLoadedMetadata)、Trailer ID(GetLoadedTrailerID)、XRef 类型(GetLoadedXRefType)、最大对象号(GetLoadedMaxObjectNumber)、源文件大小(GetLoadedSourceFileSize)、嵌入字体计数(GetLoadedEmbeddedFontCount)、文档语言(GetLoadedLanguage)、页面持续时间/过渡效果(GetLoadedPageDuration/Transition)、表单字段必填标志(IsFormFieldRequired)
Version 2.240.0
新增
- 新增已加载文档的 20 项深度检视 API(第二轮 PDFtoolkit 功能差距扫除):嵌入文件保存到磁盘(
SaveLoadedEmbeddedFileToDisk)、设置文档信息字段(SetLoadedDocumentInfo)、读取 JavaScript 源码(GetLoadedJavaScriptSource)、命名目标枚举(GetLoadedNamedDestinationCount/Name)、OCG 可见性(GetLoadedOCGVisibility)、页面标签详情(GetLoadedPageLabelInfo)、全文档注释/字体计数(GetLoadedTotalAnnotationCount/TotalFontCount)、PDF/A 与 PDF/X 合规检测(IsLoadedPDFA/IsLoadedPDFX/GetLoadedPDFAVersion/GetLoadedPDFXVersion)、批量便捷方法(GetLoadedOutlineTitles/AllLinkURIs/ImageCountPerPage/AllPageBoxes/FormFieldNames/FormFieldValues)、一键文档摘要(GetLoadedSummary返回页数/注释/字体/图像/表单/签名计数 + 加密/AcroForm/结构树标志)
Version 2.239.0
新增
- 新增已加载文档的 20 项检视 API(PDFtoolkit 功能差距批量扫除):PDF 版本字符串(
GetLoadedPDFVersionString)、线性化检测(IsLoadedLinearized)、XMP 元数据读取(GetLoadedXMPMetadata)、文档级 JavaScript 枚举(GetLoadedJavaScriptCount/Name)、页面标签计数(GetLoadedPageLabelCount)、查看器偏好(GetLoadedViewerPreferences)、结构树检测(HasLoadedStructureTree)、签名字段计数(GetLoadedSignatureFieldCount)、可选内容组(OCG)枚举(GetLoadedOCGCount/Name)、OutputIntent 检测(HasLoadedOutputIntent/GetLoadedOutputIntentInfo)、AcroForm 检测(HasLoadedAcroForm)、创建/修改日期(GetLoadedCreationDate/ModDate)、批量数组便捷方法(GetLoadedEmbeddedFileNames/LinkURIs/AnnotationSubtypes/FontNames返回THPDFAnsiStringArray)
Version 2.238.0
新增
- 新增已加载文档的深度检视 API(8 个只读方法):
GetLoadedPageWidth/GetLoadedPageHeight读取页面尺寸(pt);GetLoadedLinkCount/GetLoadedLinkInfo枚举超链接注释(URI + 矩形);GetLoadedEncryptionInfo查询加密版本、密钥长度、权限标志;GetLoadedEmbeddedFileCount/GetLoadedEmbeddedFileName枚举文档嵌入文件(附件)。这些 API 遍历已加载的对象图但不修改它,仿现有GetLoadedImageInfo/GetLoadedAnnotationInfo模式。LoadedDocInspector例程同步更新,演示页面尺寸/旋转/链接计数、加密状态、嵌入文件清单
Version 2.237.0
新增
- 新增已加载文档的元数据查询 API:
GetLoadedDocumentInfo从 Info 字典读取标题、作者、主题、关键词、创建者、生成器;GetLoadedPageRotation读取页面旋转角度;GetLoadedOutlineCount/GetLoadedOutlineItem枚举书签树的顶层条目(标题 + 目标页索引)。这些都是只读查询,仿现有GetLoadedImageInfo模式,不修改文档对象图
Version 2.236.0
Aggiunto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
THotPDFmethods:HPDFCMapReaderparses both ToUnicodebeginbfchar/beginbfrangeDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatibegincidchar/begincidrangeDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiHPDFContentStreamDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiBT/ET,Tf,Tj/TJ/'/",Td/TD/Tm/T*,q/Q, inline-imageBI/ID/EIDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiHPDFTextExtractionDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati/ToUnicode→/EncodingDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati/DescendantFonts/CIDToGIDMap→cid2code.txtDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati - Added
THotPDF.GetLoadedFontDecoder,THotPDF.ExtractLoadedPageGlyphsandTHotPDF.ExtractLoadedPageTextDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiExtractLoadedPageTextDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati - Added
ExtractTextDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiLoadedDocInspectorread-only console layout
Modificato
HPDFDocnowusesHPDFCMapReader,HPDFContentStreamandHPDFTextExtractionDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiTHotPDFDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiHPDFParserstandalone-unit pattern (no dpkcontainsDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiHPDFDocDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiTHPDFFontDocAccessDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiResolveLoadedDictionary/ResolveLoadedStream/HPDFReadStreamByteshelpers
Version 2.235.1
新增
- 新增
PDFOptimize控制台例程(Delphi):演示生成端 PDF 体积优化,通过同内容、不同压缩设置的多份 PDF 横向对比量化每种策略的收益 —— 文本/矢量文档的cmNonevscmFlateDecode加UseObjectStreams对象流打包、彩色照片的icJpegJpegQuality扫描对比icFlate、双层扫描图的icCCITT42(G4)对比icJBIG2lossless/lossy,控制台打印体积对比表,所有测试图像均在内存合成生成不依赖外部文件,并明确标注 HotPDF 压缩为生成端能力(无法对已加载 PDF 重新压缩)
Version 2.235.0
Added
- Aggiunta la demo consolidata
Stamp(Delphi e C++Builder): unisce le precedenti demoModify,MultiPageStampeWatermarkin un singolo programma VCL che sovrappone tre livelli di timbro attivabili indipendentemente su un intervallo di pagine analizzato —— filigrana di testo nel flusso di contenuto (AddTextWatermark), annotazione di timbro interattiva (AddStampAnnotation) e bitmap d'angolo (AddImage+ShowImage), mantenendo l'analisi dell'intervallo di pagine (HPDFParsePageRange) e il posizionamento ai quattro angoli - Aggiunta la demo console consolidata
PageSizes: unisce le precedenti demoSmallSize,NormalSizeeLargeSizein un singolo programma che enumera tutti i valori dell'enumerazioneTHPDFPageSizedelle categorie piccolo/normale/grande più le dimensioni personalizzateWidth/Heightin un'unica passata
Changed
- Fusi i 5 programmi indipendenti del gruppo di demo
Security(Encryption,SecurityAES256,DecryptPDF,PFXSignature,SignatureField) in un unico programma console che copre cifratura RC4-128, cifratura AES-256 R5/R6, decifratura tramite password, segnaposto di campo firma e firma PFX (saltata automaticamente quando manca il fixture PFX) - Fuse le GUI
AddPageseDelPagesin un'unica GUIAddDelPages, aggiornando contemporaneamentePageMultiSizeeAddDelPagesdi C++Builder per eguagliare la ricchezza di Delphi (Size/Orientation/larghezza-altezza personalizzate/contatore/etichetta/progresso) - Spostato lo strumento di regressione dei glifi
FontTestdaDemoaTests\Delphi\FontTesteTests\C++Builder\FontTest, chiarindo il suo ruolo come strumento di test piuttosto che demo funzionale
Removed
- Rimossa la demo puramente ridondante
TiffToPDF(Delphi e C++Builder); la sua capacità è pienamente coperta dal percorso di conversione TIFF inConvertTo - Rimossa la demo
CopyPagesdi C++Builder; la sua capacità è pienamente coperta dal più completoPDFmerge - Rimossa la demo
Logger; l'utilizzo della facciata di logging runtimeHPDFLogger/HPDFLogche dimostrava è stato migrato alla pagina di argomento della documentazione APIDocs/zh-cn/topics/HPDFLoggerFacade.html(la libreria conserva l'unitàHPDFLogger; è stato eliminato solo il progetto demo)
Fixed
- Corretto l'algoritmo di eliminazione delle pagine pari nel precedente
DelPages(ora fuso inAddDelPages): il ciclo originale contava un numero di pagine statico rispetto al documento in riduzione, eliminando in realtà gli indici 1..punto medio invece delle vere pagine pari; ora scorre verso il basso dalla pagina pari più alta eliminando indici base 0, e corregge la perdita della variabile globaleTHotPDFad ogni clic
Version 2.234.1
Risolto
- Risolto l'errore di compilazione dell'unità
HPDFJBIG2Enc(E2003 Undeclared identifier: 'Invariant'): l'RTL delle versioni precedenti di Delphi non haTFormatSettings.Invariant,atofora utilizzaTFormatSettingscostruito manualmente coerente conHPDFXFA.XFAInvariantFormatSettings, ripristinando la compilazione per RAD Studio 12.0 Win64
Version 2.234.0
Aggiunto
- Aggiunto backend di decodifica ad alte prestazioni per le immagini JBIG2: l'estrazione delle immagini in fase di caricamento (
ExtractLoadedImageecc.) abilita per impostazione predefinita questo backend per decodificare le immagini JBIG2 incorporate nei PDF - Aggiunta proprietà
THotPDF.UseExternalJBIG2Decoder(predefinitaTrue): impostarla suFalseper tornare al decodificatore Pascal nativo come ripiego
Version 2.233.0
Aggiunto
- Aggiunto backend di codifica ad alte prestazioni per le immagini JBIG2:
AddImageabilita per impostazione predefinita questo backend quando si comprimono le bitmap in bianco e nero comeicJBIG2, producendo un flusso JBIG2 codificato aritmeticamente più veloce e conforme agli standard - Aggiunta l'opzione
THPDFJBIG2Options.UseExternalEncoder(predefinitaTrue): impostarla suFalseper tornare al codificatore MMR Pascal nativo come ripiego
Version 2.232.1
Risolto
- Risolto il difetto di propagazione del riporto del codificatore aritmetico generic-region JBIG2 (
HPDFJBIG2Codec) su immagini ad alta entropia: l'output dei byte del codificatore aritmetico MQ (byte-out e riempimento 0xFF) ometteva la cancellazione dei bit di spillover del riporto, causando un'errata codifica di bitmap in bianco e nero ad alta entropia, come documenti rumorosi o sparsi (i modelli regolari a bassa entropia non lo attivano, quindi non ne sono interessati); contemporaneamente, il terminatore del flusso di codifica è stato normalizzato nel formato standard, per garantire la completa analisi da parte di decodificatori di terze parti
Version 2.232.0
Aggiunto
- Il backend di decodifica JBIG2 (
HPDFJBIG2Codec) espande il supporto per includere la codifica aritmetica (MQ): l'estrazione delle immagini in fase di caricamento (ExtractLoadedImage) ora può decodificare le immagini JBIG2 codificate aritmeticamente — generic region aritmetico (GBTEMPLATE 0-3 + TPGDON), dizionario dei simboli e regioni di testo; in precedenza era supportato solo MMR generic region
Version 2.231.3
Aggiunto
- Attivato il supporto output PNG per il decodificatore di riferimento jbig2dec: aggiunto
build-libpng-vc64.bat(compila 16 oggetti principali di libpng 1.8 inWin64\libpng-*.objcon MSVC, genera automaticamente le intestazioni zlib-ng e riutilizzapnglibconf.h.prebuilt), modificatobuild-jbig2dec-vc64.batper abilitare automaticamentejbig2_image_png.ceHAVE_LIBPNGal rilevamento degli oggetti libpng e collegare gli oggetti libpng + zlib-ng,jbig2dec.exeora supporta l'output-t png, generando un PNG scala di grigi 1-bit 64x56 perannex-h.jbig2, con output SHA-1 e PBM coerenti
Version 2.231.2
Aggiunto
- Completata l'infrastruttura di compilazione Windows per il decodificatore di riferimento vendored jbig2dec (
Lib/thirdparty/jbig2dec): aggiuntobuild-jbig2dec-bcc64x.bat(genera 15 oggetti COFF64 collegabili con Delphi usando Embarcadero bcc64x, per consumo futuro tramite{$L}daHPDFJBIG2.pas) ebuild-jbig2dec-vc64.bat(genera decodificatore a riga di comando autonomojbig2dec.execon MSVC), aggiunti modelloconfig_types.h.ine.gitignore, risolte regole oggetti mancanti inmsvc.mak
Risolto
- Risolti problemi di compilazione e portabilità nel codice a monte di jbig2dec con toolchain moderne per Windows: sostituita l'implementazione GNU getopt anni '90 (
getopt.c/getopt.h, MSVC si interrompeva per l'assenza distrings.h, bcc64x/C23 rifiutava l'assenza di dichiarazioni dei prototipi) con un'implementazione pulita e moderna; risolti i troncamentisize_ta 64 bit dijbig2dec.c::hash_image, underflowuint32→intdijbig2_segment.c::jbig2_find_segment, conteggio bit a 64 bit disha1.c::SHA1_Update, nonché uso errato del valore di ritorno difreadinjbig2dec.c, avvisi di deprezzamento POSIX e identificatore formato%lu. Algoritmo base JBIG2 rimane invariato
Version 2.231.1
Aggiunto
- L'estrazione delle immagini in fase di caricamento (
ExtractLoadedImage) ora supporta catene di filtri multipli: i filtri dati preposti all'immagine, quali ASCIIHexDecode / ASCII85Decode / FlateDecode / LZWDecode / RunLengthDecode vengono decodificati in sequenza, per poi essere decodificati dal filtro immagine finale (DCTDecode / JPXDecode o raster), ad esempio[/ASCII85Decode /FlateDecode]
Version 2.231.0
Aggiunto
- Aggiunto backend di decodifica fax CCITT (unità
HPDFCCITTDecode): implementata decodifica fax 1D/2D ITU-T T.4 (G3) e T.6 (G4), consentendo all'estrazione lato caricamento (ExtractLoadedImage) di decodificare immagini bicolore CCITTFaxDecode, rispettando i parametri K / Columns / Rows / BlackIs1 / EncodedByteAlign di/DecodeParms
Version 2.230.2
Aggiunto
- L'estrazione immagini al caricamento (
ExtractLoadedImage) ora supporta raster DeviceGray e Indexed a 1 / 2 / 4 bit per componente: spacchetta a livello di bit e riproporziona i valori in scala di grigi a 8 bit
Version 2.230.1
Aggiunto
- L'estrazione immagini al caricamento (
ExtractLoadedImage) ora supporta le immagini DeviceCMYK: i raster CMYK a 4 canali vengono convertiti in bitmap RGB in base alle formule standard
Version 2.230.0
Aggiunto
- Aggiunto backend di decodifica JBIG2 (unità
HPDFJBIG2Codec): implementa la decodifica 2D ITU-T T.6 (G4 / MMR), riattivando ilTHPDFJBIG2Decoderoriginariamente dormiente, rendendo ora possibile la decodifica delle immagini bicolore JBIG2Decode tramite l'estrazione lato caricamento (ExtractLoadedImage). Supporta generic region codificati MMR (inclusa la regione globale condivisa/JBIG2Globals); codifica aritmetica, dizionari di simboli, testo / regioni a mezzitoni attualmente non supportati
Version 2.229.3
Aggiunto
- L'estrazione immagini al caricamento (
ExtractLoadedImage) ora supporta le immagini a colori indicizzati (Indexed): i raster FlateDecode / LZWDecode salvati come Indexed verranno decodificati tramite tabella (palette) nei bitmap RGB in base al lookup della tabella dei colori, supportando colori base DeviceRGB / DeviceGray / DeviceCMYK e lookup di valori esadecimali o letterali
Version 2.229.2
Aggiunto
- L'estrazione immagini al caricamento (
ExtractLoadedImage) ora supporta immagini JPXDecode (JPEG 2000): le immagini XObject codificate in JPXDecode verranno decodificate come bitmap dal backend OpenJPEG, per cuiGetLoadedImageInfosegnala tali immagini conDecodable=True. A questo punto, le immagini JPEG 2000 incorporate nel PDF possono essere estratte direttamente come VCL Bitmap e supportano in modo trasparente l'esattezza del pixel (pixel-perfect) JPEG 2000
Version 2.229.1
Aggiunto
- L'estrazione immagini al caricamento (
ExtractLoadedImage) ora supporta immagini DCTDecode (JPEG): le immagini XObject codificate in DCTDecode verranno decodificate come bitmap tramiteTJPEGImage; per queste immaginiGetLoadedImageInfosegnalaDecodable=True
Version 2.229.0
新增
- 新增加载侧图像提取 API:
GetLoadedImageCount/GetLoadedImageInfo/ExtractLoadedImage,可枚举已加载 PDF 中的图像 XObject 并将其解码回 VCL 位图(TBitmap)。GetLoadedImageInfo通过THPDFLoadedImageInfo返回每张图像的尺寸、位深、颜色空间、过滤器与可解码标志,便于在提取前预检。本版可解码以 FlateDecode / LZWDecode / ASCIIHex / ASCII85 / RunLength 编码的 DeviceRGB 与 DeviceGray 8 位栅格;索引色、CMYK、DCTDecode(JPEG)与 JPXDecode(JPEG 2000)图像将在后续版本接入
Version 2.228.0
新增
- 新增
TJpeg2000Bitmap(TBitmap派生类):可直接读写 JPEG 2000 图像,LoadFromStream将 JP2 / J2K 解码为位图、SaveToStream将位图编码为 JPEG 2000 码流;支持无损(LosslessCompression)与有损质量(CompressionQuality)两种模式、灰度 / RGB / CMYK 通道,并附带低层解码器THPDFJpeg2000Decoder供自定义图像管线直接取用解码后的像素数据
修复
- 恢复 JPEG 2000(JPXDecode,PDF 1.7 ISO 32000-1 7.4.9)图像支持:此前解码后端因库源损坏退化为占位桩,无法解码任何 JP2 / J2K 码流;现重新接入 OpenJPEG 2.5.4 引擎,可将灰度、RGB 与 YCbCr 图像解码为 8 位样本(高位深分量重采样为 8 位、YCbCr 自动转 RGB、子采样分量按最近邻上采样),兼容带 JP2 box 头的文件与裸 J2K 码流
AddImage现可直接传入.jp2/.j2k/.jpt/.jpc文件并按所选压缩方式嵌入 PDF(自动识别格式),无需先行手工转码
Version 2.227.0
变更
- 将 GSUB/GPOS 上下文应用与 Mark 定位函数(37 个纯函数)从
HPDFDoc.pas追加提取到HPDFShaping.pas。这批函数覆盖 GSUB 上下文/链式上下文/反向链式替换、GPOS 上下文/链式上下文/嵌套定位、Mark-to-Base/Mark-to-Mark/Cursive/Mark-to-Ligature 定位、GDEF 类查找、Collect-GID 子集闭包等,全部接收TBytes表切片 + glyph ID 值参数,不触碰实例状态。HPDFDoc.pas本轮减约 11000 行(含被提取函数之间的 forward 声明和注释块),累计六轮拆分减约 21700 行(原文件的 26%)
Version 2.226.0
变更
- 将简单对象解析器(
ParseSimpleDictionary、ParseSimpleArray)从HPDFDoc.pas提取到新单元HPDFParser.pas。这两个 byte 级递归下降解析器从AnsiString内容构建THPDFDictionaryObject/THPDFArrayObject树,不触碰THotPDF实例状态;原方法保留为转发 stub,公开 API 不变。这是巨石拆分第五轮,本轮减约 2060 行,五轮累计减约 10700 行(原文件的 13%)
Version 2.225.0
变更
- 将 OpenType 整形原语(71 个纯函数)从
HPDFDoc.pas提取到新单元HPDFShaping.pas。这批函数覆盖 GSUB 覆盖表/查找/替换、GDEF 类查找、TTF 表读取器、脚本重排与整形(Arabic、Syriac、Indic 语系、Thai/Lao、Hebrew、Javanese 等),全部接收值参数(TBytes表切片、UnicodeStringrun、glyph ID)从不触碰THotPDF或THPDFPage实例。HPDFDoc.pas通过 implementation 段uses HPDFShaping访问,TGPOSValue/TGPOSValueArray类型一并迁移。这是巨石拆分第四轮,本轮减约 3000 行
Version 2.224.0
变更
- 将 Factur-X / ZUGFeRD / XMP 电子发票辅助函数(22 个 standalone 函数)从
HPDFDoc.pas提取到新单元HPDFFacturX.pas。这批函数覆盖 FX/Basic/Minimum/EN16931 合规验证、XMP 元数据生成、嵌入式 XML 解析,全部自包含(仅操作值参数与TBytes,不触碰THotPDF实例状态)。HPDFDoc.pas通过 implementation 段uses HPDFFacturX访问,公开 API 不变。这是HPDFDoc.pas巨石拆分的第三轮,累计三轮减约 5600 行
Version 2.223.0
变更
- 将 Direct File API 的底层 I/O helper(44 个共享函数)从
HPDFDoc.pas提取到新单元HPDFDirectFileIO.pas。这些 byte / xref / object-body / AES-crypt 读取函数被加载器和 Direct File 子系统共用,提取后两个子系统都通过uses HPDFDirectFileIO访问。HPDFDoc.pas因此再减少约 1640 行(累计两轮拆分减约 5200 行)。DA 专用类型(THPDFDirectReadBuffer、THPDFDirectWriteBuffer、THPDFDirectIntArray)和全局缓冲(GHPDFCopyBuffer)一并迁移到新单元
Version 2.222.0
变更
- 将预检(preflight)、合规检查、PDF/VT 验证相关代码从
HPDFDoc.pas提取到新单元HPDFPreflight.pas。原有 25 个公开方法(CreatePreflightReport、ValidatePDFVT、EmbedPreflightReportAsXMP等)签名完全不变,实现改为转发到新单元的自包含 standalone 函数;HPDFDoc.pas因此减少约 3500 行。新增 3 个只读访问器(LoadedObjectCount、GetLoadedObjectByIndex、LoadedRootObjectIndex)让独立单元可枚举已加载文档的对象图
Version 2.221.0
新增
- 全面支持多语言化:将
Readme.html提取至Docs/en-us目录,并新增其他 37 种语言的翻译版本;更新了安装程序脚本(HotPDF-FULL.iss、HotPDF-TRIAL.iss),现在会根据安装时所选的语言,自动提取并放置对应语言版本的Readme.html至安装根目录
Version 2.220.0
新增
- 新增统一运行期日志门面
THPDFLogger与全局实例HPDFLog:把原本散落的编译期调试开关统一为运行期可控的日志门面。提供 Error / Warning / Info / Debug 四级严重度过滤,可同时输出到文件、OutputDebugString(IDE Event Log 可见)和控制台;文件目标带 10 MB 单备份滚动;线程安全(TCriticalSection保护);关闭态热路径仅一次布尔判断即返回,发布版零开销。LoadFromFile、CreatePreflightReport和 xref-stream 解析 fallback 三处诊断点已接入,加载成功 / 失败、preflight 摘要、对象流回退等事件会在启用日志时写入结构化记录。取代改HotPDF.inc重编包的传统做法,用户可在运行期随时开关诊断输出
Version 2.219.0
新增
- 新增
THotPDF.GetGPOSSingleAdjustment(GID, FeatureTag, out XPlacement, YPlacement, XAdvance, YAdvance): Boolean:OpenType GPOS LookupType 1 Single Adjustment 的独立公开查询。按任意 4 字节 feature tag(典型'size'光学尺寸 /'vhal'半高度)收集 GPOS lookup,解包 Extension(Type 9)后对 LookupType 1 子表应用已有的_GPOSApplySingle,返回单字形的 XPlacement / YPlacement / XAdvance / YAdvance 调整(1000-em,含正负号)。至此 GPOS 9 个 LookupType 全部 spec-complete——binary applier 早被 contextual kern 嵌套消费,本版补齐 standalone 查询入口填掉 spec matrix 里最后一条 GPOS gap
Version 2.218.1
新增
- 新增
THPDFPage.GetWideCharAdvances(Text, out TotalWidth, out Advances):一次性返回 Unicode 文本的总宽和每字形自然 advance(含 kerning)。底层用 GDIGetTextExtentExPointW一次调用同时拿总宽 + 累积宽度数组,差分后得到每字形 advance。调用方需预先SetLength(Advances, Length(Text))。可用于自定义排版、表格列宽计算、签名块布局等需要全部字形宽度的一次性场景
变更
- 优化
jtJustify两端对齐性能:v2.218.0 的_HPDFEmitJustifiedWideLine对每行做 N+1 次GetWideTextWidth(总宽 1 次 + 前缀差值 N 次,每次都是完整 GDI 往返)。改为一次GetWideCharAdvances调用,每行 GDI 往返从 N+1 次降到 1 次。典型 A4 整页 justify(45 行 × 80 字符)从约 3645 次 GDI 往返降到 45 次,约 80 倍提升。justify 视觉输出不变(同一度量引擎,含相同 kerning)
Version 2.218.0
新增
- 新增
jtJustify两端对齐模式(THPDFJustificationType枚举第四值):传入WideTextOutBox后,每行(除末行)的自然宽度与框宽之间的差额会分摊到行内的可拉伸间隙,使文本左右两边都对齐到框边。Latin 文本在词间空格分摊;CJK 文本(Han / 假名 / 韩文等无词间空格的脚本)在任意相邻字形间均等分摊(日式排版均等割付)。末行及已达到 / 超过框宽的行保持自然左对齐宽度。底层用 v2.215.0 的ExtTextOutTJ 数组 emit,测量用 v2.216.0 的GetWideTextWidth
Version 2.217.0
新增
- 新增
THPDFPage.WideTextOutBox:Unicode 多行自动换行。镜像TextOutBox的契约(返回放入框内的 WideChar 数),但用GetWideTextWidth测量、按 WideChar 索引切分。换行规则支持两种脚本:CJK(Han / 假名 / 韩文 / CJK 标点 / 全角)在任意两个字形间断行(CJK 无词间空格的标准行为);Latin 及其他脚本在最后一个空格 / Tab 处断词,无空格时硬断。硬换行(CR / LF / CRLF)照原样执行。修复TextOutBox(AnsiString)对中文 / 日文 / 韩文 / 代理对文本逐字节切分导致乱码换行的问题
Version 2.216.0
新增
- 新增
THPDFPage.GetWideTextWidth(Text: WideString): Single:Unicode 文本宽度测量。现有TextWidth(AnsiString)先把 WideString 收窄成 AnsiString 再查 0–255 ABC 宽度表,对 CJK / 代理对 / 多字节文本测出无意义的值;新方法用 GDIGetTextExtentPoint32W(lfHeight = -1000)按当前字体整串测量,返回用户空间点宽(与TextWidth同坐标系,可直接做布局预算)。同_XFAMeasureTextImpl的测量策略 - 新增
THPDFPage.GetWideTextRowCount(BoxWidth: Integer; Text: WideString): Integer:Unicode 行数预测,镜像GetTextRowCount的 AnsiString 契约,基于GetWideTextWidth让 CJK / 代理对文本正确换行计数
Version 2.215.0
新增
- 新增
THPDFPage.ExtTextOut(三个重载:PWORD/WideString/AnsiString):GDIExtTextOut风格的扩展文本输出,接受每字形水平位移数组Dx,emit 单个[<hex> <num> ...] TJ数组,让调用方精确控制每个字形原点——用于表格数字对齐、手动字距、两端对齐、表单值填充和签名块排版。复用现有_GPOSEmitPositionedRunTJ emit 器与_GPOSGlyphAdvance1000hmtx 读取,Dx为 PDF 用户空间点(与TextOut的 X/Y 同坐标系);当Dx值等于字形自然 advance 时 TJ 调整数归零,可在一次调用内混排自然与覆盖字形。仅支持简单 LTR 文本,RTL bidi 重排与 producer-side shaping 被旁路
Version 2.214.0
新增
- 新增
THPDFPage.AttachSignatureFieldAppearance:给已通过AddSignatureField/AddSignedSignatureField/AddPAdESSignatureField创建的签名字段挂上可见外观/AP /NForm XObject,并返回 Form 让调用方在 widget 本地坐标系内绘制签名图片、签名者姓名、日期或原因文字;内置薄边框加浅灰底色作为默认的“在此签名”占位外观 - 新增
HPDFNormalizeRect工具函数(三个重载:TRect/THPDFRectangle/ 四个Extended变参):把矩形角点重排为Left<=Right、Top<=Bottom,让鼠标拖框等无序输入可安全传给绘图 API - 把
THPDFPage.RotateCoordinate从 protected 提到 public:外部调用方现在可直接复用与RectangleRotate相同的旋转约定,计算旋转矩形角点、多边形顶点或文字包围盒
Version 2.213.0
新增
- 新增
THPDFPage几何便利方法套件:Arc角度定义弧、Pie角度定义扇形、Chord弓形、ArcTo中心加半径加扫角弧、Polyline折线、Polygon多边形、PolyBezier三次贝塞尔样条。所有方法都复用已有的MoveTo/LineTo/CurveToC/CurveArc底层路径原语,对齐 GDITCanvas角度与点数组语义,让画弧、扇形、折线和样条曲线不必再手写操作符循环
Version 2.212.0
Aggiunto
- Aggiunto
THPDFPage.SetAnnotationJavaScriptAction: le annotazioni ordinarie ora possono impostare JavaScript action per ingresso del mouse, uscita del mouse, pressione, rilascio, ottenimento del focus e perdita del focus tramite/AA, facilitando l'aggiunta di script interattivi nei processi di annotazione, collegamento e assistenza all'aspetto dei moduli
Version 2.211.0
Aggiunto
- Aggiunto
THPDFDocOutlineObject.SetURIAction: il nodo della struttura restituito daOutlineRoot.AddChildpuò ora essere modificato da/Destpredefinito all'interno della pagina in/S /URIaction, facilitando la fornitura diretta di aiuto esterno, portali di supporto o collegamenti a risorse correlate nel pannello dei segnalibri
Version 2.210.0
Aggiunto
- Aggiunto
THotPDF.AutoCreateURL: una volta attivato, l'output a singola riga orizzontaleTHPDFPage.TextOutpuò convertire automaticamente i testi URL comehttp://,https://,mailto:ewww.in annotazioni di collegamento/S /URI, facilitando la generazione diretta di collegamenti cliccabili in report, indici e pagine di informazioni di contatto
Version 2.209.0
Aggiunto
- Aggiunti
THotPDF.SetOpenNamedDestinationActioneTHotPDF.ClearOpenNamedDestinationAction:/OpenActiondel Catalog del documento ora può essere impostato per passare a una destinazione denominata registrata conTHotPDF.RegisterNamedDestination, facilitando il posizionamento in ingressi di capitoli stabili all'apertura per copertine, indici o documenti il cui ordine di generazione cambia
Version 2.208.0
Aggiunto
- Aggiunto
THPDFPage.AddPushButtonWithNextAction: l'azione principale del pulsante ora può concatenare una seconda PDF action tramite/Next, facilitando flussi di moduli interattivi in un singolo clic, come mostrare i campi dopo/ResetFormo nascondere i campi prima di eseguire un'azione denominata in sequenza
Version 2.207.0
Aggiunto
- Migliorato
THotPDF.RegisterOptionalContentGroup: aggiunto il parametroUserToggleAllowed, che consente di scrivere il gruppo di contenuti opzionale specificato in/OCProperties /D /Lockedpur mantenendo lo stato di visibilità predefinito, utile per mappe, disegni ingegneristici e livelli multilingue in cui il contenuto non deve essere attivato o disattivato dall'utente del visualizzatore
Version 2.206.0
Aggiunto
- Aggiunto
THPDFPage.AddNamedDestinationLink: i collegamenti di pagina ora possono fare riferimento diretto a destinazioni denominate registrate conTHotPDF.RegisterNamedDestination, producendo/S /GoToaction locale e il nome di destinazione/Dcome stringa, facilitando il mantenimento di una navigazione stabile in pagine di indice, riferimenti incrociati e documenti in cui i numeri di pagina cambiano
Version 2.205.0
Aggiunto
- Aggiunti
THotPDF.JBIG2OptionseTHPDFJBIG2Options:AddImage(..., icJBIG2)passerà ora gli intenti di codifica a livello di documento comeLossless,LossyLeveleUseSymbolDictionaryal backend dell'encoder JBIG2 registrato; i valori predefiniti mantengono l'attuale percorso di output MMR senza perdita, continuando a rifiutare impostazioni con perdita se non è registrato alcun backend
Version 2.204.0
Aggiunto
- Aggiunti
THotPDF.EmfOptionseTHPDFEmfOptions: l'importazione avanzata di EMF/WMF può ora configurare il rapporto di fit del documento, il moltiplicatore di rendering bitmap EMF, il moltiplicatore di rendering bitmap WMF, il metodo di compressione per le bitmap a colori e il metodo di compressione per le bitmap a 1-bit; i valori predefiniti mantengono il comportamento di output esistente, consentendo al chiamante di passare le bitmap EMF a colori aicFlateo di mantenere il predefinitoicJpeg
Version 2.203.0
Aggiunto
- Aggiunte la proprietà
ExportModee l'enumerazioneTfrxHotPDFExportModeaTfrxHotPDFExport: il valore predefinitohemPageMetafilemantiene il comportamento originale di esportazione dell'anteprima dell'intera pagina,hemObjectCanvasconsente a FastReport di disegnare gli oggettiTfrxViewuno per uno durante l'attraversamento diExportObject, per poi far importare a HotPDF il metafile della pagina corrente, facilitando gli scenari di integrazione di FastReport che richiedono il controllo dell'ordine di esportazione a livello di oggetto
Version 2.202.0
Aggiunto
- Aggiunto l'output nativo di immagini monocromatiche JBIG2:
THPDFImageCompressionTypeinclude oraicJBIG2,AddImageeAddImage(FileName)possono scrivere bitmap a 1-bit come flusso di immagini/JBIG2Decodedi PDF 1.4+; quando nessun backend di encoder esterno è registrato, verrà utilizzato il percorso della regione generica MMR integrato senza perdita, mantenendo il meccanismo di estensione in cui i backend registrati hanno la precedenza
Version 2.201.0
Aggiunto
- Aggiunti il bridging del backend JBIG2 e l'adattatore di esportazione nativo in PDF di
TDBGrid: ora sono espostiRegisterJBIG2DecoderBackend,RegisterJBIG2EncoderBackend, il rilevamento delle capacità e le classi delegate per encoder / decoder, continuando a restituire esplicitamenteFalsequando non è registrato alcun backend di produzione;DBGridHotPDFExportpuò esportare le colonne visibili della VCLTDBGrido i campi visibili del dataset come tabelle impaginate in file o stream, ripristinando il bookmark originale del dataset dopo l'esportazione
Version 2.200.4
Fixed
- La demo E-Invoice ora aggiunge ChargeTotalAmount e AllowanceTotalAmount al riepilogo dell’intestazione per il profilo ZUGFeRD 1.0 COMFORT: lo schema ZUGFeRD 1.0 COMFORT richiede che ciascun elemento di importo compaia esattamente una volta, e la loro assenza faceva fallire i dati della fattura nella validazione delle regole di business ZUGFeRD/Factur-X
Version 2.200.3
Added
- La demo E-Invoice ora include i profili ZUGFeRD 1.0 COMFORT e ZUGFeRD 2.0 BASIC: il primo genera XML fattura per lo schema legacy CrossIndustryDocument 1p0, mentre il secondo usa lo schema CrossIndustryInvoice 100 e zugferd-invoice.xml; entrambi superano la validazione integrata Factur-X/ZUGFeRD
- La demo E-Invoice ora include un selettore del livello di conformità PDF/A, così la generazione può sostituire il livello predefinito del profilo con PDF/A-3b o PDF/A-3u
Version 2.200.2
Fixed
- I rapporti di preflight ora contrassegnano come non riusciti gli input non PDF privi di intestazione PDF per le pagine caricabili, invece di accettare un numero di pagine di fallback dal caricatore
Version 2.200.1
Fixed
- La validazione ZUGFeRD e Factur-X ora decodifica i metadati XMP e l'XML della fattura incorporata compressi con Flate dai PDF caricati, riconosce gli identificatori PDF/A in stile attributo e accetta i file XML della fattura XRECHNUNG che utilizzano
/AFRelationship /Source
Version 2.200.0
Added
- Le fatture ibride Factur-X e ZUGFeRD caricate ora possono essere verificate con un rapporto di validazione strutturato che identifica i metadati PDF/A-3, la registrazione
/AFdel catalogo, la registrazione dell'albero dei nomi di EmbeddedFiles, la coerenza del nome del file XMP, le regole del nome del file del profilo, le regole/AFRelationshipe l'allineamento delle linee guida XML
Version 2.199.0
Added
- I file di fattura ibrida PDF/A-3 caricati ora possono essere ispezionati con le API del lettore Factur-X e ZUGFeRD che espongono il catalogo caricato, le voci EmbeddedFiles, i byte XML incorporati, i metadati XMP del documento, i dettagli del profilo della fattura rilevati e l'estrazione XML della fattura
Version 2.198.1
Added
- I flussi di lavoro Factur-X PDF/A-3 ora espongono
FacturXWarningsin modo che i chiamanti possano rilevare allegati di supporto aggiuntivi i cui tipi MIME non rientrano nei formati di documento di supporto consigliati PDF, testo, immagine, CSV, XML, JSON, foglio di calcolo e ODS senza rifiutare l'allegato
Version 2.198.0
Added
- L'incorporamento della fattura PDF/A-3 Factur-X ora accetta i livelli di conformità francesi
EXTENDED-CTC-FReEXTENDED-B2B-FR, convalidandoli rispetto all'identificatore delle linee guida Factur-X 1.09 EXTENDED prima di scrivere i metadati della fattura ibrida
Version 2.197.18
Fixed
- La validazione PDF/A-3 Factur-X ora tratta
COMFORTcome un nome di profilo solo ZUGFeRD 1.0, rifiutando gli attuali contenitorifactur-x.xmlprima che possano scrivere metadati di fattura ibrida non corrispondenti
Version 2.197.17
Fixed
- I metadati PDF/A-3 ZUGFeRD 2.0 ora scrivono lo spazio dei nomi dell'estensione PDF/A legacy
urn:zugferd:pdfa:CrossIndustryDocument:invoice:1p0#preservandozf:Versioncome2p0, soddisfacendo le regole di validazione della fattura ibrida prima che il contenitore venga finalizzato
Version 2.197.16
Corretto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
MINIMUMandBASIC WLDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiAFRelationshipData, enforcesAlternativeDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiXRECHNUNGDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.197.15
Corretto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Versionvalues1.2,2.0,2.1,2.2,2.3, and3.0Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.197.14
Corretto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
EN16931Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiEN 16931, matching current sample metadata while preserving existingEN 16931calls
Version 2.197.13
Corretto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
urn:factur-x.eu:1p0:basicandurn:factur-x.eu:1p0:extendedDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiBASICandEXTENDEDDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.197.12
Corretto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
ZUGFeRD-invoice.xmlfilename,COMFORTprofile,urn:ferd:pdfa:CrossIndustryDocument:invoice:1p0#Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiurn:ferd:CrossIndustryDocument:invoice:1p0Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.197.11
Corretto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
zugferd-invoice.xmlfilename withVersion2p0Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiurn:zugferd.de:2p0Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.197.10
Corretto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
fx:Versionas3.0while keeping ordinary Factur-X metadata at1.0Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.197.9
Corretto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
ConformanceLevelDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.197.8
Corretto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
signature-time-stampDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.197.7
Corretto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
signature-policy-identifierDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.197.6
Corretto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
ReasonDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati/ReasonDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatisignature-policy-identifierDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.197.5
Corretto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
CountryCodepolicy so current German ZUGFeRD invoices rejectMINIMUMandBASIC WL, enforceAlternativeDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiXRECHNUNGDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.197.4
Corretto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
CountryCodepolicy so German ZUGFeRD invoices can enforceAlternativeDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiXRECHNUNGDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.197.3
Corretto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
xrechnung.xmlDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiXRECHNUNG,factur-x.xmlDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.197.2
Aggiunto
- PDF/A-3:
THotPDF.AddFacturXAssociatedFileDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatifactur-x.xmlorxrechnung.xmlin Catalog/AFand/Names/EmbeddedFilesDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Modificato
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
/ModDateand raw MD5/CheckSumDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati/ParamsDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.197.1
Corretto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
UseXRefStream/UseObjectStreamsDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.197.0
Modificato
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
/CIDToGIDMapDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati/CIDSetDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.196.8
Fixed
- PDF/A-1 Info dictionary and XMP metadata equivalence ora funziona correttamente ed evita l’output precedente non valido o non conforme
Version 2.196.7
Corretto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.196.6
Fixed
- PDF/A markup-annotation print flags and appearance streams ora funziona correttamente ed evita l’output precedente non valido o non conforme
- PDF/A rejection for non-standard named actions on form push buttons ora funziona correttamente ed evita l’output precedente non valido o non conforme
Version 2.196.5
Corretto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.196.4
Corretto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.196.3
Added
- graceful XFA calculate evaluation for unsupported FormCalc constructs è ora disponibile, mentre l’output esistente resta invariato se l’applicazione non usa questa capacità
Version 2.196.2
Added
- XFA calculate evaluation for
.rawValue,Sum(arr[*].field), and JavaScriptthis.rawValueè ora disponibile, mentre l’output esistente resta invariato se l’applicazione non usa questa capacità
Version 2.196.1
Aggiunto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
+ - * /Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.196.0
Aggiunto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
<calculate>Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.195.0
Aggiunto
- XFA
<exData>Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati<a href>Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati - XFA flatten: exData rich text degraded-markup handling — unsupported inline tags (
<b>,<em>Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati - Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
<exData contentType="text/html">Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.193.0
Aggiunto
- XFA
<exData>Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati<p>Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati - Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
text-alignproperty on<p>:centerandrightDettagli localizzati della modifica per il comportamento dell'API e i simboli elencatijustifyDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati - Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
margin-top,margin-bottom,space-before, andspace-afterin the<p>style attribute, giving control over vertical gaps between paragraphs
Version 2.192.0
Added
- L’appiattimento di un disegno rich-text XFA
<exData>dispone ora diversi run<span>di un singolo paragrafo affiancati, ciascuno con il proprio CSS inline — grassetto, corsivo, colore e dimensione del carattere — mentre il passaggio precedente renderizzava solo il primo span - Ogni run viene posizionato in base alla larghezza misurata, così gli span con stili diversi scorrono da sinistra a destra lungo la riga senza sovrapporsi
- L’impilamento dei paragrafi con allineamento del testo e i link cliccabili arriveranno nei prossimi aggiornamenti
Version 2.191.0
Added
- L’appiattimento di un modulo XFA ora renderizza un valore rich-text
<exData>(un disegnotext/html) come un run di testo stilizzato invece di ignorarlo — il CSS inline sullo span imposta grassetto, corsivo, colore e dimensione del carattere - Questo primo passaggio copre un singolo run stilizzato (un paragrafo, uno span); il flusso multi-span, l’allineamento dei paragrafi e i link cliccabili arriveranno nei prossimi aggiornamenti
Version 2.190.43
Fixed
- Il fallback di recupero dello stream di oggetti ora individua un membro in base alla sua posizione nel flusso invece di trattare tale posizione come numero di oggetto PDF, così il fallback restituisce dati invece di tornare sempre vuoto
- Questo fallback non etichetta più ogni oggetto recuperato come pagina — solo un oggetto che dichiara una pagina nei dati grezzi è tipizzato come tale, così i membri non correlati dello stream oggetti non gonfiano più il conteggio pagine — e un oggetto lasciato nella lista degli oggetti indiretti dopo un errore di parsing viene ora rimosso prima di essere rilasciato
Version 2.190.42
Security
- Quando si importa un file chiave PKCS#12 (.pfx/.p12) ora viene rifiutato un numero di iterazioni PBKDF2 fuori intervallo invece di troncarlo in un campo a 32 bit ; un file costruito ad arte non può più richiedere miliardi di round di derivazione chiave (denial of service) o avvolgere il conteggio in un valore inatteso
Version 2.190.41
Fixed
- Il recupero di uno stream compresso danneggiato non accetta più un risultato parzialmente decompresso come successo quando i dati sono corrotti a metà percorso ; l’output troncato viene scartato e viene provata la configurazione di decompressione successiva, così le API ricevendo ora i dati completi o un errore pulito
Version 2.190.40
Fixed
- La copia di una pagina che utilizza più risorse stato-grafico (ExtGState) non mappa più tutte le risorse su un solo nome e non scarta più tutte tranne una ; ogni stato copiato ora riceve un nome distinto
Version 2.190.39
Fixed
- L’aggiunta di un hyperlink a una pagina caricata con voce
/Annotsesistente che sia un riferimento pendente o non sia un array non va più in crash ; in questo caso viene installato un nuovo array di annotazioni invece di castare il valore inutilizzabile
Version 2.190.38
Fixed
- La separazione o estrazione di pagine non assegna più dimensioni campione rigide a un’immagine priva di
/Widtho/Height, evitando di marchiare immagini di altri documenti con una grandezza fissa ; una dimensione mancante resta ora intatta - La selezione del content stream durante l’estrazione pagina non assegna più un bonus fisso all’oggetto numero 192, che alterava il punteggio stream per ogni documento che usava tale numero
Version 2.190.37
Fixed
- La riparazione di una pagina che fa riferimento a un’immagine mancante (XObject) o a una risorsa graphics-state (ExtGState) durante copia o split ora risolve l’oggetto sorgente dal suo numero invece di trattare il numero come posizione nella lista, copiando quindi l’oggetto corretto — o nessuno — invece di uno non correlato, e una copia fallita non dereferenzia più un risultato nil
Version 2.190.36
Fixed
- La modifica e il salvataggio di una pagina il cui contenuto è distribuito in più content stream non rende più due volte gli stream iniziali : l’output unito viene mantenuto in un singolo stream, gli altri vengono svuotati e gli stream sono uniti con spazi bianchi così i token adiacenti non si fondono in uno non valido (ISO 32000-1 §7.8.2)
- Una pagina con risorsa
/XObjectma senza risorsa/Fontnon mantiene più i nomi dei font della pagina precedente ; l’elenco nomi font viene ora azzerato invece di quello delle immagini
Version 2.190.35
Fixed
- Il subset di una font TrueType integrata con tabella delle posizioni glyph (
loca) corrotta non legge più fuori intervallo — una coppia di offset invertita o fuori range viene ora saltata invece di sottodare in una lunghezza di copia enorme, e la tabella orizzontale delle metriche (hmtx) viene validata prima della copia
Version 2.190.34
Fixed
- Copiando metadati documento (etichette pagina e destinazioni nominate) in un documento che ha già tali entry, i valori precedenti non vengono più persi ; le voci ora vengono sostituite tramite il percorso replace del dizionario
Version 2.190.33
Fixed
- Il caricamento di alcuni PDF 1.6 con pagine ricostruite da stream di oggetti non condivide più valori di dizionario tra due oggetti pagina, che potevano liberare lo stesso oggetto due volte al rilascio ; i valori ora vengono deep-copiati
Version 2.190.32
Fixed
- Scansionare il contenuto di pagina per rilevare testo semplice non solleva più errore di range su una riga vuota dopo trim o senza parentesi di chiusura ; il controllo ora gestisce il caso vuoto e limita la scansione alla lunghezza della stringa
Version 2.190.31
Fixed
- Il rendering del testo contenente il codepoint U+FFFF non scrive più un elemento oltre la fine della tabella interna dei glyph ; la tabella ora cresce se necessario prima di memorizzare il glyph entry
Version 2.190.30
Fixed
BeginParagraphora rifiuta un indice di paragrafo pari a 0 invece di leggere prima dell’inizio dell’array dei paragrafi, e rilascia eventuali paragrafi già in corso in modo che chiamate ripetute non causino più leakEndParagraphora pulisce il riferimento dopo aver liberato il paragrafo corrente, quindi una seconda chiamata non rilascia più due volte lo stesso oggetto
Version 2.190.29
Security
- Vettori di inizializzazione AES e chiavi non sono più generati da fallback non crittografico e prevedibile quando la sorgente random di sistema è temporaneamente non disponibile ; la libreria ora rifiuta la cifratura invece di produrre un IV o una chiave deboli e prevedibili
Fixed
- Calcolare un digest MD5 di una stringa vuota non dereferenzia più un puntatore non valido
Version 2.190.28
Fixed
- Il rendering di metafile EMF contenenti record
PolyDrawora applica il flag di tipo di ogni punto invece di leggere il flag del punto successivo — e, per la variante 16 bit, invece di riutilizzare il flag del primo punto per tutti i punti — così segmenti linee, curve e chiusura vengono disegnati correttamente e il parser non legge più oltre la fine dell’array punti
Version 2.190.27
Fixed
- Decodificare uno stream
LZWDecodeche dichiara predittore TIFF 2 conColumnsoColorsa zero nei parametri di decode non genera più divisione per zero ; il passo predittore viene saltato quando tali valori non sono utilizzabili - Il decoder LZW a singolo argomento ora inizializza pienamente i suoi parametri di decode, rimuovendo affidamenti su valori non inizializzati sullo stack
Version 2.190.26
Fixed
- Il calcolo del carattere di controllo Code 93 non resetta più il contatore peso errato, così dati più lunghi di 14 caratteri generano ora i corretti simboli di controllo
- Il set B di Code 128 ora codifica correttamente la lettera minuscola
iinvece di sostituirla con uno spazio, che corrompeva simbolo e checksum - Il calcolo della cifra di controllo MSI usa ora il valore numerico di ogni cifra invece del codice del carattere, in linea con i lettori MSI standard
- I barcode tracciati con grande larghezza modulo non provocheranno più overflow di un contatore interno, evitando larghezze di barra negative o mescolate
- Disegnare un barcode con dati non validi non lascia più leak di font, penna e oggetti brush salvati
- La routine stand-alone
DrawTextora ripristina il font del canvas effettivamente salvato, invece di azzerare il font dell’utente a un default vuoto
Version 2.190.25
Fixed
- La decodifica di uno stream
ASCIIHexDecode,ASCII85DecodeoRunLengthDecodetroncato o malformato privo del marcatore end-of-data non va più in loop infinito consumando memoria — i decoder ora fermano quando l’input è esaurito invece di rielaborare un byte obsoleto - Il filtro
ASCIIHexDecoderespinge di nuovo caratteri esadecimali non validi ; un errore di precedenza degli operatori aveva permesso a bytes fuori range di passare il controllo
Version 2.190.24
Fixed
- Copiare o unire oggetti i cui dizionari annidati sono ricostruiti durante recovery documento non corrompe più il dizionario né provoca leak di memoria — la routine archiviava le istanze oggetto in slot con record item interni, e ora le voci scartate non sono più rilasciate; sostituzioni e rimozioni operano ora sui record item
Version 2.190.23
Fixed
- Integrare un font Type 0 (CID) ora mantiene la mappa
/ToUnicodeanche quando comprimere la character map non produce output ; il percorso di fallback aveva precedentemente saltato la registrazione della mappa, così il testo in quella font non poteva essere copiato o estratto, e poteva rilasciare due volte i suoi stream di lavoro ; ora la mappa viene sempre salvata, uncompressata se necessario, e ogni stream viene rilasciato una sola volta
Version 2.190.22
Fixed
- Il caricamento di una cross-reference table con oggetti aventi numero di generazione 10 o superiore — comune in PDF aggiornati da molti update incrementali — non scrive più fuori dalla tabella interna di rilevamento duplicati ; tali entry ora sono accettate senza deduplication invece di corrompere l’heap, e un entry malformato con numero oggetto zero viene saltato invece di indicizzare prima dell’inizio della tabella
Version 2.190.21
Fixed
- Passare a
SetFontun nome font di 32 caratteri o più non sfora più il campo face-name a lunghezza fissa della struttura font interna — il nome viene ora copiato con la stessa routine di lunghezza limitata già usata per esaminare i font installati, così un nome troppo lungo viene troncato in sicurezza invece di corrompere lo stack
Version 2.190.20
Fixed
- Aggiungere un’immagine non monocroma con compressione CCITT Group 3/4 o come maschera immagine a 1 bit non corrompe più l’heap — il builder immagine rilasciava prima il suo stream e inglobava l’errore di conversione nel percorso di failure, lasciando il distruttore a rilasciare di nuovo lo stesso stream ; ora l’errore viene propagato così la creazione oggetto immagine fallisce in modo pulito
- La color lookup table per una immagine indicizzata 8-bit non richiede più una voce palette in più di quante il buffer possa contenere, eliminando una scrittura fuori limiti che poteva accadere quando la bitmap sorgente ha palette completa 256 voci
Version 2.190.19
Security
- Decodificare uno stream
ASCII85Decodeche usa l’abbreviazioneztutta-zeri non scrive più oltre il buffer di decode ; il buffer di output è ora dimensionato per l’espansione massima, correggendo un heap overflow che un PDF stream maligno poteva attivare
Version 2.190.18
Security
- L’importazione di una credenziale o certificato PKCS#12 (.pfx/.p12) malformata durante la firma digitale non legge più oltre la fine del suo buffer — un campo lunghezza ASN.1 sovradimensionato che superava il controllo limiti ora viene rifiutato, così il materiale di firma non affidabile non può più causare read out-of-bounds
Version 2.190.17
Added
- Il loader documento standard ora legge i PDF con hybrid-reference — file il cui trailer della cross-reference table contiene una sezione lato
/XRefStm, prodotti dai comuni exporter office — cosìLoadFromFilecarica gli oggetti che tali file tengono negli object stream compressi invece di vedere solo un documento parziale - Cross-reference stream e object stream memorizzati senza filtro di compressione ora si caricano correttamente ; ISO 32000-1 consente la chiave
/Filterassente
Fixed
- Risalvare un documento hybrid-reference caricato con protezione AES-256 —
ActivateProtectionpiùSaveLoadedDocument, oEncryptFile— non fallisce più con errore di indice lista, e l’output cifrato mantiene ogni oggetto del file sorgente
Version 2.190.16
Changed
- Individuare l'intestazione dell'oggetto e la parola chiave
streamdurante le riscritture di Direct File API non analizza più da capo l'anteprima di ogni oggetto né la duplica per il tentativo successivo, rendendo la cifratura AES-256 di un documento benchmark da 2 GB con 1,67 milioni di oggetti circa 2,3 volte più rapida (da 49 a 14 secondi), la decifratura circa 2,7 volte più rapida (da 43 a 16 secondi) e una riscrittura diretta completa da circa 10 a 6 secondi
Version 2.190.15
Fixed
LoadFromFileeLoadFromStreamnon interrompono piĹ l'elaborazione prima che inizi il parsing quando ci sono byte prima dell'intestazione%PDF, cosĹĽ i PDF salvati dentro wrapper HTTP o Signed HTTP Exchange (SXG), acquisizioni mail e contenitori simili arrivano ai fallback di recupero documento invece di fallire con un errore di conversione del numero di versione- Il caricamento di recupero di documenti con dati cross-reference inutilizzabili ora legge il conteggio pagine dall'albero delle pagine attivo anziché contare ogni oggetto di tipo pagina nel file, quindi una pagina cancellata da un aggiornamento incrementale non viene piĹĽ riutilizzata e il conteggio riportato coincide con altri reader
- Quando un documento danneggiato viene recuperato tramite scansione, le revisioni dell'oggetto scritte successivamente nel file hanno ora prioritĂ rispetto alle revisioni piĹ vecchie dello stesso numero di oggetto, secondo la semantica di aggiornamento incrementale
Version 2.190.14
Added
- L'API Direct File ora legge PDF con riferimento ibrido, la cui tabella cross-reference contiene una sezione secondaria
/XRefStmprodotta da comuni esportatori Office, in modo che apertura diretta, copia, riscrittura e cifratura AES-256 vedano gli oggetti compressi presenti nei flussi oggetto invece di perderli
Fixed
- Gli oggetti liberati da una revisione piĹĽ recente di un PDF aggiornato in modo incrementale con una tabella cross-reference tradizionale non possono piĹ essere recuperati da una revisione piĹĽ vecchia durante una riscrittura diretta
- Le voci cross-reference libere non generano piĹĽ piade di oggetto errate, che potevano troncare gli oggetti memorizzati vicino all'inizio di un file durante riscritture dirette di documenti con numeri oggetto riutilizzati
Version 2.190.13
Changed
- L'apertura di PDF con catalogo del documento all'interno di un flusso di oggetti compresso con
DAOpenFileReadOnlyoDACopyFilenon ricade piĹĽ su un caricamento completo del documento per scoprire il conteggio pagine: in un benchmark da 1,25 GB il tempo di apertura diretta passato da circa 0,9 secondi a pochi millisecondi, e la copia leggera circa dimezzata
Fixed
- L'API Direct File ora segue la catena
/Prevdel flusso cross-reference, quindi i PDF aggiornati incrementalm. espongono tutti gli oggetti all'apertura diretta, alla copia, alla riscrittura e alla cifratura AES-256 invece della sola revisione piĹĽ recente - Gli oggetti liberati da una revisione piĹĽ recente di un PDF aggiornato in modo incrementale non possono piĹĽ essere recuperati da una sezione cross-reference piĹĽ vecchia durante una riscrittura diretta
Version 2.190.12
Changed
- I percorsi di riscrittura Direct File API
EncryptFile,DecryptFileeDASaveAsFiledopo modifica documento leggono ora la sorgente tramite una finestra scorrevole e aggregano le scritture di output, per cui l'elaborazione di PDF molto grandi con milioni di oggetti ˨ molto piĹĽ veloce: in benchmark su un documento da 2 GB, la cifratura AES-256 Ą passata da circa 153 a 49 secondi, la decifratura da circa 121 a 43 secondi e una riscrittura diretta completa da circa 48 a 10 secondi - I corpi oggetto giĹĽ presenti in memoria non vengono piĹĽ recuperati dal disco una seconda volta mentre una riscrittura diretta li copia nel file di output
- La risoluzione delle riferimenti
/Lengthindiretti durante una cifratura AES-256 diretta non riapre piĹĞ il file sorgente per ogni lookup
Version 2.190.11
Added
- La flattening dei form ora Ą¨ piĹ semplice da gestire dal codice applicativo:
FlattenFormFieldsrestituisce il numero di campi AcroForm appiattiti, mentre i nuovi helperHasFormFieldseFormFieldExistspermettono alle applicazioni di verificare PDF caricati o form in corso prima di rimuovere campi interattivi - Le demo CLI Preflight includono ora output CSV, convalida di profili e preset, percorsi di output esatti per singolo file, report PDF/VT, riepiloghi aggregati e collegamenti dashboard, mentre le demo GUI Preflight Report validano i profili prima della generazione e mantengono l'output CSV filtrato per profilo in formato CSV
Version 2.190.10
Fixed
- Dopo MovePage il documento torna ad avere una pagina corrente attiva, come DeletePage: disegnare subito dopo uno spostamento ora funziona senza selezionare prima una pagina, il disegno finisce sulla stessa pagina che era corrente prima dello spostamento, e la chiusura del documento subito dopo uno spostamento scrive in modo affidabile tutti i font tramite il percorso normale
Version 2.190.9
Fixed
- I documenti finalizzati subito dopo MovePage non perdono piĹ… piĹ� le polizze: i dati font condivisi differiti dalle pagine giĹĞ già scritte vengono ora sempre emessi alla chiusura del documento, anche quando nessuna pagina Ą¨ attiva in quel momento, quindi il testo di ogni pagina mantiene le proprie risorse font e viene reso correttamente
- Tornare a una pagina precedente e scegliere un altro font non sovrascrive un font giĹĞ usato su quella pagina: i nomi risorsa in sospeso nel registro dei font condivisi sono ora riservati, quindi ciascun font mantiene il proprio nome e entrambi renderizzano correttamente
- Se la compressione di un font incorporato dovesse fallire, il programma font viene ora archiviato non compresso e l'oggetto font viene completato normalmente, invece di generare una voce font incompleta che alcuni visualizzatori non potevano eseguire
- Con
font latini sempliciabilitato, il testo disegnato con Symbol o ZapfDingbats conserva il suo significato simbolico: i font simbolici sono esclusi dal percorso rapido testo in chiaro non incorporato, che altrimenti avrebbe modificato quali glifi venivano mostrati (ISO 32000-1 §9.6.6.2) - La generazione di PDF non genera piĹ… piĹ… piÃ? piÃ? più errori di overflow intero nei progetti compilati con controllo overflow attivo quando il subset di font Ą¨ attivo, e riutilizzare la stessa istanza di componente in piĹĽ documenti non perde piĹ? pi? memoria in flussi di lavoro rari che riavviano o ristrutturano un documento a metĂ a metĂ 50
Version 2.190.8
Fixed
- Il kerning contestuale non viene piĹ… piĹª applicato due volte quando un font fornisce diverse regole contestuali alternative in un unico lookup OpenType: le sottotabelle regola sono ora provate in ordine e la prima corrispondenza vince, come richiede la specifica OpenType
- Le corrispondenze contestuali sovrapposte non sommano piĹĞ gli aggiustamenti: dopo l'attivazione di una regola di posizionamento contestuale, la ricerca riprende oltre la sequenza di glifi trovata, cosĹĞ i modelli ripetuti ricevono ciascun aggiustamento di kerning esattamente una volta
- L'analisi del layout OpenType Ą¨ ora robusta contro font troncati o malformati: la dispatch annidata nelle macro di posizionamento e sostituzione valida ora tutta l'estensione di ogni record tabella prima della lettura
Version 2.190.7
Fixed
- Copia/incolla ed estrazione testo recuperano ora i caratteri originali quando le funzionalitĂ OpenType sostituiscono un carattere in una catena, come maiuscoletto stilizzato o cifre oldstyle raffinate da cifre tabulari: la ToUnicode CMap rimappa il glifo finale al testo sorgente invece di un codepoint Private Use Area (ISO 32000-1 §9.10.3)
- La funzione fractions (
frac) non emette piĹĞ piĹ? mescolanza parzialmente convertita tra glifi fraziona e testo semplice quando il budget interno dei codepoint sostitutivi finisce a metĂ a metĂ a metĂ sequenza: il run di testo interessato torna ora ai glifi originali complessivamente
Changed
- I lookup di una funzione OpenType ora si applicano nell'ordine degli indici LookupList secondo la specifica OpenType, indipendentemente dall'ordine in cui il font li elenca nella sua tabella feature
Version 2.190.6
Fixed
- Accenti multipli su una singola ligatura ora vengono posizionati correttamente nel testo da destra a sinistra: i secondi e successivi segni si attaccano alla loro componente ligatura (GPOS mark-to-ligature) invece di cadere sulla linea di base
- Gli accenti impilati che condividono una componente di ligatura, come shadda seguito da un segno vocalico, ora si impilano l'uno sull'altro invece di sovrapporsi allo stesso ancoraggio
- Il conteggio dei componenti di ligatura ora segue i dati di ancoraggio GPOS del font, cosĹĞ le ligature precomposte con mappe di estrazione testo lunghe non spingono piĹĞ gli accenti successivi fuori intervallo
- Un singolo carattere del piano supplementare non viene piĹĞ scambiato per una ligatura durante il posizionamento dei segni
- Un accento che il font tratta come vero componente di ligatura reale non viene piĹĞ disegnato una seconda volta accanto alla ligatura
- I metadati dei componenti di ligatura non perdono piĹĞ pià tra chiamate non correlate di output testo
Version 2.190.5
Added
- Il testo Hanifi Rohingya ottiene la conformazione cursiva da destra a sinistra tramite la nuova proprietĂ
AutoShapeHanifiRohingya: se abilitato, il motore seleziona le forme iniziale, mediale, finale e isolata del font in modo che la scrittura renda correttamente con il comportamento di collegamento previsto - Il testo Tai Viet ottiene un riordino visivo tramite la nuova proprietĂ di shaping
sfTaiVietReorder: le vocali che precedono la consonante nell'ordine visivo ora appaiono nella posizione corretta invece di seguire l'ordine di digitazione - Il testo Meetei Mayek ottiene un riordino sillabico tramite il nuovo flag di shaping
sfMeeteiMayekShaping: i segni vocalici sinistri avanzano davanti alla loro consonante per una resa visuale corretta - Tutti e tre gli script rispettano il modello di attivazione esistente: i documenti che non abilitano la nuova proprietĂ o flag producono output byte-identico
Version 2.190.4
Fixed
- Il testo da sinistra a destra non viene piĹĞ invertito quando l'indice glifo di un carattere cade nella finestra numerica riservata dal rilevatore da destra a sinistra per i codepoint ebraici e arabi; il rilevatore ora ignora completamente i payload di indice glifo
- Documenti che mescolano lettere latine, greche o cirilliche poco comuni da font grandi vengono renderizzati nel loro ordine originale in tutti i casi
Version 2.190.3
Fixed
- Un singolo alto surrogate seguito da alcuni caratteri BMP non crea piĹĞ un codepoint del piano supplementare durante il rilevamento da destra a sinistra: l'input UTF-16 malformato ora conserva il suo ordine logico invece di essere raggruppato e invertito come testo Adlam o Hanifi Rohingya
- Le coppie di surrogate ben formate per Adlam e Meetei Mayek non sono influenzate e continuano a conformarsi in destra a sinistra
Version 2.190.2
Fixed
- I flag di shaping ora sono isolati per sistema di scrittura: abilitare solo
sfMeeteiMayekShapingnon riordina piĹĞ Devanagari, Bengali, Tamil, Khmer, Myanmar o altri testi indic, e abilitare solosfIndicShapingosfIndicGSUBnon incide piĹĞ sul testo Meetei Mayek - L'output resta byte-identico per ogni script il cui flag di shaping è disattivato, ripristinando il comportamento opt-in documentato per documenti multischema
Added
ApplyIndicReorderottiene un sovraccarico con un set di caratteristiche esplicito per query di riordino per flag; la forma senza parametri mantiene copertura completa per tutti gli script
Version 2.190.1
Fixed
- Il completamento della classificazione delle lettere Meetei Mayek secondo Unicode Character Database: le lettere PHAM, ATIYA e GOK fino a BHAM (U+ABD0–U+ABDA) avviano ora sillabe, quindi i segni vocalici sinistri e i segni compositi seguenti vengono riordinati correttamente quando
sfMeeteiMayekShapingĄ¨ attivo - Le parole basate sulla lettera portatrice di vocale ATIYA, molto comune, mantenevano prima i segni vocalici in ordine logico; ora producono lo stesso ordinamento visivo degli altri blocchi Meetei Mayek
Version 2.190.0
Fixed
- I segni combinati (accenti, harakat arabi, niqqud ebraico, segni vocalici Thai e Lao) ora vengono posizionati alla posizione corretta sopra o sotto la lettera prevista in tutti i visualizzatori PDF; prima potevano apparire spostati verso l'inizio della linea
- I segni combinati impilati ora si accumulano sul segno sottostante invece di collassare sulla lettera base quando il font dispone anche di un ancoraggio base diretto per il segno superiore
- Gli offset di connessione cursiva e gli attachment mark-to-ligature seguono la specifica PDF text-object (ISO 32000-1), eliminando la deriva di posizionamento dopo testo decorato
- Il testo dopo un mark posizionato o un run cursivo continua correttamente nella posizione di penna giusta
Changed
- Il kerning, il posizionamento delle mark e l'attacco cursivo ora si combinano all'interno della stessa run di testo invece di escludersi a vicenda
Version 2.189.1
Fixed
- Il testo da destra a sinistra applica ora la componente avanzamento del kerning a coppia GPOS alla larghezza del run, quindi il testo dopo un run kerning da destra a sinistra prosegue nella posizione corretta
- I run da destra a sinistra con crénage e salita verticale applicano la stessa correzione di avanzamento sull'ultimo glifo
Version 2.189.0
Added
- Ě'esteso il shaping opt-in OpenType con formati di posizionamento GPOS contestuale, posizionamento per distanza, integrazione del riordino Khmer e Myanmar, alternati verticali per font verticali e opzioni tipografiche aggiuntive per forma maiuscola, larghezze cifre, inferiori scientifici, numeratori, denominatori e zero barrato
Changed
- La cifratura e decifratura file AES-256 usano ora una riscrittura diretta per PDF di grandi dimensioni, evitando il caricamento completo in memoria per input supportati compresi file multi-gigabyte
- Win32 AES-256-CBC ora usa lo stesso backend AES-NI con controllo CPUID di Win64, con fallback automatico in C puro su processori senza supporto AES-NI
Version 2.188.2
Added
sfStylisticAlternatesora applica automaticamente le sostituzioni OpenTypesaltdurante l'output Unicode quando il font registrato espone alternative stilistiche corrispondenti
Fixed
- I lookup di coppia GPOS e posizionamento mark rifiutano ora classi e offset di ancoraggio malformati con conteggi font elevati che potrebbero sfociare in overflow di aritmetica a 32 bit, evitando letture non sicure da dati font danneggiati o ostili
- I lookup di posizionamento mark GPOS rispettano ora il filtro mark del LookupFlag, quindi i font che richiedono mark ignorate, tipi di ancoraggio mark o insiemi di filtraggio mark non applicano piĹĞ accidentalmente quegli ancoraggi mark
- Il modelage posizionale Adlam ora usa la stessa guardia di disponibilitĂ mappa Unicode di Syriac, N'Ko e mongolo
Version 2.188.1
Fixed
- L'output testuale arabo ed ebraico da destra a sinistra mantiene ora il kerning a coppia GPOS attivo quando anche il posizionamento mark ˨ attivo, in modo che harakat e niqqud siano ancorati senza perdere la spaziatura tra glifi base
Version 2.188.0
Added
- La nuova opzione di shaping
sfFractionsapplica automaticamente le sostituzioni OpenTypefracdurante l'output testo Unicode, inclusi cifre numeratore, slash di frazione e cifre denominatore in catena contestuale con mappature ToUnicode di ritorno al testo originale
Version 2.187.0
Added
- Le nuove opzioni di shaping applicano automaticamente le feature tipografiche di sostituzione semplice OpenType durante l'output testo Unicode:
sfSmallCapspersmcp,sfCapsToSmallCapsperc2sc,sfOldstyleFiguresperonum,sfLiningFiguresperlnum,sfSuperscriptspersups,sfSubscriptspersubsesfOrdinalsperordn
Version 2.186.0
Added
- Nuove opzioni di shaping
sfDiscretionaryLigaturesesfHistoricalLigaturesapplicano automaticamente i lookup OpenTypedligehligdurante l'output Unicode, emettendo ID glifo delle ligature nativi del font con mappature ToUnicode e restando disattivate per impostazione predefinita
Version 2.185.1
Fixed
- Le lettere Arabic Extended-B U+0870-U+089F partecipano ora alla connessione araba lato producer e allo shaping posizionale GSUB nativo quando lo shaping arabo automatico Ą¨ attivo, in modo che i font con funzionalitĂ OpenType arabe corrispondenti possano emettere forme collegate con mappature ToUnicode
Version 2.185.0
Added
- Il shaping native GSUB arabo per output testo arabo opzionale: quando
sfArabicGSUB˨ attivo, HotPDF applica i lookupinit,medi,fina,isol,rlig,caltercltdel font registrato ai run logici arabi ed emette gli ID glifo contestuali nativi del font con mapping ToUnicode - La nuova opzione
sfCursiveAttachmentapplica ancore di ingresso/uscita GPOS cursive durante l'output testo Unicode, consentendo ai glifi arabi connessi che passano attraverso il path GSUB nativo di allinearsi tramite i daticursdel font
Version 2.184.2
Fixed
- Il testo fallback Adlam da destra a sinistra ora conserva l'ordine valido delle coppie surrogate UTF-16 quando il font non puĂ applicare le sostituzioni posizionali Adlam, e N'Ko U+07FA ora agisce solo come carattere di giunzione cosĹĞ le lettere N'Ko adiacenti si connettono senza sostituire U+07FA con una forma posizionale
Version 2.184.1
Fixed
- Il posizionamento mark-to-ligature ora copre anche le ligature arabe da destra a sinistra: un harakat su una ligatura come Allah viene posizionato sul componente ligatura corretto, mentre il posizionamento per componente era prima applicato solo al testo da sinistra a destra e i harakat RTL restavano sulla larghezza di avanzamento semplice della ligatura ; le ligature arabe giĂ formate (per esempio Allah e lam-alef) sono ora rilevate per il tracciamento dei componenti, e l'opzione mark-to-ligature resta disattivata per default
Version 2.184.0
Added
- Il tracciamento di cluster e componenti lato producer per il pipeline di shaping del testo: man mano che le ligature si formano, il motore registra quali caratteri originali copre ogni glifo di output e quanti componenti di ligatura contiene, ponendo le basi per un posizionamento mark preciso e l'estrazione testo su run collegati
- Le mark combinate sono ora attaccate al componente corretto di una ligatura (OpenType GPOS mark-to-ligature) quando la nuova opzione mark-to-ligature ˨ attiva per testo ligato da sinistra a destra; l'output resta invariato quando l'opzione Ą¨ disattivata
- Le ligature multi-componente prodotte da questo path portano mappature d'estrazione testo precise, quindi copia e incolla recupera la sequenza di caratteri originale
Version 2.183.0
Added
- Pre-elaborazione della scrittura Javanese per il corretto posizionamento delle vocali: quando l鈥檕pzione di riordino Javanese 猫 attiva, i segni vocalici pre-base come taling e dirga mure vengono spostati prima del cluster consonantico, incluse le pile unite da pangkon, prima del rendering, cos矛 il testo segue l鈥檕rdine visivo corretto; l鈥檕utput resta invariato quando l鈥檕pzione 猫 disattivata
Version 2.182.0
Added
- Pre-elaborazione del testo Hebrew per il corretto posizionamento dei punti vocalici: quando l鈥檕pzione di riordino Hebrew 猫 attiva, punti vocalici, dagesh, punti shin e sin e segni di cantillazione vengono messi in ordine canonico prima del rendering, cos矛 il posizionamento dei segni funziona anche se la sorgente usa un ordine diverso; l鈥檕utput resta invariato quando l鈥檕pzione 猫 disattivata
Version 2.181.0
Added
- Pre-elaborazione del testo Thai e Lao per il corretto posizionamento dei segni: quando l鈥檕pzione di riordino Thai/Lao 猫 attiva, SARA AM viene diviso nella parte superiore e finale, e vocali o toni vengono messi in ordine canonico prima del rendering, permettendo il corretto allineamento dei segni; l鈥檕utput resta invariato quando l鈥檕pzione 猫 disattivata
Version 2.180.0
Added
- Shaping automatico producer-side per testo Adlam, la scrittura Fula dell鈥橝frica occidentale in U+1E900-U+1E95F: quando AutoShapeAdlam 猫 attivo, le lettere vengono renderizzate nelle corrette forme corsive tramite sostituzioni posizionali OpenType, le surrogate pair sono gestite correttamente e copia/incolla recupera le lettere originali; l鈥檕utput resta invariato quando l鈥檕pzione 猫 disattivata
Version 2.179.0
Added
- Shaping automatico producer-side per testo N'Ko in U+07C0-U+07FF: quando AutoShapeNko 猫 attivo, le lettere vengono renderizzate nelle corrette forme corsive tramite sostituzioni posizionali OpenType, e copia/incolla recupera le lettere originali; l鈥檕utput resta invariato quando l鈥檕pzione 猫 disattivata
Version 2.178.0
Aggiunto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.177.0
Added
- Supporto alla lettura del kerning verticale OpenType GPOS tramite
vkrne delle alternative proporzionali verticali tramitevpal, esponendo l鈥檃ggiustamento dell鈥檃vanzamento verticale definito dal font tra glifi impilati per l鈥檕utput verticale
Version 2.176.0
Fixed
- Il kerning ora applica gli offset di posizionamento glifo GPOS, inclusi XPlacement orizzontale e YPlacement verticale, che prima venivano letti ma scartati; i font che affinano le posizioni tramite la feature kern ora rendono questi offset insieme all鈥檃ggiustamento dell鈥檃vanzamento per testo LTR e RTL
Version 2.175.0
Fixed
- I segni combinanti stratificati nel testo RTL sono ora posizionati correttamente, ad esempio una lettera Arabic con shadda e vocale o punti Hebrew impilati; ogni segno aggiuntivo si impila sul segno sottostante invece di ricadere sulla lettera base
Version 2.174.0
Added
- Supporto all鈥檃ttacco OpenType GPOS Mark-to-Ligature LookupType 5, che riporta la posizione di un segno combinante su un componente specifico di una legatura, cos矛 ogni segno si ancora alla propria parte della legatura multi-lettera
Version 2.173.0
Added
- Supporto alla lettura dell鈥檃ttacco corsivo OpenType GPOS LookupType 3, esponendo le ancore di ingresso e uscita usate da scritture corsive come Arabic Nastaliq per allineare lettere unite su una linea di base fluida
Version 2.172.0
Added
- Il kerning viene ora applicato al testo RTL, come Arabic e Hebrew, quando il kerning 猫 attivo; in precedenza il percorso di visualizzazione RTL posizionava solo i segni combinanti e lasciava il kerning non applicato
- Il kerning contestuale OpenType GPOS con LookupType 7 Context e LookupType 8 Chained Context viene ora emesso sia per testo LTR sia RTL, cos矛 il kerning dipendente dal contesto restringe l鈥檕utput invece di essere solo letto
Version 2.171.0
Added
- Supporto al kerning contestuale OpenType GPOS con posizionamento LookupType 7 Context e LookupType 8 Chained Context, permettendo di leggere dal font il kerning dipendente dal contesto e usarlo per posizionare il testo
Version 2.170.0
Added
- Applicazione automatica opzionale della feature OpenType
loclLocalized Forms, che seleziona forme letterali specifiche della lingua, come forme cirilliche serbe e bulgare o Turkish dotless i, quando 猫 impostata una lingua di shaping
Version 2.169.0
Added
- Applicazione automatica opzionale della feature OpenType
caltContextual Alternates al testo sotto lo script attivo, con glifi contestuali non codificati incorporati tramite mappatura ToUnicode cos矛 copia e incolla recuperano il testo originale
Version 2.168.0
Added
- Applicazione automatica opzionale della feature OpenType
rcltRequired Contextual Alternates al testo Arabic gi脿 sagomato tramite l鈥檕pzione contextual-alternates, cos矛 la selezione contestuale delle lettere non richiede pi霉 uno shaper successivo
Version 2.167.0
Added
- OpenType GSUB shaping for Devanagari and Indic scripts 猫 ora disponibile; l'output esistente resta invariato finch茅 non viene attivata l'opzione correlata
- the new Indic GSUB mode remains opt-in and separate from reorder-only shaping 猫 ora disponibile; l'output esistente resta invariato finch茅 non viene attivata l'opzione correlata
- ToUnicode recovery for producer-side complex shaping codepoints 猫 ora disponibile; l'output esistente resta invariato finch茅 non viene attivata l'opzione correlata
Version 2.166.0
Added
- producer-side Mongolian shaping with OpenType GSUB 猫 ora disponibile; l'output esistente resta invariato finch茅 non viene attivata l'opzione correlata
- ToUnicode extraction for shaped Mongolian letters 猫 ora disponibile; l'output esistente resta invariato finch茅 non viene attivata l'opzione correlata
Version 2.165.1
Fixed
- right-to-left ordering for shaped Syriac and Arabic Supplement / Extended-A words ora funziona correttamente ed evita l'output o la diagnostica errati precedenti
Version 2.165.0
Added
font latini semplicicompact WinAnsi output for printable ASCII standard-font text 猫 ora disponibile; l'output esistente resta invariato finch茅 non viene attivata l'opzione correlata
Version 2.164.0
Changed
- document-wide shared font embedding across multiple pages ora si comporta in modo coerente nelle pagine generate preservando rendering ed estrazione del testo
Version 2.163.3
Modificato
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
JEPSCD+ArialMTDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.163.2
Modificato
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
CompressionDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.163.1
Fixed
- valid TrueType fonts without optional hinting tables ora funziona correttamente ed evita l'output o la diagnostica errati precedenti
Version 2.163.0
Aggiunto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.162.0
Added
- OpenType
liga/cligLatin ligature folding throughsfStandardLigatures猫 ora disponibile; l'output esistente resta invariato finch茅 non viene attivata l'opzione correlata - copy, paste, and search recovery for folded Latin ligatures 猫 ora disponibile; l'output esistente resta invariato finch茅 non viene attivata l'opzione correlata
Version 2.161.0
Aggiunto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.160.0
Added
- OpenType GSUB groundwork for future Tibetan rendering 猫 ora disponibile; l'output esistente resta invariato finch茅 non viene attivata l'opzione correlata
Version 2.159.0
Added
- GPOS mark positioning for Hebrew niqqud and Arabic harakat in right-to-left runs 猫 ora disponibile; l'output esistente resta invariato finch茅 non viene attivata l'opzione correlata
Version 2.158.0
Aggiunto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.157.0
Added
- producer-side shaping for Arabic Supplement and Arabic Extended-A letters 猫 ora disponibile; l'output esistente resta invariato finch茅 non viene attivata l'opzione correlata
- ToUnicode recovery for newly shaped Arabic Supplement and Extended-A letters 猫 ora disponibile; l'output esistente resta invariato finch茅 non viene attivata l'opzione correlata
Version 2.156.0
Aggiunto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.155.0
Added
- GPOS Mark-to-Base placement for combining marks in Thai, Lao, Hebrew, and Latin text 猫 ora disponibile; l'output esistente resta invariato finch茅 non viene attivata l'opzione correlata
Version 2.154.0
Aggiunto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.153.0
Aggiunto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.152.0
Aggiunto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.151.0
Aggiunto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.150.0
Aggiunto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Corretto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.149.0
Aggiunto
- Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
Version 2.148.1
Changed
- more verifiable Memory Stream and PDF Info demo output ora si comporta in modo coerente nelle pagine generate preservando rendering ed estrazione del testo
Version 2.148.0
Added
- XFA fields below the first page flowing onto following pages 猫 ora disponibile; l'output esistente resta invariato finch茅 non viene attivata l'opzione correlata
Version 2.147.4
Added
- diagnostics for oversized content-sized XFA text fields and labels 猫 ora disponibile; l'output esistente resta invariato finch茅 non viene attivata l'opzione correlata
Version 2.147.3
Added
- one-line minimum height for empty growable XFA text 猫 ora disponibile; l'output esistente resta invariato finch茅 non viene attivata l'opzione correlata
Version 2.147.2
Added
- layout for XFA text without an explicit width 猫 ora disponibile; l'output esistente resta invariato finch茅 non viene attivata l'opzione correlata
Version 2.147.1
Added
- automatic height for XFA text with width but no height 猫 ora disponibile; l'output esistente resta invariato finch茅 non viene attivata l'opzione correlata
Version 2.147.0
Added
- internal text measurement groundwork for content-sized XFA text 猫 ora disponibile; l'output esistente resta invariato finch茅 non viene attivata l'opzione correlata
Version 2.146.4
Fixed
- positive page-height normalization for loaded PDFs with descending box coordinates ora funziona correttamente ed evita l'output o la diagnostica errati precedenti
- unchanged drawing positions, field rectangles, text, and images on affected loaded pages ora funziona correttamente ed evita l'output o la diagnostica errati precedenti
Version 2.146.3
Fixed
- pagination for repeating fixed-position XFA data sections ora funziona correttamente ed evita l'output o la diagnostica errati precedenti
- more accurate off-page diagnostics for XFA forms loaded from existing PDFs ora funziona correttamente ed evita l'output o la diagnostica errati precedenti
Version 2.146.2
Added
- L'impaginazione XFA ora si estende su pi霉 aree di contenuto: quando una pagina definisce pi霉 aree di contenuto, il contenuto a flusso le riempie in ordine—prosegue nell'area successiva della stessa pagina prima di passare a una nuova pagina—in modo che i layout di modulo a pi霉 colonne e aree vengano impaginati correttamente
- Le lunghe sezioni ripetute ora vengono impaginate su pi霉 pagine: un elenco basato sui dati che si ripete una volta per record e supera la propria area di contenuto prosegue nelle pagine successive senza perdere alcuna riga
- Le interruzioni di sezione ora vengono rispettate: una sezione di modulo impostata per iniziare in una nuova pagina comincia in una nuova pagina anche se nella pagina corrente c'猫 ancora spazio, mentre un'interruzione di area sposta la sezione nell'area di contenuto successiva
Version 2.146.1
Added
- I moduli XFA ora vengono impaginati automaticamente: quando il contenuto a flusso—come un lungo elenco basato sui dati o un insieme di campi—supera l'altezza dell'area di contenuto della pagina, l'eccedenza prosegue in una nuova pagina anzich茅 superare il bordo inferiore; i moduli a pagina singola non sono interessati e producono un output identico
Version 2.146.0
Changed
- L'appiattimento da XFA ad AcroForm ora instrada ogni campo e grafica appiattiti attraverso un'assegnazione di pagina per singolo elemento—le basi interne per l'impaginazione multipagina nelle prossime versioni; i moduli a pagina singola non sono interessati e producono un output identico
Version 2.145.4
Changed
- Il layout a tabella e da sinistra a destra (lr-tb) di XFA 猫 stato convalidato su moduli XFA reali—fatture, ordini di acquisto, richieste di pagamento e griglie di dati—confermando che le tabelle basate sui dati generano una riga per record e che ogni cella si posiziona nella riga e nella colonna corrette, senza perdita di campi rispetto alla precedente gestione posizionale
- Quando una colonna di tabella a larghezza automatica (una voce
-1incolumnWidths) contiene solo celle espandibili senza larghezza misurabile, la colonna scartata viene ora segnalata tramiteXFAFlattenWarningsanzich茅 essere omessa silenziosamente
Version 2.145.3
Added
- Le colonne di tabella impostate su larghezza automatica (una voce
-1incolumnWidthso le colonne non specificate) si adattano ora alla loro cella pi霉 larga, cos矛 ogni cella di una colonna a larghezza automatica si allinea alla stessa posizione su tutte le righe; le tabelle che combinano larghezze di colonna fisse e automatiche vengono ora disposte in modo coerente
Version 2.145.2
Added
- Le tabelle XFA basate sui dati ora si espandono correttamente: una riga di tabella contrassegnata per ripetersi (con
<occur>) genera una riga per ogni record di dati, cos矛 fatture ed elenchi di voci si appiattiscono in una riga per voce anzich茅 in un'unica riga modello; il markup di riga senza contenuto non disallinea pi霉 le colonne
Version 2.145.1
Added
- I moduli XFA possono ora utilizzare il layout a tabella: un sottomodulo con
layout="table"dispone i suoi elementi figlilayout="row"in colonne allineate, con le larghezze delle colonne ricavate dalcolumnWidthsdella tabella e l'altezza di ogni riga impostata dalla cella pi霉 alta. Le tabelle appiattite—fatture, elenchi di voci, griglie di dati—ora collocano le loro celle nelle righe e colonne corrette anzich茅 sovrapporsi al bordo sinistro
Version 2.145.0
Added
- I moduli XFA possono ora usare un layout affiancato da sinistra a destra: un subform con
layout="lr-tb"dispone i suoi elementi figli di tipo campo e disegno uno accanto all'altro, andando a capo quando il successivo non rientra pi霉 nella larghezza del contenitore. I moduli appiattiti che dispongono i controlli in una griglia con ritorno a capo—anzich茅 in un'unica colonna verticale—ora li posizionano correttamente
Version 2.144.5
Fixed
- I campi dei moduli XFA che omettono la posizione x e/o y—una scorciatoia comune e valida nel layout posizionato, in cui la coordinata omessa assume l'origine del contenitore—non vengono pi霉 scartati. I moduli reali i cui blocchi indirizzo, sezioni e tabelle si basavano su questo valore predefinito vengono ora appiattiti con il loro set completo di campi anzich茅 perderli silenziosamente
- Le sottosezioni annidate all'interno di un modulo a flusso dall'alto verso il basso ora fanno avanzare il cursore verticale della propria altezza del contenuto, in modo che le sezioni adiacenti si impilino una sotto l'altra invece di sovrapporsi nella stessa posizione. I moduli a flusso con pi霉 sezioni vengono ora disposti nell'ordine verticale corretto
Version 2.144.4
Added
- I moduli XFA con sezioni ripetute guidate dai dati sono ora supportati: un sottomodulo con
<occur max="-1"/>(o qualsiasi massimo non predefinito) si espande in un'istanza per ogni gruppo di dati corrispondente nel pacchettodatasets, con ogni istanza che lega i propri campi ai valori della riga corrispondente. I moduli che utilizzano il binding implicito del datasets per generare elenchi o tabelle a lunghezza variabile vengono ora appiattiti con il numero corretto di campi e i valori corretti per riga
Version 2.144.3
Added
- I moduli XFA possono ora usare un layout a flusso dall'alto verso il basso: un sottomodulo con
layout="tb"impila verticalmente i suoi elementi figli di tipo campo e disegno—ciascuno posizionato sotto il precedente—anche quando tali figli non specificano una posizione esplicita. I moduli appiattiti che si basano sul flusso verticale automatico anzich茅 su coordinate fisse ora dispongono correttamente i propri campi
Version 2.144.2
Fixed
- I moduli XFA il cui primo pacchetto inizia con una dichiarazione DOCTYPE—come quella prodotta da alcuni strumenti di progettazione XFA—ora vengono appiattiti correttamente tramite
FlattenLoadedXFAinvece di fallire con un errore di modello mancante. Il caricatore riconosce l'elemento radicexdp:xdpanche quando 猫 preceduto da un prologo DOCTYPE - Le entit脿 XML interne dichiarate nel DOCTYPE di un modulo (ad esempio
<!ENTITY name "value">) ora vengono espanse ovunque compaia il riferimento&name;corrispondente nel modulo, cos矛 i campi appiattiti contengono il testo risolto
Security
- Le entit脿 XML esterne (
SYSTEMoPUBLIC) riferite da un modulo XFA non vengono mai risolte durante l'appiattimento: HotPDF non recupera l'URL o il file riferito, proteggendo dagli attacchi XXE (XML External Entity). Tale riferimento viene espanso in testo vuoto e segnalato tramiteXFAFlattenWarnings
Version 2.144.0
Changed
- L'appiattimento da XFA ad AcroForm ora si avvale di un motore di impaginazione dedicato a due passaggi: prima vengono calcolate le posizioni degli elementi, poi vengono emessi i campi e gli elementi grafici. I moduli posizionali statici producono un output identico; questa modifica interna costituisce la base per il supporto dell'impaginazione a flusso e delle sezioni ripetute in arrivo nelle versioni successive
Version 2.143.5
Fixed
- I moduli XFA reali che memorizzano la voce
/XFAcome array di pacchetti ora vengono appiattiti correttamente tramiteFlattenLoadedXFAinvece di fallire con un errore di modello mancante. Questo riguarda i moduli i cui flussi di pacchetti sono compressi singolarmente senza un filtro leggibile direttamente, e i moduli che elencano il pacchetto di configurazione prima del modello—entrambi comuni nei PDF esportati da strumenti professionali di progettazione XFA
Added
- L'appiattimento XFA
<draw>ora rende le etichette di testo statiche—titoli del modulo e didascalie dei campi—come testo di pagina nativo, mantenendo famiglia di caratteri, dimensione e colore dell'etichetta, in modo che restino visibili su un modulo appiattito nei lettori privi di motore XFA - I widget pulsante XFA ora vengono convertiti in pulsanti AcroForm nativi mantenendo il testo della didascalia, cos矛 i pulsanti di azione compaiono sul modulo appiattito
Version 2.143.4
Added
- Il nuovo metodo
FlattenLoadedXFAappiattisce il modulo XFA incorporato in un PDF gi脿 caricato in campi AcroForm nativi e grafica di pagina statica, completando cos矛 la conversione da XFA a AcroForm per i documenti aperti da disco (le versioni precedenti appiattivano i byte XFA forniti dal chiamante tramiteApplyXFAAsAcroForm). Legge la voce/XFAdel modulo, che sia un singolo stream o un array di pacchetti, quindi rimuove/XFAe azzera il flag di rendering dinamico, in modo che il risultato sia un semplice AcroForm visualizzabile da qualsiasi lettore PDF. Restituisce il numero di campi creati, oppure zero quando il PDF caricato non contiene XFA - Entrambi i punti di ingresso per l'appiattimento XFA accettano ora un'opzione
Editable: lasciala attiva (impostazione predefinita) per campi compilabili, oppure disattivala per contrassegnare come di sola lettura ogni campo generato - I nomi di campo XFA duplicati, consentiti in XFA ma non in AcroForm, vengono ora resi univoci automaticamente con un suffisso numerico, e la ridenominazione viene segnalata tramite
XFAFlattenWarnings - Sono accettati i modelli XFA creati per diverse versioni dello schema dei modelli; uno spazio dei nomi del modello non riconosciuto viene annotato come avviso anzich茅 rifiutato, cos矛 il modulo viene comunque appiattito
Version 2.143.3
Added
- L'appiattimento da XFA ad AcroForm ora riproduce la grafica statica
<draw>di un modello XFA come contenuto nativo della pagina, in modo che rettangoli, linee, archi e immagini incorporate mantengano la loro posizione in un modulo appiattito nei lettori PDF che non implementano un motore XFA. Rettangoli e linee vengono tracciati con lo spessore e il colore del bordo XFA, un arco viene reso come una curva morbida che segue i suoi angoli di inizio e di ampiezza, e un'immagine PNG o JPEG incorporata viene decodificata e disegnata nel suo riquadro originale
Version 2.143.2
Added
- L'appiattimento da XFA ad AcroForm ora riporta lo stile dei campi sui campi AcroForm generati. La famiglia e la dimensione del carattere XFA, il colore del testo, il colore e lo spessore del bordo del campo e l'allineamento orizzontale del testo vengono tradotti nell'aspetto predefinito, nel bordo e nell'allineamento del campo, in modo che un modulo XFA appiattito mantenga l'aspetto previsto nei lettori PDF standard che non implementano un motore XFA. In questa versione la selezione dei caratteri viene mappata sui caratteri PDF standard; l'incorporamento completo dei caratteri seguir脿
Version 2.143.1
Added
- L'appiattimento da XFA ad AcroForm eseguito da
ApplyXFAAsAcroFormora converte campi numerici, di data, caselle di controllo, pulsanti di opzione, elenchi di scelta e firme digitali, oltre ai campi di testo. Ogni widget XFA<ui>viene mappato al campo AcroForm nativo pi霉 simile: le voci numeriche e di data diventano campi di testo, un check button diventa una casella di controllo (o un gruppo di pulsanti di opzione quando si trova all'interno di una exclusion group), e un elenco di scelta diventa una casella combinata oppure, in caso di selezione multipla, una casella di riepilogo. I valori dei campi vengono ancora presi prima dal pacchetto form e poi dal pacchetto datasets
Version 2.143.0
Added
- Il nuovo metodo
ApplyXFAAsAcroFormconverte un modulo XFA (XML Forms Architecture) fornito dal chiamante in campi di testo AcroForm nativi, cos矛 che i moduli XFA statici diventino visibili e compilabili nei lettori PDF moderni che non implementano un motore XFA. Questa prima versione copre i campi di testo con valori presi dal pacchetto form o datasets; seguiranno altri tipi di campo, stili e grafica.XFAFlattenWarningssegnala qualsiasi elemento che non 猫 stato possibile convertire
Version 2.142.1
Changed
- L'helper di collegamento Seed Value di PAdES ora rifiuta i valori che costringerebbero un firmatario successivo a violare il profilo PAdES (ETSI EN 319 142-2 V1.2.1 搂4.2.6): il vincolo
/SubFilterdeve essereadbe.pkcs7.detachedoETSI.CAdES.detached, e il vincolo/DigestMethodnon pu貌 essereMD5,SHA1, n茅SHA-1. Il produttore solleva un'eccezione diagnostica chiara anzich茅 emettere silenziosamente un dizionario/SVche viola il profilo
Version 2.142.0
Added
- Il nuovo metodo
AddXFASignaturePacketincorpora una firma XAdES / XML-DSig generata dal chiamante come pacchettosignatureXFA all'interno dell'array/XFAdell'AcroForm (ISO 32000-1 搂12.7.8), per moduli XFA firmati. HotPDF non genera n茅 analizza la firma: il chiamante la produce con una libreria crittografica XML sui dataset XFA e HotPDF la incorpora come pacchetto FlateDecode. Si applicano gli stessi rifiuti PDF/A e PDF/X, l'esclusivit脿 dello stream singolo e le protezioni contro i pacchetti duplicati diAddXFAPacket
Version 2.141.2
Added
- Nuova API pubblica
RegisterDefaultColorSpace(Which, ColorSpaceCS)registra uno spazio colore ICCBased (creato conRegisterICCProfile) come mappatura/DefaultGray,/DefaultRGBo/DefaultCMYKa livello di documento secondo ISO 32000-1 搂8.6.5.6 e la Nota tecnica PDF/A Competence Center 0002 搂1.3. In EndDoc, l'helper percorre ogni pagina e aggiunge una voce[/ICCBased <profile-stream>]sotto la chiave/DefaultXcorrispondente nel dizionarioResources/ColorSpacedella pagina. Il numero di componenti viene convalidato rispetto alla famiglia (DefaultGray鈫?N=1,DefaultRGB鈫?N=3,DefaultCMYK鈫?N=4); una chiamata conCSNamevuoto cancella la mappatura; le voci/DefaultXgi脿 presenti a livello di pagina vengono conservate (gli override del chiamante vincono). Con questo in atto, un documento che mescola contenuto DeviceRGB e DeviceCMYK pu貌 soddisfare PDF/A-1 搂6.2.3.3 con qualsiasi singolo profiloGTS_PDFA1OutputIntent, perch茅 il controllo di coerenza 搂6.2.3.3 introdotto in v2.141.1 considera l'utilizzo DeviceX come assorbito una volta registrato il corrispondente spazio Default
Version 2.141.1
Changed
- Verifica di coerenza tra spazio colore del dispositivo e OutputIntent in PDF/A (ISO 19005-1 搂6.2.3.3 + Nota tecnica PDF/A Competence Center 0002 搂4.1). EndDoc ora solleva un'eccezione quando un documento mescola contenuto DeviceRGB e DeviceCMYK (un singolo profilo ICC OutputIntent GTS_PDFA1 non pu貌 corrispondere a entrambi i modelli di colore contemporaneamente) o quando il contenuto DeviceCMYK 猫 abbinato a un profilo OutputIntent RGB, e viceversa. Secondo TN0002 搂4.1, il contenuto DeviceGray 猫 compatibile con profili OutputIntent Gray, RGB o CMYK. Gli XObject immagine sono tracciati in base allo spazio colore che il produttore effettivamente emette (DeviceRGB per JPEG e Flate a 24 bit, DeviceGray per CCITTFax); secondo TN0002 搂4.3, gli array
/Ce/ICdelle annotazioni di markup sono conteggiati come DeviceRGB. Gli spazi colore ICCBased / CalGray / CalRGB / Lab sono esentati dalla verifica
Added
- Le propriet脿 a sola lettura
UsedDeviceGray,UsedDeviceRGBeUsedDeviceCMYKsuTHotPDFespongono i flag di utilizzo degli spazi colore del dispositivo in corso, in modo che i chiamanti possano ispezionare lo stato della verifica di coerenza prima di EndDoc
Version 2.141.0
Added
- I moduli XFA possono ora essere emessi come un singolo stream
/XFAtramite il nuovo metodoSetXFADocument, che inserisce un intero documento XFA/XDP in un unico stream (ISO 32000-1 搂12.7.8), come alternativa alla forma ad array per pacchetti diAddXFAPacket. Le due forme si escludono a vicenda - La nuova propriet脿
XFANeedsRenderingimposta il flag/NeedsRenderingdel Catalog (ISO 32000-1 搂7.7.2) in modo che un visualizzatore rigeneri un modulo XFA dinamico alla prima apertura del documento. 脠 disattivata per impostazione predefinita, lasciando i documenti non XFA identici byte per byte
Changed
- La documentazione XFA mostra ora i pacchetti wrapper di inizio e fine
xdp:xdprichiesti per la forma ad array di/XFA, in modo che gli stream dei pacchetti si concatenino in un documento XDP ben formato (ISO 32000-1 搂12.7.8)
Fixed
- I tipi MIME nel
/Subtypedei file incorporati vengono ora scritti come nomi PDF corretti, con/sottoposto a escape come#2f(ad esempio/application#2fxml) secondo ISO 32000-1 搂7.3.5, affinch茅 i lettori rigorosi analizzino correttamente il tipo di media. RiguardaAddPDFA3AssociatedFileeAddXAdESAssociatedFile AddXAdESAssociatedFileora rifiuta un payload XML vuoto, poich茅 uno stream di firma XAdES non pu貌 essere vuoto
Version 2.140.5
Changed
- Il dizionario di marca temporale documento PAdES ora emette il
/Type /DocTimeStamprichiesto dalla specifica invece di/Type /Sige omette le voci/M,/Reason,/Locatione/ContactInfoche la norma indica come 芦non dovrebbero essere presenti禄, migliorando la conformit脿 con ETSI EN 319 142-1 V1.2.1 搂5.4.3 - Il sotto-dizionario Signature VRI del DSS ora referenzia gli stessi stream indiretti degli array di primo livello del DSS (
Certs,CRLs,OCSPs) anzich茅 scrivere oggetti stream duplicati, rispettando l'invariante di ETSI EN 319 142-1 V1.2.1 搂5.4.2.3 e l'indicazione della nota s) del 搂6.3 di evitare la duplicazione dei valori dei certificati - Il valore
/Extensions /ESIC /ExtensionLeveldichiarato nel Catalog viene ora promosso automaticamente a 2 quando si aggiunge una firma PAdES baseline con/SubFilter /ETSI.CAdES.detached, poich茅 il requisito l) del 搂6.3 della norma 猫 identificato dal Level 2; i documenti che portano solo dati di DSS o di marca temporale documento continuano a usare Level 1
Added
- Una firma PAdES ora pu貌 trasportare certificati CA intermedi accanto al certificato del firmatario all'interno di CMS
SignedData.certificatestramite la nuova opzioneAdditionalCertsDER, aiutando il verificatore a costruire un percorso verso l'ancora di fiducia senza ricerche esterne (ETSI EN 319 142-1 V1.2.1 搂6.3 nota b)
Fixed
- Conformit脿 PDF/A: il subsetter TTF Unicode emette ora il flusso di bit
/CIDSetnel descrittore di font della CIDFont discendente quando PDFACompliance 猫 attivo. ISO 19005-1 搂6.3.5 / ISO 19005-2 搂6.2.11 / ISO 19005-3 搂6.2.11 richiedono che le CIDFont in subset dichiarino quali CID sono presenti; senza il flusso, un controllo rigoroso di veraPDF fallisce anche se tutti i glifi richiesti sono incorporati. Il flusso di bit 猫 MSB-first secondo ISO 32000-1 搂9.7.4.2 (CID 0 nel bit 7 del byte 0) e viene emesso solo in modo PDF/A, perci貌 l'output non PDF/A rimane stabile a livello di byte
Version 2.140.4
Fixed
- Durante il salvataggio incrementale di un PDF caricato, un dizionario di cifratura orfano rimasto nell'origine (a cui il suo trailer non fa pi霉 riferimento) viene ora contrassegnato come libero nella sezione di riferimenti incrociati aggiunta, cos矛 i lettori che seguono l'ultima revisione non vedono pi霉 quel dizionario vagante. I byte originali restano intatti e i documenti privi di tale residuo vengono scritti esattamente come prima; completa la pulizia del salvataggio completo della 2.140.3
Version 2.140.3
Fixed
- Il salvataggio di un PDF caricato con AES-256 non copia pi霉 un dizionario di cifratura residuo dal file di origine. Quando un documento di origine conservava un dizionario di cifratura orfano a cui il suo trailer non faceva pi霉 riferimento, l'output conteneva in precedenza quel dizionario vagante accanto a quello attivo; ora viene scritto solo il dizionario di cifratura effettivamente in uso
Version 2.140.2
Added
- L'attributo firmato di informazioni di revoca Adobe contenuto in una firma PAdES ora accetta anche prove di revoca non X.509 oltre alle consuete voci CRL e OCSP, in modo che un token di revoca specifico del settore identificato da un proprio OID possa viaggiare all'interno della firma
- Una firma PAdES ora pu貌 dichiarare un attributo content-hints CAdES che descrive ci貌 che 猫 stato firmato, utile nei flussi di lavoro a pi霉 firme in cui un firmatario successivo deve conoscere il tipo di contenuto originale senza doverlo dedurre nuovamente
Version 2.140.1
Fixed
- La crittografia di un documento caricato con AES-256 non si blocca pi霉 quando le sue stringhe di testo sono annidate all'interno di array o altri contenitori non indiretti; tali stringhe vengono ora crittografate correttamente anzich茅 entrare in un ciclo infinito
- L'apertura o la decrittografia di un documento AES-256 non fallisce pi霉 con un errore di padding quando il file contiene un dizionario di crittografia residuo proveniente dalla sua origine; il decrittatore ora ignora ogni dizionario di crittografia, quindi tutto il contenuto delle stringhe viene decrittografato correttamente
Version 2.140.0
Changed
- La cifratura e la decifratura AES-256 ora usano l'accelerazione hardware AES-NI della CPU quando disponibile, con un fallback software portabile in caso contrario. Su una CPU desktop tipica questo porta il throughput AES-256-CBC da circa 148 MB/s a 442 MB/s in cifratura (circa 3× pi霉 veloce) e da circa 147 MB/s a 832 MB/s in decifratura (circa 5,7× pi霉 veloce)
- L'apertura di un grande PDF protetto da password ora usa molta meno memoria. Il caricatore non mantiene pi霉 l'intero file di origine in memoria mentre recupera la chiave di cifratura e decifra: i documenti AES-256 recuperano ci貌 di cui hanno bisogno dal modello a oggetti analizzato, e il recupero della chiave legacy ora legge solo la coda del file anzich茅 l'intero file. Per un documento cifrato di diversi gigabyte questo elimina un picco di memoria temporaneo pari a circa il doppio della dimensione del file
Version 2.139.3
Fixed
- La riscrittura e il salvataggio tramite Direct File API sono ora molto pi霉 veloci sui documenti di grandi dimensioni. Risalvare un file di 60.000 pagine / 883 MB dopo una modifica di metadati o oggetti 猫 sceso da circa 189 secondi a circa 21 secondi, perch茅 il buffer di copia per oggetto viene ora riutilizzato invece di essere riallocato per ogni oggetto. L'apertura o la copia dello stesso file tramite Direct File API resta intorno ai 2-3 secondi
Version 2.139.2
Fixed
- Quando si salvano di nuovo documenti PDF 1.5+ caricati con flussi di oggetti, e documenti PDF 2.0 con trailer, dopo modifiche con
BeginDoc, l鈥檃lbero delle pagine resta ora valido. In precedenza, un dizionario pagina recuperato da un flusso di oggetti poteva essere ricollegato senza/Type /Page, inducendo i lettori a segnalare un oggetto non pagina nell鈥檃lbero delle pagine dopoEndDoc
Version 2.139.1
Fixed
- I documenti cifrati che combinano AES-256 con uno stream di riferimenti incrociati (eventualmente insieme a stream di oggetti compressi) ora si riaprono e si risalvano in modo affidabile. In precedenza, quando i dati di uno stream cifrato iniziavano per caso con un byte di a capo, il loader poteva leggere quello stream con un byte di disallineamento e corrompere a intermittenza il risultato della decifratura, cos矛 che un file protetto da password a volte non si apriva. Il lettore di stream ora segue esattamente il confine dei dati e questi documenti si aprono in modo coerente
Version 2.139.0
Fixed
- I documenti che usano uno stream di riferimenti incrociati insieme a stream di oggetti compressi (PDF 1.5 e successivi) ora vengono letti da un loader conforme allo standard. Riaprire un documento di questo tipo e salvarlo di nuovo mantiene intatto l'albero delle pagine e preserva i numeri di oggetto originali; il loader precedente poteva scartare l'albero delle pagine o rinumerare gli oggetti, perdendo pagine nella copia salvata
- Uno stream il cui
/Length猫 memorizzato come riferimento indiretto ora viene risolto correttamente durante il caricamento di un documento con stream di riferimenti incrociati, cos矛 il suo contenuto non viene pi霉 perso
Version 2.138.0
Fixed
- I documenti che dichiarano una versione di intestazione PDF pi霉 vecchia come
%PDF-1.3o%PDF-1.4ma che in realt脿 usano uno stream di riferimenti incrociati ora si caricano correttamente invece di aprirsi come un documento vuoto senza pagine. L'instradamento si decide dalla struttura reale dei riferimenti incrociati invece che dalla versione di intestazione dichiarata, cos矛 che anche i file molto grandi di questo tipo si aprano come previsto
Version 2.137.9
Added
- 脠 stata aggiunta l'uscita CSV per i report di preflight tramite
pfCSVinCreatePreflightReport,SavePreflightReporteCreatePreflightReportWithProfile, utilizzando colonne stabilicategory,name,status,value,specper i flussi di foglio di calcolo e di elaborazione batch - La GUI PreflightReport e la CLI HotPDFPreflight ora possono selezionare l'uscita CSV; la CLI accetta
-f csvper esecuzioni su file singolo o su directory
Version 2.137.8
Fixed
- Il percorso di decifratura del buffer AES-256 nativo 猫 stato rafforzato in modo che i chiamanti possano assegnare il risultato della decifratura allo stesso
AnsiStringche ha fornito il buffer del testo cifrato senza invalidare il puntatore di input
Version 2.137.7
Added
- 脠 stato aggiunto il supporto per stringhe page-range in base uno per le operazioni di pagina di loaded-document, inclusi
HPDFParsePageRange, gli overload di range perInsertPagesFromDocumenteExtractPagesToFile, eAppendPagesFromDocument - 脠 stato aggiunto
OnPageOperationProgressin modo che i flussi append, insert ed extract possano riportare un progresso deterministico a livello di pagina
Version 2.137.6
Added
- 脠 stato aggiunto
THotPDF.DACopyFileper flussi di file grandi che hanno solo bisogno del conteggio delle pagine e di una copia salvata byte per byte originale senza costruire il grafo degli oggetti normale completo - La demo
HugeFileBenchmarkora include una rigadirect-copy, mentre il set di operazioni predefinito copre ancora il percorso completoLoadFromFile+SaveLoadedDocument
Changed
- 脠 stata ridotta la copia in memoria nella decifratura di stream AES-256 decifrando da buffer esistenti dove possibile, inclusa la memoria di stream caricata per grandi stream di immagini cifrate
Fixed
- 脠 stato migliorato il caricamento di PDF cifrati basato su file in modo che le aperture con password non memorizzino pi霉 nella cache l'intero PDF sorgente solo per recuperare i valori grezzi del dizionario di cifratura
Version 2.137.5
Added
- 脠 stata aggiunta la modifica object-source tramite Direct File API per flussi di file di grandi dimensioni: le applicazioni possono aprire un PDF con
DAOpenFileReadOnly, ispezionare i conteggi degli oggetti e i corpi sorgente, sostituire o aggiungere i corpi degli oggetti, aggiornare le informazioni del documento e salvare una copia riscritta completa - La demo
HugeFileBenchmarkora include un'operazionedirect-rewritee documenta esecuzioni di benchmark HTML/CSV per PDF enormi solo immagine e misti testo/immagine
Changed
- Expanded Direct File API indexing to cover traditional xref tables and xref streams, including compressed object entries, so image-heavy PDFs and object-heavy PDFs can use the lightweight path
- Optimized Direct File API full rewrites by copying unchanged direct objects in source-offset order and merging contiguous ranges, greatly reducing random I/O on PDFs with hundreds of thousands of objects
Version 2.137.4
Added
- La GUI ora copre report standard text, JSON e HTML, password opzionali, profile INI files, preset integrati, single-file PDF/VT validation, embedded-report PDF output, report preview, status logging, automatic output naming e accesso rapido ai file generati
Changed
- La demo Delphi
PreflightReport猫 stata aggiornata da console sample a strumento VCL GUI interattivo per single-file preflight workflows
Removed
- 脠 stato rimosso il vecchio comportamento di avvio che creava automaticamente un sample PDF e un report quando non venivano forniti command-line arguments
Version 2.137.3
Added
- La validazione PDF/VT ora riconosce le propriet脿 XMP scritte come attributi RDF oltre al testo degli elementi, coprendo i comuni stili di pacchetto
pdfvtid:GTS_PDFVTVersion,pdfvtid:GTS_PDFVTModDateexmp:ModifyDate
Fixed
- 脠 stata aggiunta copertura di regressione Delphi che mantiene il rilevamento dei metadati PDF/VT in stile attributo separato dai restanti controlli PDF/VT strutturali
Version 2.137.2
Changed
- La validazione dei report preflight incorporati 猫 stata migliorata in modo che i PDF sorgente che terminano legittimamente con un avanzamento di riga finale dopo
%%EOFcontinuino a corrispondere alla loro impronta memorizzata
Fixed
- I profili preflight salvati come UTF-8 con BOM ora vengono caricati correttamente quando la prima riga 猫 un'intestazione di sezione
- 脠 stata rafforzata la decodifica degli escape delle stringhe letterali PDF, migliorando la validazione delle password e l'output di copia non cifrata per PDF cifrati con voci owner o user con escape
Version 2.137.1
Changed
- La sicurezza del parser CFF 猫 stata estesa ai controlli diretti su byte-array, ripristinando la posizione del reader dopo input malformato e cancellando lo stato di layout obsoleto in caso di controlli falliti
Fixed
- Il loader di stream CFF compatibile con il wrapper C++Builder 猫 stato rafforzato in modo che l'input nil stream restituisca
Falsee reimposti lo stato del wrapper invece di dereferenziare lo stream
Version 2.137.0
Added
- 脠 stato aggiunto
THotPDF.ValidatePDFVTcon overload consapevoli della password per una validazione PDF/VT mirata. Il report testuale verifica la dichiarazione PDF/VT in XMP, il namespace dei metadati, la corrispondenza della data di modifica PDF/VT, il marker di base PDF/X, l'output intent, la strutturaDPartRootdel catalogo, le pagine caricabili e la coperturaDParta livello di pagina - La CLI autonoma
HotPDFPreflightora accetta--pdfvtper scrivere report di validazione.pdfvt.txtper un singolo PDF o per una scansione ricorsiva di directory
Version 2.136.8
Added
- Aggiunta copertura smoke aggiuntiva per Type 1/CFF per stream CFF e Type 1 malformati, inclusa la conservazione della posizione nello stream e la pulizia dei metadati obsoleti dopo chiamate del parser fallite
Changed
- Migliorata la gestione dei fallimenti del parser Type 1 PFB e CFF, così i controlli su stream malformati preservano la posizione di input e cancellano i metadati obsoleti invece di lasciare visibile il nome di un font precedente dopo un controllo fallito
Version 2.136.7
Changed
- Esteso il test smoke Type 1/CFF con dati CFF in memoria, dati font Type 1 ASCII, caricamento di file PFB a livello wrapper e caricamento di stream CFF a livello wrapper, per proteggere sia le superfici di integrazione Delphi sia quelle C++Builder
Fixed
- Rafforzati i punti di ingresso del parser Type 1 PFB e CFF, così i controlli basati su stream preservano la posizione dello stream del chiamante, rifiutano in sicurezza i dati malformati ed espongono i metadati di base dei font Type 1/CFF attraverso i percorsi wrapper Delphi e C++Builder
Version 2.136.6
Added
- Aggiunti demo Delphi per output testo Unicode CJK, generazione di documenti multi-pagina di grandi dimensioni, firma PFX e copertura ampliata della compressione immagini con output CCITT Group 3 1D e 2D
Version 2.136.5
Changed
- I report di preflight ora continuano quando una voce di pagina caricata non può restituire un MediaBox. Il report marca quella pagina come non disponibile invece di interrompersi, così anche alberi di pagine grandi o incoerenti producono comunque diagnostica
- Ottimizzati diversi scanner di preflight a livello byte per evitare copie ripetute dell'intera coda delle stringhe e ricerche lineari di oggetti duplicati. Il campione del limite implementativo da 10.000 pagine ora termina entro il budget di stress-test di 120 secondi
- Il runner di stress del preflight ora usa per impostazione predefinita un timeout di 120 secondi per file, e il demo PreflightReport si ricompila correttamente dopo il percorso di output consapevole del profilo
Version 2.136.4
Added
- Aggiunti un cookbook di preflight, una mappa API di preflight generata e un flusso di stress test per directory di grandi dimensioni per lo strumento da riga di comando
HotPDFPreflight. Il runner di stress isola ogni PDF dietro un timeout per file e registra evidenze JSON, Markdown, CSV, report e log
Changed
- Registrato un baseline su 1000 file contro
D:\PDFdoc\PDF-Samples: 997 superati, 1 fallito, 2 in timeout, 111.422 secondi trascorsi, 8.975 file al secondo
Fixed
- Risolto un problema di rebuild completo nell'helper di fingerprint del preflight dichiarando l'helper prima che
CreatePreflightReportlo usi, così gli strumenti console che ricompilanoHPDFDoc.pasdai sorgenti compilano correttamente
Version 2.136.3
Added
- Lo strumento CLI autonomo
HotPDFPreflightguadagna l'opzione--aggregate <file>, che scrive un riepilogo batch prodotto daTHotPDF.AggregatePreflightReportsdopo il completamento dei report per file. L'aggregato elenca ogni PDF elaborato con stato / dimensione / conteggi degli avvisi e totali
Changed
- Funziona con file singoli e scansioni ricorsive di directory, con o senza
--profile/--preset. L'aggregato viene calcolato dal corpo testuale di ogni report, così il filtro per profilo si riflette nel riepilogo - Example:
HotPDFPreflight C:\Archive -r --preset silent-actions -f json -o C:\Archive\reports --aggregate C:\Archive\Aggregate.txtscrive report JSON per ogni PDF più un singolo riepilogo batch
Version 2.136.2
Added
- The standalone
HotPDFPreflightCLI tool gains--profile <file>and--preset <name>options to filter each report through a preflight profile before writing it. Works alongside-f text|json|html,-p <password>, and-rrecursive directory walks
Changed
- The two new options are mutually exclusive (passing both, the later one wins). The preset values match what
THotPDF.GetBuiltInPreflightProfilerecognises so CI pipelines can pull a canonical configuration without staging an INI file - Example:
HotPDFPreflight C:\Archive -r --preset silent-actions -f json -o C:\Archive\reportswrites JSON reports for every PDF in the directory tree with thesilent-actionspreset applied
Version 2.136.1
Added
- The Delphi
PreflightReportdemo now acceptsprofile=<file>orpreset=<name>as an additional CLI argument to filter the report through a profile before writing it. Works alongside the existingjson/html/embedoutput format flag
Changed
- Examples:
PreflightReport.exe Input.pdf Report.txt "" text profile=tuned.iniorpreset=compact/preset=silent-actions - The preset values mirror the names recognised by
THotPDF.GetBuiltInPreflightProfileso the demo doubles as a profile testbed without having to author an INI file
Version 2.136.0
Added
- Aggiunti
THotPDF.MergePreflightProfilesper stratificare i profili. Il risultato è l'unione deduplicata di entrambi gli input (DisableCheckseDisableWarningsvengono uniti,DisableHintsè un OR logico), utile per combinare un preset comecompactcon regolazioni specifiche del progetto - Aggiunti
THotPDF.DiffPreflightProfilesper il confronto strutturale. RestituisceTruequando due profili sono equivalenti, altrimenti i parametri outOnlyInAeOnlyInBelencano le voci esclusive di ciascun lato come token separati da nuove righecheck:<name>/warn:<name>/option:hints=false
Changed
- Le due funzioni completano il ciclo di vita del profilo:
Load/GetBuiltIn/Save/Apply/Validate/Merge/Diff
Version 2.135.0
Added
- Aggiunto
THotPDF.CreatePreflightReportWithProfile, un wrapper di convenienza tutto in uno che componeCreatePreflightReport,LoadPreflightProfile,ApplyPreflightProfilee i convertitori di formato in una singola chiamata - La nuova overload accetta un PDF sorgente, una password opzionale, un file profilo opzionale e il formato di destinazione (
pfText,pfJSONopfHTML) e restituisce il corpo finale del report. Passare unProfileFilevuoto salta del tutto il passaggio del profilo, così i chiamanti possono mantenere un unico punto di invocazione indipendentemente dal fatto che abbiano o meno un profilo configurato
Changed
- Le quattro API sottostanti restano disponibili, così le catene di chiamata esistenti continuano a funzionare senza modifiche; il nuovo wrapper è puramente additivo
Version 2.134.0
Added
- Aggiunto
THotPDF.SavePreflightProfileper scrivere un recordTHPDFPreflightProfilein un file INI. Il formato di output corrisponde a quello consumato daLoadPreflightProfile, quindi le due funzioni sono inversi esatti per profili ben formati
Changed
- Abilita un flusso di lavoro 'carica preset, regola, salva': prendi un preset incorporato con
GetBuiltInPreflightProfile(v2.133.0), modifica le liste o i flag, poi salva il risultato conSavePreflightProfileper riuso futuro o condivisione tra progetti - Le sezioni prive di contenuto vengono omesse dall'output, così un profilo vuoto produce una sola riga di commento invece di tre intestazioni di sezione vuote
Version 2.133.0
Added
- Aggiunto
THotPDF.GetBuiltInPreflightProfile, che restituisce recordTHPDFPreflightProfilepronti all'uso per i flussi di lavoro comuni, così i chiamanti non devono mantenere file INI per configurazioni canoniche
Changed
- Nomi riconosciuti (senza distinzione tra maiuscole e minuscole):
defaulto stringa vuota restituiscono un profilo vuoto;compactdisattiva tutte le righeHintper report più brevi;silent-actionsdisattiva tutti gli avvisi azione PDF 1.7 sec 12.6.4 piùEmbeddedFileeRichMedia, pensato per flussi di lavoro che incorporano intenzionalmente contenuti multimediali o azioni interattive - Anche i nomi sconosciuti restituiscono un profilo vuoto, così la funzione non genera mai eccezioni per un refuso; abbinala a
ValidatePreflightProfile(v2.132.0) quando il chiamante vuole che i refusi emergano come errori
Version 2.132.0
Added
- Aggiunto
THotPDF.ValidatePreflightProfileper la verifica difensiva dei profili. La funzione percorre le listeDisableCheckseDisableWarningsdel profilo caricato e segnala ogni nome non riconosciuto dall'implementazione corrente del preflight, restituendo i nomi sconosciuti uniti da ', ' nel parametro outUnknownNames
Changed
- Utile per rilevare file di profilo creati per una versione HotPDF più nuova o più vecchia. Senza validazione, un refuso (
OpneActioninvece diOpenAction) o un controllo rinominato non disattiverebbero nulla senza avvisare - Il controllo è puramente difensivo; il profilo in sé non viene modificato. I chiamanti possono decidere se interrompere, registrare un avviso o proseguire con il profilo parzialmente efficace
Version 2.131.0
Added
- Aggiunto
THotPDF.ConvertPreflightReportToVeraPDFStyle, un convertitore che trasforma un report di preflight HotPDF in un documento JSON modellato sull'output di validazione di veraPDF:profiledi primo livello, un arrayjobscontenenteitemDetails/taskResult/validationResult, più un arrayruleViolationssottovalidationResult.details
Changed
- Stile HotPDF invece che compatibile a livello wire con veraPDF; l'obiettivo è consentire agli strumenti downstream che già consumano JSON di veraPDF di adattarsi all'output HotPDF con una rimappatura minima dei nomi dei campi, invece di dover apprendere un layout dati diverso
- Le violazioni delle regole portano lo stesso riferimento incrociato alla clausola ISO
specificationche l'output JSON nativo di HotPDF emette, così i chiamanti mantengono la tracciabilità a livello di specifica anche quando consumano il percorso in stile veraPDF
Version 2.130.0
Added
- Aggiunto
THotPDF.EmbedPreflightReportAsXMPcon due overload, con e senza un argomento opzionalePassword. La funzione scrive una copia del PDF sorgente con il report di preflight aggiunto come blocco di commenti in stile PDF, il cui payload è XMP / RDF con il namespacexmlns:hotpdf
Changed
- Ogni riga del report diventa un elemento
hotpdf:<name>. I controlli PASS / FAIL portano la severità come attributo; avvisi, hint e righe info usano i prefissiwarn,hinteinfonel nome dell'elemento - Gli strumenti consapevoli di XMP che cercano in un file i marker
xpacketpossono mostrare il report incorporato. I reader PDF continuano a ignorare i byte aggiunti perché restano fuori dal grafo degli oggetti. Si tratta di un'incorporazione XMP adatta all'archiviazione, non di un'integrazione XMP conforme alla specifica; il payload XMP non è referenziato dalla voce/Metadatadel catalogo
Version 2.129.0
Added
- Aggiunti
THotPDF.LoadPreflightProfileeTHotPDF.ApplyPreflightProfilecon un nuovo recordTHPDFPreflightProfile. I profili consentono ai chiamanti di adattare l'output del report senza rilanciare l'analisi, sopprimendo nomi specifici di controlli / avvisi o tutte le righe Hint
Changed
- I file di profilo usano un formato semplice in stile INI con sezioni
[disable-checks],[disable-warnings]e[options]. Commenti e righe vuote vengono ignorati. I profili vuoti lasciano passare il report senza modifiche
Fixed
- Dopo il filtraggio, le righe finali
SummaryeWarningsvengono ricalcolate, così le voci soppresse non contribuiscono più ai totali Failed e Warnings. Il resto del report passa invariato, quindi i convertitori JSON / HTML, l'helper diff, e le API validate / embed / aggregate continuano a funzionare sul report filtrato senza modifiche di codice
Version 2.128.2
Added
- Added a Delphi
PreflightDashboardconsole demo that scans a directory of PDFs and writes a self-contained static HTML dashboard: one<stem>.preflight.htmlper file plus anindex.htmlsummary table
Changed
- The dashboard shows total / passed / failed counts at the top and a table of every PDF with status, size, summary, and a link to the detailed report. Failed rows are highlighted; PASS and FAIL badges are colour-coded for quick scanning
- Output is a static directory of files (no HTTP server required); publish the directory to a CI artifact page, serve it from any web server, or open
index.htmldirectly in a browser
Version 2.128.1
Added
- Aggiunto
tools/validate-preflight-json.py, un'utilità Python che convalida l'output JSON di preflight HotPDF rispetto allo schema pubblicato (Docs/preflight-schema.json). Lo script riporta una riga PASS/FAIL per ogni input e termina con uno stato diverso da zero quando almeno un input fallisce la validazione, così le pipeline CI possono bloccare in base alla conformità allo schema
Changed
- La validazione è rigorosa perché lo schema dichiara
additionalProperties: falseper ogni oggetto, quindi i campi sconosciuti provocano un errore duro invece di passare inosservati. La dipendenza richiesta è il pacchetto Python standardjsonschema
Version 2.128.0
Added
- Aggiunto
THotPDF.AggregatePreflightReportsper i riepiloghi batch. La funzione accetta un array di report di preflight per file e produce un aggregato singolo che elenca lo stato pass/fail di ogni file con dimensione in byte e conteggio degli avvisi, più i totali di superati, falliti, avvisi e byte analizzati
Changed
- Si abbina naturalmente al CLI autonomo
HotPDFPreflightintrodotto in v2.125.1: esegui il CLI per produrre un report per ogni PDF, poi passa i corpi dei report aAggregatePreflightReportsper un riepilogo batch pronto per una dashboard - Gli array di input vuoti restituiscono una stringa di risultato vuota, così i chiamanti possono aggiungere l'aggregato agli altri output senza controlli speciali per directory con zero file
Version 2.127.0
Added
- Aggiunto
THotPDF.RepairPDFFromPreflightReportcon due overload, con e senza un argomento opzionalePassword. La funzione applica un sottoinsieme conservativo di riparazioni a livello byte ai PDF danneggiati: elimina i byte finali che seguono l'ultimo marker%%EOFe aggiunge un%%EOFmancante quando non ne trova nessuno
Changed
- Restituisce
Truequando è stata applicata almeno una riparazione;RepairsAppliedè un parametro out che elenca le riparazioni una per riga, così i chiamanti possono decidere se mantenere il file riparato o passare a uno strumento di recupero più pesante - Le riparazioni del grafo degli oggetti, come la ricostruzione delle tabelle xref, la correzione delle lunghezze degli stream e la sistemazione dei trailer, sono volutamente fuori ambito perché tali correzioni possono rendere meno recuperabile un file solo parzialmente riparabile. Le riparazioni di questo overload sono limitate a operazioni inequivocabilmente sicure sia sui PDF ben formati sia su quelli leggermente danneggiati
Version 2.126.1
Changed
- Pubblicato uno schema JSON formale per l'output JSON di preflight in
Docs/preflight-schema.json, conforme a JSON Schema draft 2020-12 - Lo schema documenta ogni campo di primo livello (
input,size,pdfVersion,xrefStyle), gli arraychecks/info/hints/warningse l'oggettosummary, così le pipeline consumer possono convalidare l'output JSON prima del parsing - Il topic di help ora indirizza i consumer downstream al file di schema come riferimento
Version 2.126.0
Added
- Aggiunto
THotPDF.ComparePreflightReportsper il confronto riga per riga dei report di preflight. La funzione produce un corpo simile a un unified diff, dove le righe condivise usano un prefisso di due spazi, le righe uniche diReportAusano-e le righe uniche diReportBusano+
Changed
- Si abbina naturalmente a
LoadAndValidatePreflightReport: quando una validazione di roundtrip fallisce, passa il report originale e quello corrente aComparePreflightReportsper evidenziare esattamente quali righe sono cambiate - L'algoritmo diff è una piccola scansione greedy tarata sull'output deterministico chiave/valore di
CreatePreflightReport; produce diff compatti per gli input tipici senza introdurre un'implementazione LCS generica
Version 2.125.1
Added
- Aggiunto uno strumento console Delphi autonomo
HotPDFPreflightper eseguire in batch il report di preflight su singoli file o intere directory. Lo strumento accetta i flag-odirectory di output,-f text|json|htmlformato di output,-ppassword,-rscansione ricorsiva delle directory e-vprogresso dettagliato
Changed
- I codici di uscita seguono le convenzioni CLI standard: 0 successo, 1 errore di utilizzo, 2 input non trovato, 3 uno o più PDF hanno fallito il preflight, così lo strumento può essere integrato in pipeline CI e script shell
- Ogni report viene nominato
<basename>.preflight.<ext>con l'estensione scelta in base al formato richiesto
Version 2.125.0
Added
- Aggiunto
THotPDF.LoadAndValidatePreflightReportcon due overload, con e senza un argomento opzionalePassword. La funzione estrae il report cheEmbedPreflightReportInPDFaveva aggiunto in precedenza, riesegue l'algoritmo di preflight corrente sui byte sorgente e restituisceTruequando l'InputFingerprintincorporato coincide ancora con quello appena generato
Changed
- I parametri out
OriginalReporteCurrentReportricevono entrambi i report, così i chiamanti possono fare il diff quando la validazione fallisce e identificare cosa è cambiato tra il momento in cui il report è stato incorporato e il controllo di validazione - Si abbina naturalmente a
EmbedPreflightReportInPDF: incorpora una volta durante l'archiviazione, poi valida in qualunque momento per rilevare manomissioni o modifiche accidentali
Version 2.124.2
Added
- Aggiunte due righe di fingerprint a
THotPDF.CreatePreflightReportper i controlli di stabilità CI.InputFingerprintemette un hash FNV-1a a 64 bit dei byte del PDF sorgente in 16 cifre esadecimali minuscole, subito dopo la rigaSize:.ReportFingerprintemette un hash FNV-1a a 64 bit del report assemblato, cioè tutto ciò che sta sopra la riga del fingerprint, alla fine del report
Changed
- Le pipeline CI possono confrontare i fingerprint tra esecuzioni per rilevare derive non intenzionali sia nel file di input sia nel contenuto del report senza dover analizzare ogni riga diagnostica
- Entrambi i fingerprint non sono crittografici; FNV-1a è scelto apposta per il basso overhead e per un'implementazione inline senza dipendere da un modulo di hash esterno
- L'output JSON colloca
InputFingerprintnell'arrayinfoeReportFingerprintin coda ainfo; entrambe le voci portano un campospecetichettato "FNV-1a 64-bit (non-cryptographic)"
Version 2.124.1
Added
- Aggiunte due righe diagnostiche condizionali di revisione per gli aggiornamenti incrementali a
THotPDF.CreatePreflightReport. QuandoIncrementalUpdates> 0, il report include oraRevisionStartXRefPositions(offset byte di ogni parola chiavestartxrefnel file, in ordine dal più vecchio) eRevisionXRefTargets(gli offset xref a cui punta ciascun marker), così i chiamanti possono tracciare la catena di aggiornamenti incrementali senza analizzare il file a mano
Changed
- I PDF puliti e quelli a revisione singola restano byte-stabili: le nuove righe vengono emesse solo quando viene trovato più di un marker
startxref - I riferimenti alla specifica ISO 32000-1 sec 7.5.6 vengono aggiunti nell'output JSON per i nuovi campi
Version 2.124.0
Added
- Aggiunto
THotPDF.EmbedPreflightReportInPDFcon due overload, uno con un argomento opzionalePasswordper i PDF cifrati supportati. Il metodo scrive una copia del PDF sorgente con il report di preflight aggiunto dopo l'ultimo%%EOFcome righe di commento in stile PDF - Il demo Delphi
PreflightReportguadagna un argomento CLIembedche scrive la variante incorporata insieme al report autonomo
Changed
- Il report viaggia insieme al documento nei flussi di archiviazione: editor di testo,
grepe strumenti di audit possono mostrarlo anche molto tempo dopo che il file ha lasciato la macchina originaria - I reader PDF continuano a renderizzare il documento così com'è perché i byte aggiunti restano fuori dal grafo degli oggetti; la tabella dei riferimenti incrociati e il dizionario trailer non vengono toccati
Version 2.123.1
Fixed
- Added a regression test that hand-crafts a PDF with duplicate object numbers, a malformed xref row, and an unbalanced
stream/endstreampair, then verifies that the three Phase F root-cause diagnostic lines (DuplicateObjectList,FirstMalformedXRefOffset,StreamEndStreamDelta) trigger as expected - No library behaviour change: the test fills a gap in the regression suite that previously only covered the clean and "not a PDF" cases
Version 2.123.0
Added
- Added HTML output format to
THotPDF.CreatePreflightReportandTHotPDF.SavePreflightReport. TheTHPDFPreflightFormatenum gains a third valuepfHTMLalongsidepfTextandpfJSON
Changed
- HTML output is a self-contained dashboard-style document with inline CSS, severity-coloured rows (green for PASS, red for FAIL, yellow for WARN), per-section tables for checks, hints, info, and warnings, plus a summary card. No external CSS, JavaScript, or fonts are required
- Each table row includes the ISO 32000-1 / ISO 19005 / ISO 15930 / ISO 14289 spec reference when available, matching the JSON output spec field added in v2.122.1
- HTML output is byte-safe: ampersand, less-than, greater-than, double-quote, and single-quote are escaped; UTF-8 byte sequences pass through unchanged
- The Delphi
PreflightReportdemo acceptshtmlas the fourth CLI argument to request HTML output
Version 2.122.4
Added
- Aggiunto il rilevamento dei sottoinsiemi PDF/X nei report di preflight. Quando viene rilevata una dichiarazione PDF/X, la nuova riga
Hint PDFXVersionnomina il sottoinsieme specifico (X-1a:2001,X-1a:2003,X-3:2002,X-3:2003,X-4,X-4p,X-5g,X-5pg,X-5noX-5) - Aggiunta l'estrazione della parte PDF/UA. Quando viene rilevata una dichiarazione PDF/UA, la nuova riga
Hint PDFUAPartriporta il valore dipdfuaid:partnei metadati XMP
Changed
- I riferimenti incrociati alle specifiche ISO 15930 e ISO 14289 vengono aggiunti nell'output JSON per le nuove voci hint
- I PDF puliti senza alcuna dichiarazione PDF/X o PDF/UA restano byte-stabili: i nuovi hint vengono emessi solo quando la dichiarazione sottostante viene rilevata
Version 2.122.3
Added
- Aggiunte righe diagnostiche di root cause a
THotPDF.CreatePreflightReport. Quando un PDF danneggiato attiva un conteggio di difetti, il report elenca ora dettagli azionabili
Changed
DuplicateObjectListcompare ogni volta cheDuplicateObjectNumbers> 0 e elenca fino a cinque numeri di oggetto ripetuti, così i chiamanti possono individuare quali oggetti collidonoFirstMalformedXRefOffsetcompare ogni volta cheXRefMalformedEntries> 0 e fornisce l'offset byte a 1-based della prima riga di cross-reference malformataStreamEndStreamDeltacompare ogni volta che i conteggi dei markerstreameendstreamdifferiscono e fornisce la differenza con segno, indicando quanti marker mancano o sono duplicati- I PDF puliti restano byte-stabili: le nuove righe diagnostiche vengono emesse solo quando i contatori di difetti sottostanti sono diversi da zero
Version 2.122.2
Changed
- Estesi gli avvisi azione del preflight per coprire l'intero set di azioni PDF 1.7 §12.6.4. Aggiunti 15 avvisi consultivi:
GoToRAction,GoToEAction,ThreadAction,URIAction,SoundAction,MovieAction,HideAction,NamedAction,SubmitFormAction,ResetFormAction,ImportDataAction,SetOCGStateAction,RenditionAction,TransActioneGoTo3DViewAction - Gli avvisi vengono emessi solo quando viene rilevato il token di azione corrispondente; i PDF puliti che non contengono azioni restano byte-stabili
- I riferimenti incrociati alla specifica ISO 32000-1 nell'output JSON coprono ora anche i nuovi avvisi azione
Version 2.122.1
Changed
- Esteso l'output JSON di
THotPDF.CreatePreflightReportcon riferimenti incrociati alle specifiche ISO. Ogni voce dichecks,hintsewarningsporta ora un campospecche nomina la clausola ISO 32000-1, ISO 19005, ISO 15930 o ISO 14289 per quella diagnostica - Il report in testo semplice non cambia e resta byte-stabile; il campo
speccompare solo nell'outputpfJSON - La mappatura copre ogni controllo, hint e avviso emesso dal report fino alla v2.122.0, così i consumer JSON possono indirizzare le segnalazioni alla clausola di specifica corrispondente senza una tabella di ricerca esterna
Version 2.122.0
Added
- Aggiunto output JSON leggibile dalla macchina a
THotPDF.CreatePreflightReporteTHotPDF.SavePreflightReport. La nuova enumTHPDFPreflightFormatespone i valoripfText(percorso testo semplice predefinito) epfJSON(documento JSON adatto alla CI) - I nuovi overload consapevoli del formato accettano il parametro
Formatmantenendo byte-stabili i vecchi overload testuali. Le applicazioni esistenti continuano a funzionare senza modifiche al codice
Changed
- L'output JSON raggruppa le voci nei campi di primo livello
input,size,pdfVersionexrefStyle, più gli arraychecks,info,hints,warningse un oggettosummarycon i contatorifailed,warningseresult - Il codificatore JSON integrato escape
",\e i byte di controllo, preservando le sequenze di byte UTF-8 senza richiedere una libreria JSON esterna - Il demo Delphi
PreflightReportaccetta un quarto argomento CLIjsonper richiedere l'output JSON per un PDF in input
Version 2.121.36
Added
- Aggiunti gli avvisi consultivi
PDFAWithEncryption,PDFAWithJavaScriptePDFA1WithTransparency, che scattano quando un documento dichiarato PDF/A contiene anche crittografia, JavaScript o marker di trasparenza vietati da PDF/A-1
Changed
- Report di preflight arricchiti con hint sui marcatori di conformità. I report ora espongono le righe
Hint PDFAClaimed,Hint PDFAPart,Hint PDFAConformance,Hint PDFXClaimed,Hint PDFUAClaimed,Hint TaggedPDFeHint HasTransparencyper gli strumenti downstream - Le righe hint non incrementano mai il contatore Failed e gli helper restano consultivi; non sostituiscono un motore completo di conformità PDF/A, PDF/X, PDF/UA o ISO 32000
Version 2.121.35
Added
- Aggiunto il controllo pass/fail
FontsHaveEmbeddedProgramsche verifica che sia presente almeno un/FontFile,/FontFile2o/FontFile3quando vengono dichiarate risorse font - Aggiunto il controllo pass/fail
AnnotationCountConsistentche verifica che la somma dei conteggi delle annotazioni widget e link non superi il conteggio complessivo delle annotazioni
Changed
- Report di preflight arricchiti con diagnostica sull'integrità delle risorse del contenuto. I report ora includono i conteggi di dizionario risorse, font, programmi font incorporati, image XObject, form XObject, ColorSpace, annotazioni, widget e link
- I report ora includono i conteggi di utilizzo della catena di filtri per
FlateDecode,DCTDecode,CCITTFaxDecode,JBIG2Decode,LZWDecode,ASCIIHexDecode,ASCII85Decode,RunLengthDecodeeJPXDecode
Version 2.121.34
Changed
- Report di preflight arricchiti con diagnostica sul tipo di root del trailer. I report ora verificano che il riferimento indiretto
/Rootdel trailer punti a un oggetto dichiarato come/Type /Catalog
Version 2.121.33
Changed
- Report di preflight arricchiti con diagnostica sull'ID del trailer. I report ora contano le voci stringa esadecimale nell'array
/IDdel trailer e verificano che l'identificatore del file sia presente come coppia valida di due voci quando viene fornito un array ID
Version 2.121.32
Changed
- Report di preflight arricchiti con diagnostica sui riferimenti indiretti del trailer. I report ora mostrano i riferimenti agli oggetti
/Roote/Infodel trailer e verificano che gli oggetti referenziati siano definiti nel file
Version 2.121.31
Changed
- Report di preflight arricchiti con diagnostica sulla copertura delle lunghezze degli stream. I report ora contano le voci
/Lengthdegli stream e verificano che gli stream rilevati abbiano voci di lunghezza disponibili
Version 2.121.30
Changed
- Report di preflight arricchiti con diagnostica sui marker di revisione. I report ora contano i marker
%%EOFe le sezionistartxref, verificano che i conteggi siano bilanciati e controllano che l'ultimo markerstartxrefcompaia prima dell'ultimo marker EOF
Version 2.121.29
Changed
- Report di preflight arricchiti con diagnostica sulla coerenza dell'albero delle pagine. I report ora includono il
/Countdichiarato dall'albero pagine e controlli pass/fail che lo confrontano, insieme agli oggetti pagina contati, con le pagine caricate da HotPDF
Version 2.121.28
Changed
- Report di preflight arricchiti con diagnostica sulle righe della tabella xref. I report ora includono i conteggi di sottosezioni xref, voci, voci libere, voci in uso e righe malformate, più controlli pass/fail sulla sintassi delle righe xref e sul fatto che la copertura xref raggiunga il numero di oggetto più alto
Version 2.121.27
Changed
- Report di preflight arricchiti con il conteggio limitato delle coppie nome PDF e controlli di coerenza aggiuntivi. I report ora distinguono gli oggetti catalogo, albero pagine e pagina; verificano che i numeri di oggetto siano univoci; e controllano se il trailer
/Sizecopre il numero di oggetto più alto e se il trailer/Rootè presente
Version 2.121.26
Changed
- Migliorata la diagnostica degli oggetti e del trailer nel report di preflight. I report ora includono i conteggi delle definizioni di oggetti indiretti, il numero di oggetto più alto, il conteggio dei numeri di oggetto duplicati, i controlli bilanciati
stream/endstreame i dettagli del trailer per/Size,/Root,/Info,/IDe/Encrypt
Version 2.121.25
Changed
- Migliorati
THotPDF.CreatePreflightReporteTHotPDF.SavePreflightReportcon diagnostica più profonda sui riferimenti incrociati. I report ora verificano che il marker finale%%EOFsia vicino alla fine del file, analizzano l'offset dell'ultimostartxref, identificano se punta a una tabella xref o a uno stream xref e includono i conteggi di tabella xref, stream xref, object stream, trailer, aggiornamenti incrementali e linearizzazione
Version 2.121.24
Changed
- Estesi gli helper del report di preflight con overload consapevoli della password e diagnostica più ricca. I report ora includono la versione dell'header PDF, lo stile xref, le voci
MediaBoxdelle pagine caricate risolte, il conteggio dei campi modulo, il conteggio degli stream, i flag di presenza delle funzionalità, gli avvisi su JavaScript / azioni / allegati multimediali, i totali degli avvisi e i riepiloghi pass/fail per i file danneggiati. Il demo DelphiPreflightReportaccetta un argomento password opzionale per i PDF cifrati supportati
Version 2.121.23
Added
- Aggiunti helper di report di preflight a livello di libreria con
THotPDF.CreatePreflightReporteTHotPDF.SavePreflightReport. Le applicazioni possono ora generare un riepilogo testuale per un PDF in input che copre l'header, il marker EOF,startxref, il trailer o lo stream XRef, il numero di pagine caricabili, lo stato di crittografia, il catalogo, l'albero pagine, l'oggetto pagina, il box pagina, il dizionario informazioni, il riferimento root, il conteggio degli oggetti indiretti e lo stato complessivo pass/fail. Il demo DelphiPreflightReportora usa direttamente queste API
Version 2.121.22
Added
- Aggiunto un demo console Delphi
PreflightReportche crea un PDF di esempio e scrive un report testuale con controlli strutturali leggeri, inclusi header PDF, marker EOF, numero di pagine caricabili, stato di crittografia, catalogo, albero pagine, box pagina e dizionario informazioni del documento. Il flusso mantieneAutoLaunchdisattivato e può anche analizzare un PDF di input esistente da riga di comando
Version 2.121.21
Added
- Aggiunto un demo console Delphi
SearchAndSelectche costruisce un report, cerca righe di testo controllate e marca ogni termine corrispondente con annotazioni PDF highlight e/QuadPoints. Il campione mantieneAutoLaunchdisattivato, quindi è adatto all'uso da riga di comando e alla validazione automatizzata
Version 2.121.20
Added
- Aggiunto il caricamento di password per PDF Standard cifrati RC4-40 e RC4-128. Le applicazioni possono ora chiamare
LoadFromFileoLoadFromStreamcon una password, oppure chiamareDecryptLoadedDocumentdopo il caricamento, quindi salvare una copia del documento caricato non cifrata conSaveLoadedDocument. Il nuovo demo console DelphiDecryptPDFcrea un campione protetto da password e scrive una copia decifrata senza avviare un visualizzatore PDF
Version 2.121.19
Added
- Aggiunto un demo console Delphi
Printerche genera un preset PDF pronto per la stampa. Il campione scrive/ViewerPreferencesorientate alla stampa, vociBleedBoxeTrimBoxdella pagina, flag delle annotazioni stampabili e una ExtGState di controllo stampa senza avviare un visualizzatore PDF né inviare un lavoro a una stampante fisica
Version 2.121.18
Added
- Aggiunto un demo console Delphi
ConvertToche converte grafica sorgente supportata in file PDF di output. Il flusso crea file PDF separati da input JPEG, BMP, TIFF ed EMF conAutoLaunchdisattivato, rendendo il campione adatto a controlli da riga di comando e automatizzati
Version 2.121.17
Added
- Aggiunti helper per le operazioni sulle pagine caricate con
InsertPagesFromDocument,ExtractPagesToFileeMovePage. Le applicazioni possono ora inserire pagine da un altro documento caricato, estrarre pagine selezionate in un nuovo PDF e riordinare le pagine caricate mantenendo salvataggi successivi e chiamate di estrazione nell'ordine aggiornato delle pagine. Il demo DelphiPageOperationsmostra il flusso di inserimento, estrazione e riordino senza avviare automaticamente un visualizzatore PDF
Version 2.121.16
Added
- Estesa la modifica dei campi AcroForm caricati con
RemoveFormFieldeFlattenFormFields. Le applicazioni possono ora rimuovere i campi caricati per indice o nome, oppure appiattirli in contenuto statico di pagina rimuovendo l'albero AcroForm interattivo e le annotazioni widget. Il demo DelphiFormFieldsora mostra descrizioni, rimozione e appiattimento senza avviare automaticamente un visualizzatore PDF
Version 2.121.15
Fixed
- Aggiunta la ricerca del titolo dei segnalibri caricati con
THotPDF.FindLoadedBookmarkPageIndex. Le applicazioni possono ora caricare un PDF esistente, cercare l'albero outline per titolo del segnalibro e risolvere le destinazioni corrispondenti/Desto GoTo locali in indici di pagina a base zero
Version 2.121.14
Added
- Aggiunto
THPDFPage.AddTextWatermarkper disegnare filigrane testuali trasparenti ruotate su pagine generate o caricate. Il nuovo demo DelphiWatermarkcrea un PDF sorgente, lo carica, applica la filigrana a ogni pagina e salva il documento modificato
Version 2.121.13
Added
- Aggiunta l'ispezione della descrizione dei campi AcroForm caricati con
GetFormFieldDescription. Le applicazioni possono ora leggere il testo tooltip/TUdi un campo caricato per indice o nome, insieme ai valori del campo, alle opzioni, allo stato di sola lettura e alle operazioni di rinomina
Version 2.121.12
Fixed
- Aggiunta l'ispezione delle opzioni dei campi di scelta caricati con
GetFormFieldOptionCounteGetFormFieldOptionValue. Le applicazioni possono ora caricare un campo esistente combo box o list box, enumerare i valori/Optconsentiti e continuare a usare lo stesso flusso di aggiornamento e salvataggio dei moduli caricati