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

  • HPDFParsePDFDate Questa versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati+HH’mm, -HH’mm, or ZQuesta versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati TDateTime; HPDFFormatPDFDate Questa versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati D:YYYYMMDDHHmmSS+00’00
  • GetLoadedExtGStateInfo reads LW / LC / LJ / ca / CA Questa versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati GetLoadedShadingCount / GetLoadedShadingName and GetLoadedPatternCount / GetLoadedPatternName enumerate the /Shading and /Pattern resource sub-dictionaries
  • ReplaceLoadedPage Questa versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati SwitchLoadedPages exchanges two pages, ReverseLoadedPages Questa versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati ExtractLoadedPagesToPDF Questa versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati GetLoadedPageInheritedBox Questa versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati
  • GetLoadedFileSpecInfo Questa versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati GetLoadedEmbeddedFileMIME returns the /Subtype, GetLoadedEmbeddedFileChecksum returns the /Checksum digest, and THPDFNameTreeType + GetLoadedNameTreeRootCount Questa versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati
  • HPDFEnablePerMonitorDPI dynamically enables per-monitor DPI awareness; THPDFBackgroundRenderer Questa versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati GetLoadedPageContentStreamCount reports whether /Contents Questa versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati GetLoadedXMPValue Questa versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati GetLoadedDocumentReport Questa versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati

Version 2.414.0

Aggiunto

  • THPDFActionBuilder.URIWithIsMap Questa versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati /IsMap true Questa versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati URI Questa versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati /URI string
  • AddLoadedCaretAnnotationEx Questa 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 elencati
  • GetLoadedAnnotationDA Questa versione aggiunge il comportamento e il supporto API descritti tramite i simboli elencati /DA Questa 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

  • ActivateLoadedLinks turns 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

  • THPDFViewerModel memorizza, ritaglia, enumera, rimuove e cancella le evidenziazioni persistenti delle aree di pagina senza modificare il PDF
  • THPDFViewer aggiunge una modalità di interazione con evidenziazione con trascinamento marquee catturato, recupero delle coordinate PDF sensibile alla rotazione, colore configurabile e callback OnMarqueeSelect

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

  • THPDFViewerModel crea 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

  • THPDFPageLayout ora supporta i layout di copertina a doppia pagina PDF 1.5 plTwoPageLeft e plTwoPageRight con negoziazione automatica della versione e fallback alla versione rigorosa

Fixed

  • BeginDoc ora preserva il layout di pagina selezionato dal chiamante invece di sostituirlo sempre con plOneColumn

Version 2.404.0

Added

  • THPDFViewerModel crea istantanee sensibili alla rotazione di aree delimitate di pagine PDF senza allocare una bitmap dell'intera pagina

Version 2.403.0

Added

  • THPDFViewerModel converte 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

  • THPDFViewer aggiunge 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

  • THPDFViewer aggiunge 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

  • THPDFViewer disegna o stampa la vista corrente sensibile alla rotazione con adattamento deterministico che preserva le proporzioni e posizionamento centrato

Version 2.398.0

Added

  • THPDFViewerModel crea 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

  • THPDFViewerModel salva 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.ResetView ripristina 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

  • THPDFViewer e THPDFViewerModel aggiungono 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

  • THPDFViewerModel può 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

  • THPDFLoadedFormField ora espone i flag di campo, MaxLen, indice di pagina, limiti del widget e gli stati comuni Required, NoExport, Multiline e Password
  • GetLoadedFormFieldMaxLength fornisce l'accesso diretto indicizzato ai limiti di lunghezza del campo di testo caricato

Version 2.392.0

Added

  • SetDocumentAttachmentMetadata rinomina gli allegati incorporati a livello di documento e aggiorna le loro descrizioni prima della serializzazione

Version 2.391.0

Added

  • ExtractLoadedPagesTextToStream trasmette il testo selezionato della pagina caricata come UTF-8 con separatori personalizzati e output BOM opzionale
  • THPDFViewerModel aggiunge il rilevamento dei clic sui campi modulo e la navigazione deterministica da tastiera tra i widget di pagina
  • THPDFSignatureInfo.CertificateTimeValidity riporta le classificazioni di validità legate al certificato e al tempo di firma

Fixed

  • I campi modulo caricati senza riferimenti inversi del widget /P possono ora essere mappati tramite gli array di annotazioni della pagina

Version 2.390.0

Added

  • THPDFWatermarkTemplate.MakeCurve e THPDFPage.AddCurveWatermark aggiungono 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

  • InsertLoadedBlankPage inserisce una pagina vuota con dimensioni definite dal chiamante in una posizione esatta del documento caricato
  • ExtractLoadedPagesText aggrega il testo da un intervallo di pagine a base uno con un separatore definito dal chiamante
  • GetLoadedFormFieldNameValuePairs e SetLoadedFormFieldNameValuePairs forniscono lo scambio di moduli in batch name=value tramite TStrings
  • CMapResourcePath supporta 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 DeletePages rimuove 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 THPDFMergeOptions per copiare strutture ricorsive, registrare i campi AcroForm importati e rinominare in modo deterministico i nomi dei campi in conflitto
  • Il nuovo AddLoadedRadioButton crea un vero campo radio principale con widget figli, valori di esportazione condivisi e stati di aspetto on/off completi
  • Il nuovo SearchLoadedNext fornisce una ricerca di corrispondenza successiva locale alla pagina senza stato, mentre GetLoadedOutlineEntries restituisce 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 THPDFLoadedDocumentFacade espone 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 PrefetchLoadedPages esegue 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
  • CancelLoadedPagePrefetch arresta il thread di lavoro e IsLoadedPagePrefetchActive ne 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 RenderLoadedPageToBitmapCached mentre è in esecuzione un prefetch

Version 2.386.0

Added

  • Il nuovo FlattenLoadedAnnotations disegna 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 RenderLoadedPageRegionToBitmap rasterizza 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 GenerateLoadedPageThumbnails esegue 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
  • GetLoadedPageThumbnailSize legge le dimensioni in pixel di una miniatura incorporata e ClearLoadedPageThumbnails rimuove le miniature dalle pagine selezionate

Version 2.383.0

Added

  • EnumLoadedPageElements ora 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/Q e le trasformazioni cm, 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

  • THPDFPrintOptions ottiene i campi Duplex (simplex, lato lungo, lato corto), PaperBin e PrintQuality che vengono inseriti nella modalità del dispositivo di stampa prima dell'avvio del lavoro; viene ora applicato anche un valore Orientation esplicito
  • Il nuovo HPDFGetInstalledPrinters elenca le stampanti di sistema e HPDFGetPrinterCapabilities riporta il supporto duplex e a colori di una stampante, il numero massimo di copie, i cassetti della carta (con i codici accettati da PaperBin) e le risoluzioni supportate

Version 2.381.0

Added

  • Il nuovo CopyLoadedOutlinesFromDocument unisce 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

  • GetLoadedBookmarkPageIndex ora 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 ImposeLoadedPagesNUp dispone 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 ImposeLoadedPagesBooklet produce 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

  • SaveLoadedPagesAsImages ottiene due formati TIFF: ifTIFF scrive un file TIFF a pagina singola per pagina, e ifTIFFMulti aggrega 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 /OC e gli XObject che portano una voce /OC vengono 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, GetLoadedOptionalContentGroupVisible e SetLoadedOptionalContentGroupVisible per 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, gs e sh in precedenza perdevano i relativi nomi operando con prefisso barra e saltavano l'oggetto in modo silenzioso
  • L'operatore cm e i valori /Matrix del 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, RegisterStitchingFunction e RegisterPostScriptFunction creano 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)
  • RegisterPostScriptFunction convalida 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 RegisterSeparationFunc crea 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 /Encode e accetta array /Bounds a 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 /Separation e /DeviceN memorizzate 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 voce DA dell'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 fringe e la voce RD dell'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 rotation e la voce Rotate dell'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, replyType e le voci IRT e RT dell'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, protected o nonInteractive

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 justification e tail di FreeText tramite le voci Q e IT dell'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'ortografia leaderExtend utilizzata 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" o presence="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" e access="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 che ApplyXFAAsAcroForm e FlattenLoadedXFA preservino 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 BorderStyleAlt delle annotazioni di collegamento tramite l'array Border dell'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-color per le annotazioni di linea, quadrato, cerchio, poligono, polilinea e redazione tramite l'array di colori IC dell'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, style e intensity

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 dizionari Popup delle 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 coords di 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 / end complete, 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 a DuplicateLoadedPage, AddLoadedBlankPage, SetLoadedPageRotationValue e GetLoadedPageBoxRect, 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
  • GetLoadedEncryptionMethod restituisce il nome del cifrario (RC4-40 / RC4-128 / AES-128 / AES-256), GetLoadedFileStructureInfo aggrega linearizzazione / flusso di oggetti / tipo xref in una sola chiamata, LoadedSourceFileSize è una proprietà e SetLoadedPDFVersion aggiorna la versione
  • StampLoadedPageImage e StampLoadedPageImageFromFile incorporano un Image XObject JPEG (logo / immagine della firma / codice QR) su una pagina caricata in corrispondenza di un rettangolo specificato, InsertLoadedText disegna un blocco di testo a riga singola e GetLoadedPageContentLength restituisce il conteggio dei byte decodificati
  • THPDFPrintOptions ottiene i campi IgnoreHardMargin (compensa i margini fisici della stampante in modo che il contenuto non venga ritagliato) e AutoRotate (le pagine con orientamento orizzontale vengono stampate automaticamente in orizzontale)
  • SaveLoadedPagesAsImages ottiene BMPPixelFormat / BMPMonochrome (esportazione monocromatica / a 8 bit) e JPEGScale (decodifica JPEG sottocampionata a 1 / 2 / 4 / 8 per miniature veloci)
  • CompressLoadedDocument comprime con zlib ogni flusso non compresso nel grafo degli oggetti caricati e scrive /Filter /FlateDecode, riducendo le dimensioni dell'output

Fixed

  • StampLoadedPageText e StampLoadedPageImage ora decomprimono in modo trasparente i flussi di contenuto FlateDecode prima di aggiungere gli operatori — in precedenza, l'applicazione di un timbro su un /Contents compresso corrompeva silenziosamente il payload zlib e il testo/immagine aggiunto scompariva

Version 2.347.0

Added

  • AddLoadedOutline crea un nuovo segnalibro su un PDF caricato a qualsiasi livello di annidamento (ParentIndex = -1 per 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 crearli
  • SetLoadedOutlineDestination e SetLoadedOutlineURI riscrivono la pagina di destinazione di un segnalibro esistente o la impostano su un'azione URI
  • ResolveLoadedNamedDestination converte una stringa di destinazione denominata in un indice di pagina a base zero, e AddLoadedNamedDestination registra un nuovo ancoraggio nell'albero /Names /Dests del documento caricato
  • GetLoadedBookmarkPageIndex è 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 /ItalicAngle oltre al nome /BaseFont, in modo che i tipi di carattere con prefisso subset il cui nome non porta il suffisso -Bold vengano comunque visualizzati con lo spessore corretto

Version 2.344.0

Added

  • GetLoadedTrapped legge la chiave /Trapped dal 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 trapping
  • GetLoadedDocumentMetadataXML restituisce i byte grezzi del flusso di metadati XMP in modo che i documenti PDF/A il cui dizionario Info è assente possano comunque esporre dc:title / dc:creator / xmp:CreateDate
  • GetLoadedCollectionInfo legge il nome /Collection di un Portfolio PDF (l'albero dei nomi EmbeddedFiles riporta ancora la lista dei file)
  • GetLoadedOutlineChild scende di un livello nell'albero dei segnalibri, restituendo il figlio /First di una voce della struttura di livello superiore, rendendo visibili i segnalibri di capitoli / sottocapitoli annidati
  • RotateLoadedPages ruota ogni pagina in un intervallo di un angolo specificato (accumulandosi sulla proprietà /Rotate esistente), la controparte in batch della rotazione per singola pagina
  • SetLoadedPageBoxForRange imposta un riquadro di pagina (Media/Crop/Bleed/Trim/Art) per ogni pagina in un intervallo in una sola chiamata
  • GetLoadedViewerPreferences ora legge anche HideWindowUI e CenterWindow, 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* n applica ora il ritaglio: l'operatore n compila il percorso in sospeso e chiama SelectClipPath invece di scartare sia il percorso che il ritaglio in sospeso, in modo che i ritagli di rettangoli / contenitori scritti come re ... W n non lascino più sfuggire il loro contenuto oltre il limite
  • SetMiterLimit viene 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 glifo d1 precedente non propaghi la sua soppressione del colore in un glifo d0

Added

  • Gli operatori ri (rendering intent) e i (flatness) vengono ora consumati e memorizzati nello stato grafico (campi RenderingIntent / Flatness), mentre in precedenza venivano saltati silenziosamente

Version 2.342.0

Added

  • L'operatore della modalità di rendering del testo Tr viene 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 di Tr più 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 / EMC e le varianti di proprietà DP / MP mantengono ora un contatore di profondità sul renderer, prerequisito per la successiva valutazione della visibilità OCG / OCMD; gli operatori di compatibilità BX / EX mantengono 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 v e y sono 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
  • DrawTextRun rispetta ora gli operatori Tz (ridimensionamento orizzontale del testo), Tw (spaziatura delle parole, applicata al glifo di spazio) e Ts (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

  • SearchLoadedPageTextWholeWord filtra le corrispondenze di sottostringhe prodotte da SearchLoadedPageText limitandole 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 ricerca
  • GetLoadedSearchHitRect comprime 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

  • ExtractLoadedPageTextColumns ricostruisce 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 di ExtractLoadedPageTextLayout che in precedenza dichiarava il rilevamento delle colonne fuori portata
  • THPDFPageElement ora contiene un BaselineRole (brNormal / brSuperscript / brSubscript) popolato da EnumLoadedPageElements: 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 /ImageMask vengono 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) e d (LineDash array + phase) creando una penna geometrica tramite ExtCreatePen invece del precedente CreatePen(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/ExtGState viene ora consumato per LW / LC / LJ / ML / ca / CA e 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 (ALTERNATE rispetto a WINDING) prima di SelectClipPath, 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 /Indexed sul lato rendering limita ora HiVal all'intervallo [0..255] prescritto dalle specifiche, chiudendo un vettore di sovraccarico di lettura del buffer in cui un HiVal malformato consentiva a nComps × indexHigh di superare un conteggio di byte a 32 bit e leggere oltre la tabella di ricerca

Added

  • AttachLoadedAnnotationMeasure scrive 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 /Scale e 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 HPDFEvalTintTransform risolve 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 di Separation / DeviceN producono 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) e Lab (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 ICCBased sul 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 Separation e DeviceN sul 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 / SCN sono 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 HPDFResolveColor con i record estesi THPDFColorSpaceFamily e THPDFCIEParams, in sostituzione della logica ad-hoc per singolo spazio

Version 2.332.0

Added

  • RenderSignatureFieldAppearance disegna 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 set THPDFSignatureDisplayOptions come comodo wrapper intorno a AttachSignatureFieldAppearance
  • EnumerateSystemCertificates scorre un archivio certificati di Windows (in genere MY / ROOT / CA) tramite Crypt32.dll caricata 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 DigestMethods che accetta già SHA-256 / SHA-384 / SHA-512, eliminando qualsiasi percorso di firma SHA-1

Version 2.331.0

Added

  • RenderLoadedPageToDC disegna una pagina direttamente nel contesto di dispositivo fornito dal chiamante (tela della stampante, superficie fuori schermo, TCanvas personalizzato), eliminando il passaggio intermedio in bitmap per i flussi di stampa e ad alto DPI
  • RenderLoadedPageToClipboard inserisce 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 direttamente
  • PrintLoadedDocument con un record THPDFPrintOptions gestisce la stampante VCL TPrinter tramite 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

  • GetLoadedPageLabel legge l'intervallo /PageLabels /Nums che copre un determinato indice di pagina, restituendo il codice dello stile, il prefisso e il numero iniziale — la controparte di lettura di SetLoadedPageLabel, consentendo di ispezionare e gestire nel ciclo completo anche etichette non create direttamente dal chiamante
  • StitchLoadedPageSideBySideEx esegue l'unione affiancata di 2 pagine con una spaziatura orizzontale configurabile e un fattore di scala della pagina sorgente, laddove il legacy StitchLoadedPageSideBySide era impostato su mezza larghezza senza alcuno spazio

Version 2.329.0

Added

  • AddLoadedRubberStampAnnotation con un enum THPDFRubberStampIcon che 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 personalizzato
  • SetLoadedAnnotationCloudyBorder trasforma un'annotazione Quadrato / Cerchio / Poligono in un bordo nuvoloso scrivendo /BE /S /C /I più l'array di colori interni /IC
  • SetLoadedLineAnnotationCaps imposta gli stili /LE per la fine della linea (punta di freccia) per le annotazioni Linea / Polilinea dal nuovo enum THPDFLineEndStyle (None / OpenArrow / ClosedArrow / Butt / ROpenArrow / RClosedArrow / Slash / Diamond)

Version 2.328.0

Added

  • EnsureLoadedFieldAppearanceStream genera un Form XObject /AP /N per un campo AcroForm esistente a partire dalle sue proprietà /DA + /V + /Rect, consentendo ai visualizzatori che ignorano /NeedAppearances di renderizzare comunque il valore del campo senza passare per Acrobat
  • ApplyLoadedFieldValidation collega un trio di script Formato / Pressione tasti / Convalida a un campo utilizando gli helper Acrobat AF*, 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 per AFNumber_Format / AFDate_FormatEx / AFRange_Validate
  • ApplyLoadedFieldCalculation collega uno script AFSimple_Calculate in 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 con HPDF_NO_MASK) e vi applica sopra il testo sostitutivo, integrando la funzione a livello di byte ReplaceLoadedPageText nei 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 GetLoadedPageTextInRegion concatena 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”
  • SearchLoadedFirst in stile cursore restituisce la prima corrispondenza come un singolo record THPDFTextMatch, consentendo ai chiamanti di scorrere i risultati senza gestire un intero array di corrispondenze

Version 2.326.0

Added

  • Proprietà MeasurementUnit a livello di documento (muPoints / muPixels / muInches / muMM / muCentimeters / muTwips), in modo che ogni coordinata di creazione di alto livello venga convertita in punti PDF tramite ToPDFUnit / 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 AddTextWatermarkEx che combina la sostituzione dei segnaposto, coordinate sensibili all'unità e un record THPDFWatermarkBase unificato (angolo, opacità, preimpostazioni di posizione)
  • Helper di pagina per filigrane di forme: AddRectangleWatermark, AddEllipseWatermark, AddLineWatermark e AddPolygonWatermark, ciascuno dei quali racchiude le primitive di tracciato in una coppia di stati grafici q/Q con trasparenza fill/stroke registrata
  • Record unificato THPDFWatermarkTemplate con factory MakeText / MakeRectangle / MakeEllipse / MakeLine / MakePolygon più un tipo composito THPDFWatermarkTemplateArray
  • Filigrana su documenti caricati: StampLoadedPageText e StampLoadedPagesText aggiungono un blocco di testo trasparente e ruotato alle pagine esistenti, rispettando la proprietà MeasurementUnit e lo stesso set di segnaposto; StampLoadedPagesComposite applica un intero array di modelli (testo + forme) a un intervallo di pagine
  • Controllo dell'ordine Z sui timbri dei documenti caricati: Underlay = True antepone il flusso della filigrana prima del /Contents esistente tramite la forma ad array, in modo che la filigrana venga disegnata dietro il contenuto della pagina
  • EnumLoadedPageElements restituisce blocchi di testo (glifi aggregati per linea di base + font) e posizionamenti di Image XObject come record THPDFPageElement con 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 TMetafile tramite GetLoadedPageMetafile mediante il nuovo percorso THPDFPageRenderer.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 colori TRIVERTEX a una chiamata RegisterAxialGradient e 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 chiave pdfmark ed 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_GRADIENTFILL como 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 + /Contents in letture mobili da 256 KB, calcola l'hash delle due finestre dell'intervallo di byte tramite HPDFCMSSHA256StreamRanges, 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 memoria Pos() + Move()

Version 2.321.0

Added

  • Dizionari di utilizzo dei gruppi di contenuto opzionali: SetOptionalContentGroupUsage collega una voce /Usage a 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 categorie View / Print / Export scrivono lo stato <Category>State = ON/OFF; Zoom scrive un valore reale accoppiato Min; Language / Creator scrivono valori di tipo stringa
  • Copia del sottoalbero della struttura: THPDFDocOutlineObject.CopySubtree clona 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 da MoveTo) e MoveTo (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 / /Count su ogni antenato interessato)

Version 2.320.0

Aggiunto

  • Nested optional-content /Order tree: BeginOptionalContentOrderGroup / AddLayerToOptionalContentOrder / EndOptionalContentOrderGroup Dettagli 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 /OCGs Dettagli 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 (rilevato BeginPath, non ancora raggiunti EndPath/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 RegisterOptionalContentRadioGroup dichiara 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 / InsertAfter inseriscono un nuovo fratello nella lista doppiamente collegata della struttura esistente in una posizione arbitraria, completando gli helper esistenti AddChild (aggiunta in coda) e AddChildFirst (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 JBIG2Benchmark genera quattro PDF dalla stessa scansione sintetica di tre pagine, uno per ciascuna configurazione di THPDFJBIG2Options (senza perdita per immagine, LossyLevel=5 per 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 /JBIG2Globals e l'accumulatore viene ripristinato, avviando un nuovo flusso di globali per il lotto successivo; rispecchia il riversamento basato su TotalWidth di 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 esistenti UseSymbolDictionary + UseGlobalSegments + fallback nativo), le immagini consecutive a 1 bit icJBIG2 condividono un dizionario dei simboli in memoria in crescita e un flusso indiretto /JBIG2Globals, invece di emettere un dizionario per ciascuna immagine; il nuovo THPDFJBIG2SymbolDictionary conserva il set di glifi persistente con la stessa corrispondenza con/senza perdita usata dall'encoder per immagine; la nuova funzione smoke_jbig2_accum_decode verifica 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 /JBIG2Globals invece di emetterne uno proprio; il nuovo fumo smoke_jbig2_globals_multi copre 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_SETTEXTJUSTIFICATION e EMR_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; SETMITERLIMIT e SETROP2 hanno 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

  • HPDFCMSSHA256StreamRanges elabora ora le due finestre PDF /ByteRange direttamente da un TStream in blocchi da 256 KB, consentendo di calcolare l'hash di PDF firmati multi-GB senza dover prima copiare l'intero file in una AnsiString; colma il divario con la funzione CalcHash basata su flusso di llPDFLib, che la funzione esistente in memoria HPDFCMSSHA256ByteRanges non poteva eguagliare per input molto grandi

Version 2.310.0

Changed

  • THPDFJBIG2Options ora 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; impostare LossyLevel = 0 o Lossless = True per 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.AddChildFirst in 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 pmUseOC a THPDFPageMode in 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.AddTextAnnotation in 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.OutputStream tramite l'assegnazione di nil ora ripristina il normale output su FileName invece 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_EXTSELECTCLIPRGN per il ritaglio di copia, intersezione ed esclusione, mantenendo EMR_SETWORLDTRANSFORM, EMR_MODIFYWORLDTRANSFORM e EMR_SETPIXELV coperti 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, posizionando TfrxHotPDFExport sulla tavolozza FastReport VCL pur mantenendo l'unità di runtime esistente e l'entry point Register disponibili per motivi di compatibilità

Version 2.307.0

Added

  • SignPDFWithPFX ora 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.PageRange consente ora alle esportazioni FastReport di scegliere il filtraggio delle pagine a base uno come 1,3-5 riutilizzando 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 w ricevano 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 columnWidths quando omettono il proprio w, 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 avvolti layout="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" e layout="lr-tb" quando omettono un'altezza esplicita h, misurando l'altezza del contenuto avvolto invece di saltarli come layout estensibili non supportati

Version 2.300.0

Fixed

  • THotPDF.ExtractObjectFromStream restituisce 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

  • TDBGridHotPDFExportOptions e il componente TDBGridHotPDFExport espongono ora PDFACompliance e PDFXCompliance in 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

  • TQRHotPDFExportFilter e TdxHotPDFExportOptions espongono ora PDFACompliance e PDFXCompliance in 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

  • TfrxHotPDFExport e TppHotPDFDevice espongono ora PDFACompliance e PDFXCompliance in 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
  • THPDFExtGStateOptions consente 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 TransparentBlt e MaskBlt tramite 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 PDFOptimize documenta 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 SaveLoadedDocument riscriva 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.ShowNullBrush consente 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.CanvasOver consente 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.Redraw consente 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.UseFrame consente 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.ShowNullPen consente 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.SetFormFieldTooltip consente ora alle applicazioni di assegnare suggerimenti di campo /TU di AcroForm in base al nome del campo per i widget creati tramite i metodi di campo Add... esistenti

Version 2.292.25

Fixed

  • La modalità ad oggetti nativi di TfrxHotPDFExport preserva ora il ritaglio di TfrxPictureView e 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 TfrxHotPDFExport mappa 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 TppHotPDFDevice mappa 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.ShowMetafileEx ha ora un overload THPDFEmfOptions per 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

  • TfrxHotPDFExport espone ora i controlli di output HotPDF per le esportazioni FastReport, tra cui AutoCreateURL, FontEmbedding, NotEmbeddedFonts, ActivateProtection, UserPassword, OwnerPassword, CryptKeyLength, ProtectOptions e EncryptMetadata

Version 2.292.19

Added

  • Aggiunta un'unità add-on dedicata dbGridHotPDFDesign in modo che i pacchetti in fase di progettazione possano registrare TDBGridHotPDFExport sulla 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

  • HPDFParsePFX supporta 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 THPDFTextOutBoxResult oltre a THPDFPage.TextOutBoxEx e THPDFPage.WideTextOutBoxEx in 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.AppendScopedRawContent per 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 TfrxHotPDFExport preserva 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

  • TppHotPDFDevice espone ora una modalità RenderMode opzionale 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.EncryptMetadata per la crittografia standard delle password AES in modo che i chiamanti possano scrivere /EncryptMetadata false, mantenere in chiaro i flussi XMP /Metadata ed emettere la corrispondente derivazione di chiave AES-128 o il flag dei metadati /Perms AES-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 THPDFAcroFormField e THPDFPage.CreateTextField, CreateCheckBox, CreateRadioButton, CreateComboBox e CreateListBox, 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, AddMonochromeImageAuto e il selettore di compressione opzionale icAutoMono

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 /WP e /AA /DP

Version 2.292.8

Added

  • Aggiunto il supporto per azioni aggiuntive di pagine generate con THPDFPageActionTrigger, helper di pagina corrente per SetPageAdditionalAction, SetPageOpenAction, SetPageCloseAction e corrispondenti metodi di cancellazione, più helper indicizzati per pagina di THotPDF che scrivono azioni di pagina /AA /O e /AA /C a partire da catene riutilizzabili THPDFActionBuilder senza 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.RegisterArticleThread e THPDFPage.AddArticleBead

Version 2.292.6

Added

  • THPDFActionBuilder ora crea dizionari di azioni avanzate per Thread, Sound, Movie, Rendition, visibilità del livello SetOCGState, transizioni di pagina Trans e GoTo3DView, con gli helper ShowLayer, HideLayer e ToggleLayer più le restrizioni PDF/A/PDF/X

Version 2.292.5

Added

  • THPDFPage.SetAnnotationAdditionalAction e THotPDF.SetFormFieldAdditionalAction ora collegano catene THPDFActionBuilder riutilizzabili ai dizionari di trigger /AA delle annotazioni e di AcroForm, sostituendo solo il trigger selezionato e preservando le restrizioni delle azioni PDF/A/PDF/X

Version 2.292.4

Added

  • THPDFNamesFacade ora aggiunge wrapper di funzioni JavaScript e istantanee di array per JavaScript caricato e destinazioni denominate, THPDFActionBuilder ora 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

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

  • THPDFActionBuilder ora supporta azioni GoToPage mirate direttamente alla pagina, gli helper per i nomi dei file EMF/WMF accettano THPDFEmfOptions per 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 THPDFEmfOptions per singola chiamata tramite gli overload ShowEnhancedMetafile, EnhancedShowMetafile e ShowMetafile avanzato, 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 di THotPDF.EmfOptions

Version 2.274.1

Fixed

  • Le procedure per i glifi Type3 dichiarate con d1 ora 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 forma d0 mantengono 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 Type3 che dichiarano un riquadro di delimitazione d1 vengono 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 d0 mantengono 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 /Encoding dei font semplici: gli array /Differences rimappano 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 uniXXXX e i nomi dei subset gNN/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, WinAnsiEncoding e MacRomanEncoding vengono 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) Type1 con un programma compatto FontFile3 Type1C: 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 TrueType accettano inoltre un programma FontFile3 OpenType (variante CFF) quando non è presente alcun FontFile2
  • 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 /Differences associa i codici dei caratteri alle procedure dei glifi, e le larghezze /Widths dello 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 /Resources del 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 tabella cmap del 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 cmap segue una solida catena di sottotabelle — prima Unicode (formato 4 e formato 12), poi sottotabelle con codifica a simboli con lo specchio per uso privato F000, quindi sottotabelle Macintosh legacy (formati 0 e 6) — allineandosi al comportamento di fallback della pipeline di creazione
  • I codici dei caratteri che la cmap incorporata 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/CIDFontType0 con un programma FontFile3 (CIDFontType0C, Type1C o un wrapper OpenType) 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/CIDFontType2 con 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 Identity che quelli espliciti del flusso CIDToGIDMap, coprendo i font incorporati subset; i documenti prodotti dalla pipeline Unicode di HotPDF eseguono ora il ciclo completo tramite RenderLoadedPageToBitmap con le esatte forme dei glifi incorporati
  • Gli avanzamenti CID rispettano ora le voci di larghezza /W e /DW, e i codici a due byte Identity-H avanzano 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 a InvalidateRenderedPageCache dopo le modifiche sul posto
  • Nuova THPDFWeightedCache riutilizzabile (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+F0xx sia attraverso il semplice ASCII ('A' raggiunge lo stesso glifo di U+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: RenderLoadedPageToBitmapCached conserva 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 RenderCacheCapacity pagine (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, e InvalidateRenderedPageCache la cancella dopo le modifiche alle pagine sul posto

Version 2.264.0

Added

  • Output in testo formattato: THPDFPage.TextOutHTML renderizza 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 chiamata SetFont/TextOut separata 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 #RRGGBB e i 16 nomi di colori HTML standard; le entità &amp; &lt; &gt; &quot; &nbsp; 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 TextOutHTML si sovrappongano in modo naturale

Version 2.263.0

Added

  • Estrazione del testo con conservazione del layout: ExtractLoadedPageTextLayout ricostruisce 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 ExtractLoadedPageText rimane 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: FindLoadedOutlineByTitle percorre 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 /Dest che le destinazioni dell'azione GoTo vengono risolte in un indice di pagina, consentendo di saltare immediatamente a un segnalibro trovato
  • GetLoadedOutlineTitlesDeep enumera 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: SaveAllLoadedEmbeddedFiles scrive 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 _CopyN prima dell'estensione

Version 2.260.0

Added

  • Esportazione TIFF multipagina per documenti caricati: SaveLoadedPagesToTiff esegue 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; passare False per un output non compresso)
  • SaveLoadedPagesToTiffStream scrive lo stesso TIFF multipagina su qualsiasi TStream; entrambe le chiamate restituiscono il numero di pagine effettivamente scritte

Version 2.259.0

Added

  • Convalida della firma digitale per documenti caricati: VerifyLoadedSignature ricalcola l'impronta digitale di /ByteRange e 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)
  • GetLoadedSignatureInfo restituisce 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//ContactInfo per ciascun campo firma senza modificare i byte del documento
  • VerifyLoadedSignatureEx combina entrambe le cose: una sola chiamata convalida e restituisce il record di informazioni popolato, incluso se la firma copre l'intero documento; VerifyAllLoadedSignatures controlla 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.detached e ETSI.CAdES.detached con o senza attributi firmati
  • Un overload di TStream convalida 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 /JBIG2Decode e l'uso di ExtractLoadedImage lo 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 UseExternalJBIG2Decoder si comporta allo stesso modo a 32 bit e a 64 bit: impostarlo a False per 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 AddImage con compressione icJBIG2 ricorreva 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 := False rimane 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; AddImage con compressione icJBIG2 lo 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.UseExternalEncoder si comporta allo stesso modo a 32 bit e a 64 bit: impostarlo a False per 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 /Sound incorporato con parametri audio /R /B /C /E), <redact> (un'annotazione standard /Redact con /OverlayText, /DA, /Q e /IC — distinta dalla maschera RedactLoadedRect del 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 da HPDFXFA; in precedenza la libreria forniva solo un decodificatore
  • Esteso THPDFXFDFAccess con callback del flusso incorporato (ResolveStream / NewIndirectStream / ReadStreamBytes) collegate a THotPDF.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 / ImportLoadedFormFromXFDF eseguono 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 / ImportLoadedAnnotationsFromXFDF per 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 da HPDFDoc tramite un record di puntatori a funzione (THPDFXFDFAccess) vincolato dalla sezione di implementazione di HPDFDoc (stesso pattern di HPDFTextExtraction); 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 reali THPDFDictionaryObject — tutti i test passano su Win32 e Win64

Version 2.254.0

Added

  • Aggiunta l'estrazione strutturata delle fatture lato lettura: HPDFFacturXXMLElementText esegue una scansione delle sottostringhe sensibile ai confini di parola per qualsiasi elemento CII/UBL (nessun XML DOM, funziona su ogni versione di Delphi supportata), HPDFFacturXInvoiceSummaryFromXML e THotPDF.GetLoadedInvoiceSummary restituiscono un record THPDFFacturXInvoiceSummary con 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'aggregato BuyerTradeParty anziché solo il primo ram:Name
  • Aggiunta la scansione di regressione strutturale PDF/A-3 come THotPDF.GetLoadedPDFAIssues, deliberatamente separata da ValidateFacturXInvoice in 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'enum THPDFFacturXValidationIssue
  • 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 enum THPDFFacturXAttachmentRole, 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.AddEDIFACTSupplementaryFile incorpora un messaggio EDIFACT come factur-xedifact.edi (MIME text/plain, relazione Alternative), HPDFIsFacturXEDIFACTFileName ne riconosce il nome file e DetectFacturXInvoice lo registra in un nuovo campo THPDFFacturXInvoiceInfo.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): PDFAPart riconosce ora '4'/'4F' (emettendo pdfaid:part=4) e PDFAConformanceLevel restituisce vuoto per la parte 4 poiché il PDF/A-4 elimina i livelli A/B/U; IsPDFA2OrLater copre 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 ShowValidationReport renderizza 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, e IsDefaultOutputFile introduce una variabile locale Profile per iterazione (impostata da GetProfile(I)) in modo che il sorgente contenga l'esatto valore letterale string(Profile.OutputBaseName)+ '.pdf' controllato dai test, evitando la chiamata duplicata a GetProfile per iterazione del ciclo; risolve i due storici fallimenti di EInvoiceDemoDefaultOutputUsesProfileSuffix / EInvoiceDemoUsesProjectFileAndOutputNames

Version 2.253.0

Added

  • Aggiunto il rendering delle pagine dei documenti caricati: THotPDF.RenderLoadedPageToBitmap(PageIndex, DPI) disegna una pagina su un oggetto GDI TBitmap RGB a 24 bit (a carico del chiamante) interpretando il flusso /Contents a 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) e Do per 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 da HPDFDoc tramite 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.ReplaceLoadedPageText e ReplaceLoadedDocumentText riscrivono 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 /Filter viene rimossa, accettando un file più grande); ReplaceCount segnala il numero di riscritture di operandi eseguite
  • Aggiunto HPDFEncodeUnicode in HPDFTextExtraction: l'inverso di HPDFDecodeCharCode, 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 / HPDFSerializeHexString in HPDFContentStream: 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 funzioni ReadLiteralString/ReadHexString del tokenizer in modo da eseguire in modo pulito il ciclo di analisi → riserializzazione
  • Aggiunto HPDFMatchGlyphs in HPDFContentStream: un matcher di sequenze di glifi in modalità funzione pura estratto da SearchLoadedPageText in modo che i percorsi di ricerca e sostituzione condividano un unico nucleo di corrispondenza
  • Aggiunto THPDFPageFontResolver.LookupDecoder in 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.SearchLoadedPageText e SearchLoadedDocumentText individuano ogni occorrenza di una chiave confrontando la sequenza di glifi Unicode prodotta da ExtractLoadedPageGlyphs, restituendo una THPDFTextMatchArray le 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: THPDFContentToken and THPDFArrayItem registrano ora StartOfs/EndOfs che coprono ciascun operando esattamente come scritto (inclusi i delimitatori ( ) o < >), e ciascun THPDFGlyphRecord riporta TokenIndex/ItemIndex/ByteOffset che 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 /Catalog e 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 /Fields viene sezionato tramite il tracciamento della profondità delle parentesi (rispettando i valori letterali di stringa esadecimali e normali) e passato a HPDFParserParseSimpleDictionary, garantendo il corretto ciclo completo per valori /V di tipo stringa, esadecimale, nome e numerico
  • I valori /V trasportati come stringhe esadecimali UTF-16BE (<FEFF...>) ora mantengono la loro forma esadecimale durante l'importazione: HPDFSetDictFormValue rileva il prefisso BOM FEFF e imposta IsHexadecimal in 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 di THPDFNameObject

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: HPDFIsFacturXVersion accetta l'alias di versione 2p5, il nuovo helper HPDFFacturXNormalizeVersion lo rimappa su 2p0 nell'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), e HPDFFacturXFileNameOK, HPDFFacturXXMLGuidelineOK e la tripla nome schema/URI namespace/prefisso dell'XMP trattano 2p5 in modo identico a 2p0; 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.AddUBLSupplementaryFile incorpora una rappresentazione UBL come file associato secondario factur-xubl.xml con relazione Alternative e MIME application/xml accanto alla fattura CII primaria (delegando alla pipeline esistente AddPDFA3AssociatedFile), HPDFIsFacturXUBLFileName ne riconosce il nome file, DetectFacturXInvoice lo registra in un nuovo campo THPDFFacturXInvoiceInfo.UBLFileName e l'esempio di fatturazione elettronica attiva la doppia incorporazione tramite una casella di controllo con BuildUBLSupplementaryXML che 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) in Lib/resources/Schematron/ ed espone HPDFValidateEInvoice che esegue il controllo del contenitore tramite ValidateFacturXInvoice, 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 come skipped, 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 headless EInvoiceValidation ora renderizzano i risultati delle regole interne insieme ai report del validatore esterno

Changed

  • AddFacturXAssociatedFile ora normalizza l'argomento Version tramite HPDFFacturXNormalizeVersion prima di scrivere l'XMP, in modo che i chiamanti di 2p5 emettano il token XMP 2p0 conforme alle specifiche senza modificare il comportamento esistente di 1.0/2p0
  • L'esempio di fatturazione elettronica GenerateInvoicePDF ottiene un parametro opzionale AttachUBL (predefinito su False, preservando i siti di chiamata esistenti) e contrassegna il nome dell'output predefinito con -withUBL quando 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 elencatiGetLoadedFormFieldOption/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 elencatiSetLoadedAnnotationFlagsDettagli 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 THotPDF methods: HPDFCMapReader parses both ToUnicode beginbfchar/beginbfrange Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati begincidchar/begincidrange Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati HPDFContentStream Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencatiBT/ET, Tf, Tj/TJ/'/", Td/TD/Tm/T*, q/Q, inline-image BI/ID/EI Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati HPDFTextExtraction Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati/ToUnicode/Encoding Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati /DescendantFonts /CIDToGIDMapcid2code.txtDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
  • Added THotPDF.GetLoadedFontDecoder, THotPDF.ExtractLoadedPageGlyphs and THotPDF.ExtractLoadedPageText Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati ExtractLoadedPageText Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati
  • Added ExtractText Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati LoadedDocInspector read-only console layout

Modificato

  • HPDFDoc now uses HPDFCMapReader, HPDFContentStream and HPDFTextExtraction Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati THotPDF Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati HPDFParser standalone-unit pattern (no dpk contains Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati HPDFDocDettagli localizzati della modifica per il comportamento dell'API e i simboli elencati THPDFFontDocAccess Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati ResolveLoadedDictionary / ResolveLoadedStream / HPDFReadStreamBytes helpers

Version 2.235.1

新增

  • 新增 PDFOptimize 控制台例程(Delphi):演示生成端 PDF 体积优化,通过同内容、不同压缩设置的多份 PDF 横向对比量化每种策略的收益 —— 文本/矢量文档的 cmNone vs cmFlateDecodeUseObjectStreams 对象流打包、彩色照片的 icJpeg JpegQuality 扫描对比 icFlate、双层扫描图的 icCCITT42(G4)对比 icJBIG2 lossless/lossy,控制台打印体积对比表,所有测试图像均在内存合成生成不依赖外部文件,并明确标注 HotPDF 压缩为生成端能力(无法对已加载 PDF 重新压缩)

Version 2.235.0

Added

  • Aggiunta la demo consolidata Stamp (Delphi e C++Builder): unisce le precedenti demo Modify, MultiPageStamp e Watermark in 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 demo SmallSize, NormalSize e LargeSize in un singolo programma che enumera tutti i valori dell'enumerazione THPDFPageSize delle categorie piccolo/normale/grande più le dimensioni personalizzate Width/Height in 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 AddPages e DelPages in un'unica GUI AddDelPages, aggiornando contemporaneamente PageMultiSize e AddDelPages di C++Builder per eguagliare la ricchezza di Delphi (Size/Orientation/larghezza-altezza personalizzate/contatore/etichetta/progresso)
  • Spostato lo strumento di regressione dei glifi FontTest da Demo a Tests\Delphi\FontTest e Tests\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 in ConvertTo
  • Rimossa la demo CopyPages di C++Builder; la sua capacità è pienamente coperta dal più completo PDFmerge
  • Rimossa la demo Logger; l'utilizzo della facciata di logging runtime HPDFLogger / HPDFLog che dimostrava è stato migrato alla pagina di argomento della documentazione API Docs/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 in AddDelPages): 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 globale THotPDF ad 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 ha TFormatSettings.Invariant, atof ora utilizza TFormatSettings costruito manualmente coerente con HPDFXFA.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 (ExtractLoadedImage ecc.) abilita per impostazione predefinita questo backend per decodificare le immagini JBIG2 incorporate nei PDF
  • Aggiunta proprietà THotPDF.UseExternalJBIG2Decoder (predefinita True): impostarla su False per tornare al decodificatore Pascal nativo come ripiego

Version 2.233.0

Aggiunto

  • Aggiunto backend di codifica ad alte prestazioni per le immagini JBIG2: AddImage abilita per impostazione predefinita questo backend quando si comprimono le bitmap in bianco e nero come icJBIG2, producendo un flusso JBIG2 codificato aritmeticamente più veloce e conforme agli standard
  • Aggiunta l'opzione THPDFJBIG2Options.UseExternalEncoder (predefinita True): impostarla su False per 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 in Win64\libpng-*.obj con MSVC, genera automaticamente le intestazioni zlib-ng e riutilizza pnglibconf.h.prebuilt), modificato build-jbig2dec-vc64.bat per abilitare automaticamente jbig2_image_png.c e HAVE_LIBPNG al rilevamento degli oggetti libpng e collegare gli oggetti libpng + zlib-ng, jbig2dec.exe ora supporta l'output -t png, generando un PNG scala di grigi 1-bit 64x56 per annex-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): aggiunto build-jbig2dec-bcc64x.bat (genera 15 oggetti COFF64 collegabili con Delphi usando Embarcadero bcc64x, per consumo futuro tramite {$L} da HPDFJBIG2.pas) e build-jbig2dec-vc64.bat (genera decodificatore a riga di comando autonomo jbig2dec.exe con MSVC), aggiunti modello config_types.h.in e .gitignore, risolte regole oggetti mancanti in msvc.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 di strings.h, bcc64x/C23 rifiutava l'assenza di dichiarazioni dei prototipi) con un'implementazione pulita e moderna; risolti i troncamenti size_t a 64 bit di jbig2dec.c::hash_image, underflow uint32→int di jbig2_segment.c::jbig2_find_segment, conteggio bit a 64 bit di sha1.c::SHA1_Update, nonché uso errato del valore di ritorno di fread in jbig2dec.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 il THPDFJBIG2Decoder originariamente 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 cui GetLoadedImageInfo segnala tali immagini con Decodable=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 tramite TJPEGImage; per queste immagini GetLoadedImageInfo segnala Decodable=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

新增

  • 新增 TJpeg2000BitmapTBitmap 派生类):可直接读写 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

变更

  • 将简单对象解析器(ParseSimpleDictionaryParseSimpleArray)从 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 表切片、UnicodeString run、glyph ID)从不触碰 THotPDFTHPDFPage 实例。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 专用类型(THPDFDirectReadBufferTHPDFDirectWriteBufferTHPDFDirectIntArray)和全局缓冲(GHPDFCopyBuffer)一并迁移到新单元

Version 2.222.0

变更

  • 将预检(preflight)、合规检查、PDF/VT 验证相关代码从 HPDFDoc.pas 提取到新单元 HPDFPreflight.pas。原有 25 个公开方法(CreatePreflightReportValidatePDFVTEmbedPreflightReportAsXMP 等)签名完全不变,实现改为转发到新单元的自包含 standalone 函数;HPDFDoc.pas 因此减少约 3500 行。新增 3 个只读访问器(LoadedObjectCountGetLoadedObjectByIndexLoadedRootObjectIndex)让独立单元可枚举已加载文档的对象图

Version 2.221.0

新增

  • 全面支持多语言化:将 Readme.html 提取至 Docs/en-us 目录,并新增其他 37 种语言的翻译版本;更新了安装程序脚本(HotPDF-FULL.issHotPDF-TRIAL.iss),现在会根据安装时所选的语言,自动提取并放置对应语言版本的 Readme.html 至安装根目录

Version 2.220.0

新增

  • 新增统一运行期日志门面 THPDFLogger 与全局实例 HPDFLog:把原本散落的编译期调试开关统一为运行期可控的日志门面。提供 Error / Warning / Info / Debug 四级严重度过滤,可同时输出到文件、OutputDebugString(IDE Event Log 可见)和控制台;文件目标带 10 MB 单备份滚动;线程安全(TCriticalSection 保护);关闭态热路径仅一次布尔判断即返回,发布版零开销。LoadFromFileCreatePreflightReport 和 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)。底层用 GDI GetTextExtentExPointW 一次调用同时拿总宽 + 累积宽度数组,差分后得到每字形 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 的 ExtTextOut TJ 数组 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 / 代理对 / 多字节文本测出无意义的值;新方法用 GDI GetTextExtentPoint32WlfHeight = -1000)按当前字体整串测量,返回用户空间点宽(与 TextWidth 同坐标系,可直接做布局预算)。同 _XFAMeasureTextImpl 的测量策略
  • 新增 THPDFPage.GetWideTextRowCount(BoxWidth: Integer; Text: WideString): Integer:Unicode 行数预测,镜像 GetTextRowCount 的 AnsiString 契约,基于 GetWideTextWidth 让 CJK / 代理对文本正确换行计数

Version 2.215.0

新增

  • 新增 THPDFPage.ExtTextOut(三个重载:PWORD / WideString / AnsiString):GDI ExtTextOut 风格的扩展文本输出,接受每字形水平位移数组 Dx,emit 单个 [<hex> <num> ...] TJ 数组,让调用方精确控制每个字形原点——用于表格数字对齐、手动字距、两端对齐、表单值填充和签名块排版。复用现有 _GPOSEmitPositionedRun TJ emit 器与 _GPOSGlyphAdvance1000 hmtx 读取,Dx 为 PDF 用户空间点(与 TextOut 的 X/Y 同坐标系);当 Dx 值等于字形自然 advance 时 TJ 调整数归零,可在一次调用内混排自然与覆盖字形。仅支持简单 LTR 文本,RTL bidi 重排与 producer-side shaping 被旁路

Version 2.214.0

新增

  • 新增 THPDFPage.AttachSignatureFieldAppearance:给已通过 AddSignatureField / AddSignedSignatureField / AddPAdESSignatureField 创建的签名字段挂上可见外观 /AP /N Form XObject,并返回 Form 让调用方在 widget 本地坐标系内绘制签名图片、签名者姓名、日期或原因文字;内置薄边框加浅灰底色作为默认的“在此签名”占位外观
  • 新增 HPDFNormalizeRect 工具函数(三个重载:TRect / THPDFRectangle / 四个 Extended 变参):把矩形角点重排为 Left<=RightTop<=Bottom,让鼠标拖框等无序输入可安全传给绘图 API
  • THPDFPage.RotateCoordinate 从 protected 提到 public:外部调用方现在可直接复用与 RectangleRotate 相同的旋转约定,计算旋转矩形角点、多边形顶点或文字包围盒

Version 2.213.0

新增

  • 新增 THPDFPage 几何便利方法套件:Arc 角度定义弧、Pie 角度定义扇形、Chord 弓形、ArcTo 中心加半径加扫角弧、Polyline 折线、Polygon 多边形、PolyBezier 三次贝塞尔样条。所有方法都复用已有的 MoveTo / LineTo / CurveToC / CurveArc 底层路径原语,对齐 GDI TCanvas 角度与点数组语义,让画弧、扇形、折线和样条曲线不必再手写操作符循环

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 da OutlineRoot.AddChild può ora essere modificato da /Dest predefinito all'interno della pagina in /S /URI action, 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 orizzontale THPDFPage.TextOut può convertire automaticamente i testi URL come http://, https://, mailto: e www. 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.SetOpenNamedDestinationAction e THotPDF.ClearOpenNamedDestinationAction: /OpenAction del Catalog del documento ora può essere impostato per passare a una destinazione denominata registrata con THotPDF.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 /ResetForm o nascondere i campi prima di eseguire un'azione denominata in sequenza

Version 2.207.0

Aggiunto

  • Migliorato THotPDF.RegisterOptionalContentGroup: aggiunto il parametro UserToggleAllowed, che consente di scrivere il gruppo di contenuti opzionale specificato in /OCProperties /D /Locked pur 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 con THotPDF.RegisterNamedDestination, producendo /S /GoTo action locale e il nome di destinazione /D come 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.JBIG2Options e THPDFJBIG2Options: AddImage(..., icJBIG2) passerà ora gli intenti di codifica a livello di documento come Lossless, LossyLevel e UseSymbolDictionary al 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.EmfOptions e THPDFEmfOptions: 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 a icFlate o di mantenere il predefinito icJpeg

Version 2.203.0

Aggiunto

  • Aggiunte la proprietà ExportMode e l'enumerazione TfrxHotPDFExportMode a TfrxHotPDFExport: il valore predefinito hemPageMetafile mantiene il comportamento originale di esportazione dell'anteprima dell'intera pagina, hemObjectCanvas consente a FastReport di disegnare gli oggetti TfrxView uno per uno durante l'attraversamento di ExportObject, 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: THPDFImageCompressionType include ora icJBIG2, AddImage e AddImage(FileName) possono scrivere bitmap a 1-bit come flusso di immagini /JBIG2Decode di 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 esposti RegisterJBIG2DecoderBackend, RegisterJBIG2EncoderBackend, il rilevamento delle capacità e le classi delegate per encoder / decoder, continuando a restituire esplicitamente False quando non è registrato alcun backend di produzione; DBGridHotPDFExport può esportare le colonne visibili della VCL TDBGrid o 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 /AF del 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 /AFRelationship e 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 FacturXWarnings in 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-FR e EXTENDED-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 COMFORT come un nome di profilo solo ZUGFeRD 1.0, rifiutando gli attuali contenitori factur-x.xml prima 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# preservando zf:Version come 2p0, 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 MINIMUM and BASIC WL Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati AFRelationship Data, enforces Alternative Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati XRECHNUNGDettagli 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 Version values 1.2, 2.0, 2.1, 2.2, 2.3, and 3.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 EN16931 Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati EN 16931, matching current sample metadata while preserving existing EN 16931 calls

Version 2.197.13

Corretto

  • Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati urn:factur-x.eu:1p0:basic and urn:factur-x.eu:1p0:extended Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati BASIC and EXTENDED Dettagli 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.xml filename, COMFORT profile, urn:ferd:pdfa:CrossIndustryDocument:invoice:1p0# Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati urn:ferd:CrossIndustryDocument:invoice:1p0 Dettagli 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.xml filename with Version 2p0Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati urn:zugferd.de:2p0 Dettagli 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:Version as 3.0 while keeping ordinary Factur-X metadata at 1.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 ConformanceLevel Dettagli 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-stamp Dettagli 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-identifier Dettagli 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 Reason Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati /Reason Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati signature-policy-identifier Dettagli 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 CountryCode policy so current German ZUGFeRD invoices reject MINIMUM and BASIC WL, enforce Alternative Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati XRECHNUNG Dettagli 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 CountryCode policy so German ZUGFeRD invoices can enforce Alternative Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati XRECHNUNG Dettagli 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.xml Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati XRECHNUNG, factur-x.xml Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati

Version 2.197.2

Aggiunto

  • PDF/A-3: THotPDF.AddFacturXAssociatedFile Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati factur-x.xml or xrechnung.xml in Catalog /AF and /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 /ModDate and raw MD5 /CheckSum Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati /Params Dettagli 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 / UseObjectStreams Dettagli 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 /CIDToGIDMap Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati /CIDSet Dettagli 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 JavaScript this.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-align property on <p>: center and right Dettagli localizzati della modifica per il comportamento dell'API e i simboli elencati justify 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 margin-top, margin-bottom, space-before, and space-after in 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 disegno text/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 /Annots esistente 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 /Width o /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 /XObject ma senza risorsa /Font non 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

  • BeginParagraph ora 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ù leak
  • EndParagraph ora 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 PolyDraw ora 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 LZWDecode che dichiara predittore TIFF 2 con Columns o Colors a 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 i invece 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 DrawText ora 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, ASCII85Decode o RunLengthDecode troncato 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 ASCIIHexDecode respinge 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 /ToUnicode anche 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 SetFont un 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 ASCII85Decode che usa l’abbreviazione z tutta-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ì LoadFromFile carica 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 /Filter assente

Fixed

  • Risalvare un documento hybrid-reference caricato con protezione AES-256 — ActivateProtection più SaveLoadedDocument, o EncryptFile — 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 stream durante 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

  • LoadFromFile e LoadFromStream non 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 /XRefStm prodotta 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 DAOpenFileReadOnly o DACopyFile non 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 /Prev del 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, DecryptFile e DASaveAsFile dopo 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 /Length indiretti 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: FlattenFormFields restituisce il numero di campi AcroForm appiattiti, mentre i nuovi helper HasFormFields e FormFieldExists permettono 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 semplici abilitato, 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 sfMeeteiMayekShaping non riordina piĹĞ Devanagari, Bengali, Tamil, Khmer, Myanmar o altri testi indic, e abilitare solo sfIndicShaping o sfIndicGSUB non 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

  • ApplyIndicReorder ottiene 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

  • sfStylisticAlternates ora applica automaticamente le sostituzioni OpenType salt durante 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 sfFractions applica automaticamente le sostituzioni OpenType frac durante 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: sfSmallCaps per smcp, sfCapsToSmallCaps per c2sc, sfOldstyleFigures per onum, sfLiningFigures per lnum, sfSuperscripts per sups, sfSubscripts per subs e sfOrdinals per ordn

Version 2.186.0

Added

  • Nuove opzioni di shaping sfDiscretionaryLigatures e sfHistoricalLigatures applicano automaticamente i lookup OpenType dlig e hlig durante 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 lookup init, medi, fina, isol, rlig, calt e rclt del font registrato ai run logici arabi ed emette gli ID glifo contestuali nativi del font con mapping ToUnicode
  • La nuova opzione sfCursiveAttachment applica 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 dati curs del 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 vkrn e delle alternative proporzionali verticali tramite vpal, 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 locl Localized 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 calt Contextual 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 rclt Required 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 semplici compact 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 Compression Dettagli 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 / clig Latin ligature folding through sfStandardLigatures 猫 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 -1 in columnWidths) contiene solo celle espandibili senza larghezza misurabile, la colonna scartata viene ora segnalata tramite XFAFlattenWarnings anzich茅 essere omessa silenziosamente

Version 2.145.3

Added

  • Le colonne di tabella impostate su larghezza automatica (una voce -1 in columnWidths o 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 figli layout="row" in colonne allineate, con le larghezze delle colonne ricavate dal columnWidths della 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 pacchetto datasets, 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 FlattenLoadedXFA invece di fallire con un errore di modello mancante. Il caricatore riconosce l'elemento radice xdp:xdp anche 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 (SYSTEM o PUBLIC) 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 tramite XFAFlattenWarnings

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 /XFA come array di pacchetti ora vengono appiattiti correttamente tramite FlattenLoadedXFA invece 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 FlattenLoadedXFA appiattisce 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 tramite ApplyXFAAsAcroForm). Legge la voce /XFA del modulo, che sia un singolo stream o un array di pacchetti, quindi rimuove /XFA e 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 ApplyXFAAsAcroForm ora 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 ApplyXFAAsAcroForm converte 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. XFAFlattenWarnings segnala 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 /SubFilter deve essere adbe.pkcs7.detached o ETSI.CAdES.detached, e il vincolo /DigestMethod non pu貌 essere MD5, SHA1, n茅 SHA-1. Il produttore solleva un'eccezione diagnostica chiara anzich茅 emettere silenziosamente un dizionario /SV che viola il profilo

Version 2.142.0

Added

  • Il nuovo metodo AddXFASignaturePacket incorpora una firma XAdES / XML-DSig generata dal chiamante come pacchetto signature XFA all'interno dell'array /XFA dell'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 di AddXFAPacket

Version 2.141.2

Added

  • Nuova API pubblica RegisterDefaultColorSpace(Which, ColorSpaceCS) registra uno spazio colore ICCBased (creato con RegisterICCProfile) come mappatura /DefaultGray, /DefaultRGB o /DefaultCMYK a 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 /DefaultX corrispondente nel dizionario Resources/ColorSpace della pagina. Il numero di componenti viene convalidato rispetto alla famiglia (DefaultGray 鈫?N=1, DefaultRGB 鈫?N=3, DefaultCMYK 鈫?N=4); una chiamata con CSName vuoto cancella la mappatura; le voci /DefaultX gi脿 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 profilo GTS_PDFA1 OutputIntent, 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 /C e /IC delle 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, UsedDeviceRGB e UsedDeviceCMYK su THotPDF espongono 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 /XFA tramite il nuovo metodo SetXFADocument, 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 di AddXFAPacket. Le due forme si escludono a vicenda
  • La nuova propriet脿 XFANeedsRendering imposta il flag /NeedsRendering del 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:xdp richiesti 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 /Subtype dei 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. Riguarda AddPDFA3AssociatedFile e AddXAdESAssociatedFile
  • AddXAdESAssociatedFile ora 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 /DocTimeStamp richiesto dalla specifica invece di /Type /Sig e omette le voci /M, /Reason, /Location e /ContactInfo che 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 /ExtensionLevel dichiarato 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.certificates tramite la nuova opzione AdditionalCertsDER, 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 /CIDSet nel 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 dopo EndDoc

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.3 o %PDF-1.4 ma 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 pfCSV in CreatePreflightReport, SavePreflightReport e CreatePreflightReportWithProfile, utilizzando colonne stabili category,name,status,value,spec per 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 csv per 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 AnsiString che 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 per InsertPagesFromDocument e ExtractPagesToFile, e AppendPagesFromDocument
  • 脠 stato aggiunto OnPageOperationProgress in 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.DACopyFile per 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 HugeFileBenchmark ora include una riga direct-copy, mentre il set di operazioni predefinito copre ancora il percorso completo LoadFromFile + 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 HugeFileBenchmark ora include un'operazione direct-rewrite e 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_PDFVTModDate e xmp: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 %%EOF continuino 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 False e reimposti lo stato del wrapper invece di dereferenziare lo stream

Version 2.137.0

Added

  • 脠 stato aggiunto THotPDF.ValidatePDFVT con 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 struttura DPartRoot del catalogo, le pagine caricabili e la copertura DPart a livello di pagina
  • La CLI autonoma HotPDFPreflight ora accetta --pdfvt per scrivere report di validazione .pdfvt.txt per 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 CreatePreflightReport lo usi, così gli strumenti console che ricompilano HPDFDoc.pas dai sorgenti compilano correttamente

Version 2.136.3

Added

  • Lo strumento CLI autonomo HotPDFPreflight guadagna l'opzione --aggregate <file>, che scrive un riepilogo batch prodotto da THotPDF.AggregatePreflightReports dopo 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.txt scrive report JSON per ogni PDF più un singolo riepilogo batch

Version 2.136.2

Added

  • The standalone HotPDFPreflight CLI 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 -r recursive directory walks

Changed

  • The two new options are mutually exclusive (passing both, the later one wins). The preset values match what THotPDF.GetBuiltInPreflightProfile recognises 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\reports writes JSON reports for every PDF in the directory tree with the silent-actions preset applied

Version 2.136.1

Added

  • The Delphi PreflightReport demo now accepts profile=<file> or preset=<name> as an additional CLI argument to filter the report through a profile before writing it. Works alongside the existing json / html / embed output format flag

Changed

  • Examples: PreflightReport.exe Input.pdf Report.txt "" text profile=tuned.ini or preset=compact / preset=silent-actions
  • The preset values mirror the names recognised by THotPDF.GetBuiltInPreflightProfile so the demo doubles as a profile testbed without having to author an INI file

Version 2.136.0

Added

  • Aggiunti THotPDF.MergePreflightProfiles per stratificare i profili. Il risultato è l'unione deduplicata di entrambi gli input (DisableChecks e DisableWarnings vengono uniti, DisableHints è un OR logico), utile per combinare un preset come compact con regolazioni specifiche del progetto
  • Aggiunti THotPDF.DiffPreflightProfiles per il confronto strutturale. Restituisce True quando due profili sono equivalenti, altrimenti i parametri out OnlyInA e OnlyInB elencano le voci esclusive di ciascun lato come token separati da nuove righe check:<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 compone CreatePreflightReport, LoadPreflightProfile, ApplyPreflightProfile e 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, pfJSON o pfHTML) e restituisce il corpo finale del report. Passare un ProfileFile vuoto 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.SavePreflightProfile per scrivere un record THPDFPreflightProfile in un file INI. Il formato di output corrisponde a quello consumato da LoadPreflightProfile, 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 con SavePreflightProfile per 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 record THPDFPreflightProfile pronti 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): default o stringa vuota restituiscono un profilo vuoto; compact disattiva tutte le righe Hint per report più brevi; silent-actions disattiva tutti gli avvisi azione PDF 1.7 sec 12.6.4 più EmbeddedFile e RichMedia, 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.ValidatePreflightProfile per la verifica difensiva dei profili. La funzione percorre le liste DisableChecks e DisableWarnings del profilo caricato e segnala ogni nome non riconosciuto dall'implementazione corrente del preflight, restituendo i nomi sconosciuti uniti da ', ' nel parametro out UnknownNames

Changed

  • Utile per rilevare file di profilo creati per una versione HotPDF più nuova o più vecchia. Senza validazione, un refuso (OpneAction invece di OpenAction) 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: profile di primo livello, un array jobs contenente itemDetails / taskResult / validationResult, più un array ruleViolations sotto validationResult.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 specification che 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.EmbedPreflightReportAsXMP con due overload, con e senza un argomento opzionale Password. 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 namespace xmlns: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 prefissi warn, hint e info nel nome dell'elemento
  • Gli strumenti consapevoli di XMP che cercano in un file i marker xpacket possono 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 /Metadata del catalogo

Version 2.129.0

Added

  • Aggiunti THotPDF.LoadPreflightProfile e THotPDF.ApplyPreflightProfile con un nuovo record THPDFPreflightProfile. 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 Summary e Warnings vengono 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 PreflightDashboard console demo that scans a directory of PDFs and writes a self-contained static HTML dashboard: one <stem>.preflight.html per file plus an index.html summary 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.html directly 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: false per ogni oggetto, quindi i campi sconosciuti provocano un errore duro invece di passare inosservati. La dipendenza richiesta è il pacchetto Python standard jsonschema

Version 2.128.0

Added

  • Aggiunto THotPDF.AggregatePreflightReports per 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 HotPDFPreflight introdotto in v2.125.1: esegui il CLI per produrre un report per ogni PDF, poi passa i corpi dei report a AggregatePreflightReports per 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.RepairPDFFromPreflightReport con due overload, con e senza un argomento opzionale Password. La funzione applica un sottoinsieme conservativo di riparazioni a livello byte ai PDF danneggiati: elimina i byte finali che seguono l'ultimo marker %%EOF e aggiunge un %%EOF mancante quando non ne trova nessuno

Changed

  • Restituisce True quando è 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 array checks / info / hints / warnings e l'oggetto summary, 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.ComparePreflightReports per 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 di ReportA usano e le righe uniche di ReportB usano

Changed

  • Si abbina naturalmente a LoadAndValidatePreflightReport: quando una validazione di roundtrip fallisce, passa il report originale e quello corrente a ComparePreflightReports per 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 HotPDFPreflight per eseguire in batch il report di preflight su singoli file o intere directory. Lo strumento accetta i flag -o directory di output, -f text|json|html formato di output, -p password, -r scansione ricorsiva delle directory e -v progresso 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.LoadAndValidatePreflightReport con due overload, con e senza un argomento opzionale Password. La funzione estrae il report che EmbedPreflightReportInPDF aveva aggiunto in precedenza, riesegue l'algoritmo di preflight corrente sui byte sorgente e restituisce True quando l'InputFingerprint incorporato coincide ancora con quello appena generato

Changed

  • I parametri out OriginalReport e CurrentReport ricevono 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.CreatePreflightReport per i controlli di stabilità CI. InputFingerprint emette un hash FNV-1a a 64 bit dei byte del PDF sorgente in 16 cifre esadecimali minuscole, subito dopo la riga Size:. ReportFingerprint emette 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 InputFingerprint nell'array info e ReportFingerprint in coda a info; entrambe le voci portano un campo spec etichettato "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. Quando IncrementalUpdates > 0, il report include ora RevisionStartXRefPositions (offset byte di ogni parola chiave startxref nel file, in ordine dal più vecchio) e RevisionXRefTargets (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.EmbedPreflightReportInPDF con due overload, uno con un argomento opzionale Password per i PDF cifrati supportati. Il metodo scrive una copia del PDF sorgente con il report di preflight aggiunto dopo l'ultimo %%EOF come righe di commento in stile PDF
  • Il demo Delphi PreflightReport guadagna un argomento CLI embed che scrive la variante incorporata insieme al report autonomo

Changed

  • Il report viaggia insieme al documento nei flussi di archiviazione: editor di testo, grep e 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/endstream pair, 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.CreatePreflightReport and THotPDF.SavePreflightReport. The THPDFPreflightFormat enum gains a third value pfHTML alongside pfText and pfJSON

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 PreflightReport demo accepts html as 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 PDFXVersion nomina il sottoinsieme specifico (X-1a:2001, X-1a:2003, X-3:2002, X-3:2003, X-4, X-4p, X-5g, X-5pg, X-5n o X-5)
  • Aggiunta l'estrazione della parte PDF/UA. Quando viene rilevata una dichiarazione PDF/UA, la nuova riga Hint PDFUAPart riporta il valore di pdfuaid:part nei 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

  • DuplicateObjectList compare ogni volta che DuplicateObjectNumbers > 0 e elenca fino a cinque numeri di oggetto ripetuti, così i chiamanti possono individuare quali oggetti collidono
  • FirstMalformedXRefOffset compare ogni volta che XRefMalformedEntries > 0 e fornisce l'offset byte a 1-based della prima riga di cross-reference malformata
  • StreamEndStreamDelta compare ogni volta che i conteggi dei marker stream e endstream differiscono 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, TransAction e GoTo3DViewAction
  • 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.CreatePreflightReport con riferimenti incrociati alle specifiche ISO. Ogni voce di checks, hints e warnings porta ora un campo spec che 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 spec compare solo nell'output pfJSON
  • 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.CreatePreflightReport e THotPDF.SavePreflightReport. La nuova enum THPDFPreflightFormat espone i valori pfText (percorso testo semplice predefinito) e pfJSON (documento JSON adatto alla CI)
  • I nuovi overload consapevoli del formato accettano il parametro Format mantenendo 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, pdfVersion e xrefStyle, più gli array checks, info, hints, warnings e un oggetto summary con i contatori failed, warnings e result
  • 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 PreflightReport accetta un quarto argomento CLI json per richiedere l'output JSON per un PDF in input

Version 2.121.36

Added

  • Aggiunti gli avvisi consultivi PDFAWithEncryption, PDFAWithJavaScript e PDFA1WithTransparency, 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 TaggedPDF e Hint HasTransparency per 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 FontsHaveEmbeddedPrograms che verifica che sia presente almeno un /FontFile, /FontFile2 o /FontFile3 quando vengono dichiarate risorse font
  • Aggiunto il controllo pass/fail AnnotationCountConsistent che 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, RunLengthDecode e JPXDecode

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 /Root del 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 /ID del 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 /Root e /Info del 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 /Length degli 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 %%EOF e le sezioni startxref, verificano che i conteggi siano bilanciati e controllano che l'ultimo marker startxref compaia 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 /Count dichiarato 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 /Size copre 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/endstream e i dettagli del trailer per /Size, /Root, /Info, /ID e /Encrypt

Version 2.121.25

Changed

  • Migliorati THotPDF.CreatePreflightReport e THotPDF.SavePreflightReport con diagnostica più profonda sui riferimenti incrociati. I report ora verificano che il marker finale %%EOF sia vicino alla fine del file, analizzano l'offset dell'ultimo startxref, 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 MediaBox delle 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 Delphi PreflightReport accetta 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.CreatePreflightReport e THotPDF.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 Delphi PreflightReport ora usa direttamente queste API

Version 2.121.22

Added

  • Aggiunto un demo console Delphi PreflightReport che 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 mantiene AutoLaunch disattivato e può anche analizzare un PDF di input esistente da riga di comando

Version 2.121.21

Added

  • Aggiunto un demo console Delphi SearchAndSelect che costruisce un report, cerca righe di testo controllate e marca ogni termine corrispondente con annotazioni PDF highlight e /QuadPoints. Il campione mantiene AutoLaunch disattivato, 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 LoadFromFile o LoadFromStream con una password, oppure chiamare DecryptLoadedDocument dopo il caricamento, quindi salvare una copia del documento caricato non cifrata con SaveLoadedDocument. Il nuovo demo console Delphi DecryptPDF crea 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 Printer che genera un preset PDF pronto per la stampa. Il campione scrive /ViewerPreferences orientate alla stampa, voci BleedBox e TrimBox della 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 ConvertTo che converte grafica sorgente supportata in file PDF di output. Il flusso crea file PDF separati da input JPEG, BMP, TIFF ed EMF con AutoLaunch disattivato, 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, ExtractPagesToFile e MovePage. 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 Delphi PageOperations mostra 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 RemoveFormField e FlattenFormFields. 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 Delphi FormFields ora 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 /Dest o GoTo locali in indici di pagina a base zero

Version 2.121.14

Added

  • Aggiunto THPDFPage.AddTextWatermark per disegnare filigrane testuali trasparenti ruotate su pagine generate o caricate. Il nuovo demo Delphi Watermark crea 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 /TU di 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 GetFormFieldOptionCount e GetFormFieldOptionValue. Le applicazioni possono ora caricare un campo esistente combo box o list box, enumerare i valori /Opt consentiti e continuare a usare lo stesso flusso di aggiornamento e salvataggio dei moduli caricati