Note di rilascio PDFiumVCL
Cronologia delle versioni per funzioni visibili all'utente, correzioni, miglioramenti del visualizzatore, generazione documenti, output PDF/A, rendering e aggiornamenti della documentazione di PDFiumVCL.
Version 1.39.52
Modificato (Changed)
Demo\Lazarus\CreatePDFè stato migliorato: l’esempio introduttivo ora genera un PDF di due pagine con vector paths, table content, embedded image, text annotation, rotated text e un document-building walkthrough più chiaro.- Sono state aggiunte pagine
README.htmlpiù curate per ogni cartella demo Delphi, C++Builder e Lazarus, sostituendo l’ultimo README demo solo testuale con una guida leggibile nel browser. - Aggiornati
TPdf.AboutInfo, i metadati del pacchetto Lazarus e i metadati di versione dell’installer a 1.39.52.
Version 1.39.51
- I riepiloghi batch di
Demo\Delphi\PreflightReportCliora includono totali di stato standard per risultati Pass, Action required e Review negli standard selezionati. - Le righe per file ora includono conteggi action-required e review nei riepiloghi TXT / HTML / JSON / CSV, rendendo più semplice ispezionare gli artefatti CI senza aprire ogni report generato.
- Aggiornati
TPdf.AboutInfo, i metadati del pacchetto Lazarus e i metadati di versione dell'installer a 1.39.51.
Version 1.39.50
- La modalità batch per directory di
Demo\Delphi\PreflightReportCliè stata migliorata:batchdir=folderora raccoglie i percorsi PDF trovati, li ordina e poi genera i report in un ordine stabile. - Le scansioni ricorsive delle directory ora producono un ordine di report e righe di riepilogo riproducibile, mentre l'elaborazione esplicita
batch=list.txtcontinua a preservare l'ordine del file elenco. - Aggiornati
TPdf.AboutInfo, i metadati del pacchetto Lazarus e i metadati di versione dell'installer a 1.39.50.
Version 1.39.49
- I riepiloghi batch di
Demo\Delphi\PreflightReportCliora registrano le run settings: tipo di origine, percorso di origine, stato ricorsivo, directory di output, formato del report, standard selezionati e modalitàfailon=. - I riepiloghi JSON ora includono un oggetto
run, i riepiloghi TXT e HTML mostrano una sezione run settings, e le righe CSV ripetono le stesse colonne di audit per fogli di calcolo e CI pipelines. - Aggiornati
TPdf.AboutInfo, i metadati del pacchetto Lazarus e i metadati di versione dell'installer a 1.39.49.
Version 1.39.48
- Il batch output naming di
Demo\Delphi\PreflightReportClie stato migliorato, cosi duplicate input file names che condividono lo stessooutdir=non sovrascrivono piu i rispettivi generated reports. - Batch runs ora aggiungono i suffissi
-2,-3e successivi quando un generated report path e gia stato assegnato nella stessa esecuzione, e summaries registrano il collision-safe report path finale. TPdf.AboutInfo, Lazarus package metadata e installer version metadata sono stati aggiornati per indicare 1.39.48.
Version 1.39.47
- I batch summaries di
Demo\Delphi\PreflightReportClisono stati migliorati: gli output TXT e JSON ora includono aggregate totals per total files, processed files, failed files, issues e corrispondenzefailon=. - CSV summaries restano una row table pura per i consumers esistenti, mentre HTML summaries continuano a mostrare le stesse aggregate metrics nel dashboard header.
TPdf.AboutInfo, Lazarus package metadata e installer version metadata sono stati aggiornati per indicare 1.39.47.
Version 1.39.46
Demo\Delphi\PreflightReportClie stato migliorato consummary=batch.html/.htmcosi i batch runs possono produrre un browser-readable dashboard oltre ai TXT / CSV / JSON manifests.- HTML summaries mostrano le metriche total, processed, failed, issue e corrispondenza
failon=, poi elencano ogni input con report links, status, counts ed error text. TPdf.AboutInfo, Lazarus package metadata e installer version metadata sono stati aggiornati per indicare 1.39.46.
Version 1.39.45
Demo\Delphi\PreflightReportClie stato migliorato conbatchdir=foldererecursivecosi gli script possono esaminare PDF folders direttamente senza scrivere prima un list file.- Directory batch mode riusa il comportamento
outdir=,summary=,standards=efailon=di list-based batch mode; non-recursive esamina solo la folder selezionata erecursiveinclude subfolders. TPdf.AboutInfo, Lazarus package metadata e installer version metadata sono stati aggiornati per indicare 1.39.45.
Version 1.39.44
- Migliorato
Demo\Delphi\PreflightReportCliconsummary=batch.csv|json|txtcosì i batch runs possono emettere un machine-readable manifest accanto ai per-file reports. - Batch summaries includono ogni input path, report path, status, standard count, passed count, issue count, stato di match
failon=ed error text per CI jobs e scripts esterni. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per indicare 1.39.44.
Version 1.39.43
- Migliorato
Demo\Delphi\PreflightReportCliconbatch=list.txteoutdir=reportscosì gli scripts possono generare preflight reports per un elenco di file PDF in una sola esecuzione. - Batch mode salta le righe vuote e le righe di commento
#, deriva ogni report name.preflight.<ext>dal PDF di input, continua dopo per-file errors e riepiloga processed e failed files prima di terminare. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per indicare 1.39.43.
Version 1.39.42
- Migliorato
Demo\Delphi\PreflightReportCliconfailon=none|issues|action|review, così i CI jobs possono trasformare i preflight results generati in exit codes deterministici. - La CLI ora restituisce exit code 2 quando una
failon=rule selezionata corrisponde dopo la generazione del report file e dell'optional attached-report PDF, mentre i runtime errors continuano a restituire exit code 1. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per indicare 1.39.42.
Version 1.39.41
- Migliorato
Demo\Delphi\PreflightReportCliconattach=output.pdf, così un preflight report generato può essere incorporato come document-level attachment in una nuova PDF copy. - La CLI mantiene su disco il TXT / HTML / Markdown / JSON / CSV report file generato e rifiuta di allegarlo al input PDF path originale, riducendo il rischio di sovrascrittura accidentale.
- Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per indicare 1.39.41.
Version 1.39.40
- Aggiunto
Demo\Delphi\PreflightReportCli, un Delphi console companion per generareFPdfPreflightReportin modo scriptable senza aprire un viewer. - La CLI supporta la creazione di sample senza argomenti, input / output arguments, optional password, formati di output
text/html/md/json/csvestandards=filtering per PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R e PDF/VT. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per indicare 1.39.40.
Version 1.39.39
FPdfPreflightReporte stato ampliato conTPdfPreflightReport.ToMarkdowneSaveMarkdownToFile, cosi i preflight reports possono essere esportati come Markdown adatto agli issue tracker.- Gli esempi
PreflightReportper Delphi, C++Builder e Lazarus aggiungono Markdown preview switching e azioni Save MD accanto al workflow TXT / HTML / JSON / CSV esistente. TPdf.AboutInfo, Lazarus package metadata e installer version metadata sono stati aggiornati per riportare 1.39.39.
Version 1.39.38
- Gli esempi
SecurityAuditper Delphi, C++Builder e Lazarus aggiungono JSON audit report export accanto al workflow TXT save / copy esistente. - Il JSON report contiene
format,generatedAt,summary,findingCounte righefindingsstrutturate con campi severity, area e detail. TPdf.AboutInfo, Lazarus package metadata e installer version metadata sono stati aggiornati per riportare 1.39.38.
Version 1.39.37
FPdfPreflightReportè stato migliorato conTPdfPreflightReport.ToCsveSaveCsvToFile, così i preflight reports possono essere esportati come spreadsheet-friendly CSV.- I samples Delphi, C++Builder e Lazarus
PreflightReportsono stati aggiornati con CSV preview switching e Save CSV actions insieme al workflow TXT / HTML / JSON esistente. TPdf.AboutInfo, Lazarus package metadata e installer version metadata sono stati aggiornati per indicare 1.39.37.
Version 1.39.36
FPdfPreflightReportè stato migliorato conTPdfPreflightReport.IssueCategoryCountse con i tipi riutilizzabiliTPdfPreflightIssueCategoryCounteTPdfPreflightIssueCategoryCountsper aggregare i marker-level issues per category.TPdfPreflightReport.ToText,ToHtmleToJsonsono stati aggiornati affinché l'output generato da PreflightReport includa issue-category count summaries insieme a per-standard rows e detailed issue recommendations.- Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.36.
Version 1.39.35
- Il sample
PrintDialogesteso è stato rinominato inPrintPreferencesper Delphi, C++Builder e Lazarus, così il demo name ora corrisponde al workflow di PDF author print preferences, N-up printing, odd / even filtering, grayscale, cell border e duplex mapping. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.35.
Version 1.39.34
Demo\Delphi\PrintPDFora supporta il caricamento PDF tramite trascinamento, e il workflow esistenteDemo\CBuilder\PrintPDFè documentato insieme agli esempi PrintPDF Delphi e Lazarus.- Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.34.
Version 1.39.33
- Aggiunto
Demo\CBuilder\SplitView, completando SplitView sample matrix per Delphi, C++Builder e Lazarus. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.33.
Version 1.39.32
- Aggiunto
Demo\Lazarus\SplitView, portando side-by-side PDF comparison in Lazarus con two- or three-pane layouts, active-view navigation, synchronized commands, zoom presets e rotation. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.32.
Version 1.39.31
- Aggiunto
Demo\Lazarus\PrintPDF, portando lo standard PDF print workflow in Lazarus con preview navigation, page ranges, copies, collate mode, progress e cancellation. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.31.
Version 1.39.30
- Aggiunto
Demo\Lazarus\FontProperties, completando la matrice di esempi FontProperties in Delphi, C++Builder e Lazarus. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.30.
Version 1.39.29
- Aggiunto
Demo\CBuilder\FontProperties, portando l'ispezione indicizzata dei metadati di caratteri e font in C++Builder insieme all'esempio Delphi. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.29.
Version 1.39.28
- Aggiunto
Demo\Delphi\ExtractTextPages, completando la matrice di esempi per l'estrazione del testo pagina per pagina in Delphi, C++Builder e Lazarus. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.28.
Version 1.39.27
- Aggiunto
Demo\Lazarus\PrintDialog, completando il PrintDialog sample matrix in Delphi, C++Builder e Lazarus. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per indicare 1.39.27.
Version 1.39.26
- Aggiunto
Demo\CBuilder\PrintDialog, portando il N-up printing e PDF author print preferences workflow su C++Builder insieme al sample Delphi. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per indicare 1.39.26.
Version 1.39.25
- Aggiunto
Demo\CBuilder\ViewerInteractionLab, completando il ViewerInteractionLab sample matrix in Delphi, C++Builder e Lazarus. - Aggiornati library build workflow e Win64 C++Builder package outputs affinché i
TPdfViewviewer interaction methods vengano collegati correttamente nei Win64 demos. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per indicare 1.39.25.
Version 1.39.24
- Aggiunto
Demo\Lazarus\ViewerInteractionLab, portando il focused viewer interaction workflow su Lazarus insieme al sample Delphi. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per indicare 1.39.24.
Version 1.39.23
- Aggiunto
Demo\Lazarus\SearchAndSelect, completando la SearchAndSelect sample matrix per Delphi, C++Builder e Lazarus. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per indicare 1.39.23.
Version 1.39.22
- Aggiunti
Demo\CBuilder\ContentExtractionLabeDemo\Lazarus\ContentExtractionLab, portando il multi-category content extraction workflow a tutti i demo IDE supportati. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per indicare 1.39.22.
Version 1.39.21
- Migliorati
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReporteDemo\CBuilder\PreflightReportcon un preview format selector per controllare text o JSON output prima di salvare i report. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per indicare 1.39.21.
Version 1.39.20
- Aggiunto l'export JSON a
FPdfPreflightReporttramiteTPdfPreflightReport.ToJsoneSaveJsonToFile, con summary leggibile dalla macchina, per-standard status / priority, next action e issue detail. - Aggiornati
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReporteDemo\CBuilder\PreflightReportcon azioni Save JSON accanto all'export TXT / HTML. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per indicare 1.39.20.
Version 1.39.19
- Migliorato
FPdfPreflightReportconTPdfPreflightStatus, issue categories, per-standard priority e next-action guidance nei report TXT / HTML. - Aggiornati
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReporteDemo\CBuilder\PreflightReportper mostrare status, priority, issue count e next action nella summary grid. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.19.
Version 1.39.18
- Aggiunto
Demo\Lazarus\SecurityAudit, completando la matrice di esempi Delphi, C++Builder e Lazarus per il workflow di audit PDF risk-surface in sola lettura. - L'esempio Lazarus enumera permissions, attachments, JavaScript actions, URI / Launch link annotations, web links, signatures, XFA state, V8 / XFA helper availability e unsupported-feature callbacks, quindi salva o copia la finding list come TXT report.
- Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.18.
Version 1.39.17
- Aggiunto
Demo\CBuilder\SecurityAudit, portando il workflow di audit PDF risk-surface in sola lettura in C++Builder accanto all'esempio Delphi esistente. - L'esempio C++Builder enumera permissions, attachments, JavaScript actions, URI / Launch link annotations, web links, signatures, XFA state, V8 / XFA helper availability e unsupported-feature callbacks, quindi salva o copia la finding list come TXT report.
- Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.17.
Version 1.39.16
- Aggiunto
Demo\CBuilder\SearchAndSelect, portando il workflow viewer SearchAndSelect autonomo in C++Builder accanto all'esempio Delphi esistente. - L'esempio C++Builder crea o apre PDFs, elenca matches su tutte le pagine con page / character-index previews, supporta Previous / Next e double-click navigation, ed evidenzia i matches della pagina corrente con
HighlightSearchText. - Espone anche
AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelection,OnSelectionChangee opzioni spreadDisplayMode; i metadati di versione ora riportano 1.39.16.
Version 1.39.15
- Aggiunto
Demo\CBuilder\WatermarkStamp, completando la demo matrix Delphi, Lazarus e C++Builder per workflow riutilizzabili di Form XObject watermark e stamp. - L’esempio C++Builder crea PDF target e stamp, riusa la stamp page tramite
CreateXObjectFromPage, applica transforms conTPdfMatrixe salva centered watermarks, corner stamps e page number labels. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.15.
Version 1.39.14
- Aggiunto
Demo\Lazarus\WatermarkStamp, portando in Lazarus il workflow riutilizzabile di Form XObject watermark e stamp. - L’esempio Lazarus crea PDF target e stamp, riusa la stamp page tramite
CreateXObjectFromPage, applica transforms conTPdfMatrixe salva centered watermarks, corner stamps e page number labels. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.14.
Version 1.39.13
- Aggiunto
Demo\CBuilder\PreflightReport, completando la matrice di demo Delphi, Lazarus e C++Builder per il workflow riutilizzabileFPdfPreflightReport. - L’esempio C++Builder usa
FPdfPreflightReport.hppper generare standard summaries, TXT report previews, TXT / HTML report files e il comportamento Open Last Report. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per indicare 1.39.13.
Version 1.39.12
- Aggiunto
Demo\Lazarus\PreflightReport, portando in Lazarus il workflow di preflight report per PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R e PDF/VT. - L’esempio Lazarus può aprire o creare un PDF, selezionare target standards, visualizzare summary rows e TXT report output, salvare TXT / HTML reports e aprire il report salvato più di recente.
- Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per indicare 1.39.12.
Version 1.39.11
Demo\Delphi\SearchAndSelectè stato migliorato con un elenco dei risultati di ricerca su tutte le pagine che registra page number, character index e preview text.- Aggiunti Previous / Next match navigation e double-click result jumping, mantenendo il comportamento di
HighlightSearchTextsulla pagina corrente. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per indicare 1.39.11.
Version 1.39.10
Demo\Delphi\SecurityAuditè stato migliorato con azioni Save Report e Copy Report che esportano il summary corrente e le finding rows come TXT audit report.- Il demo ora cancella il report export state quando l'audit panel viene reimpostato, mantenendo i reports copiati o salvati allineati ai findings visibili.
TPdf.AboutInfo, Lazarus package metadata e installer version metadata sono stati aggiornati per riportare 1.39.10.
Version 1.39.9
Demo\Delphi\ContentExtractionLabè stato migliorato con source-PDF save, report copy-to-clipboard e azioni all / none category selection.- Il demo ora invalida il report corrente quando category selection cambia, così le TXT / JSON exports riflettono il extraction scope visibile.
TPdf.AboutInfo, Lazarus package metadata e installer version metadata sono stati aggiornati per riportare 1.39.9.
Version 1.39.8
- Aggiunto
Demo\Delphi\ContentExtractionLab, un workflow sample unificato di content extraction per document metadata, page text, page objects, images, attachments, links, annotations, bookmarks e font / character metrics. - Il sample può aprire un PDF esistente o creare un synthetic PDF con contenuti text, image, attachment e annotation, quindi generare summary rows e report TXT / JSON dettagliati.
- Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.8.
Version 1.39.7
- Aggiunto
Lib\FPdfPreflightReport.pas, un helper riutilizzabile per report che raccoglieValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfReValidatePdfVTin un oggettoTPdfPreflightReport. - Aggiunto
Demo\Delphi\PreflightReport, un workflow sample che apre o crea un PDF, seleziona target standards, mostra summary rows e issue recommendations, e salva report TXT o HTML. - I report generati descrivono esplicitamente il limite della marker-level validation integrata, così le applicazioni possono affiancare content-level preflight tools dedicati quando necessario.
- Aggiornati
TPdf.AboutInfo, Lazarus package metadata, package project lists e installer version metadata per indicare 1.39.7.
Version 1.39.6
- Aggiunto
Demo\Delphi\SearchAndSelect, un esempio viewer workflow mirato per search highlighting, text selection, selected-text preview, copy, clear e spread display modes. - L'esempio dimostra
HighlightSearchText, opzioni di ricerca match-case / whole-word,AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboardeClearSelectionsenza aggiungere nuove API di libreria. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.6.
Version 1.39.5
Demo\Delphi\ViewerInteractionLabè stato esteso in un esempio viewer UX in stile SearchAndSelect conHighlightSearchText, opzioni match-case / whole-word, anteprima del testo selezionato e controlli esistenti di selection / clipboard.Demo\Delphi\PrintDialogè stato esteso per ispezionare PDF author print preferences:PrintCopies,PrintPageRanges,PrintScaling,PrintPaperHandlinge il duplex mapping visibile diSetPdfPrintPaperHandlingDevMode.- Aggiunto
Demo\Delphi\SecurityAudit, un esempio risk-surface in sola lettura che elenca permissions, attachments, document JavaScript, URI / Launch links, web links, signatures, XFA state e V8 / XFA helper availability. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.5.
Version 1.39.4
- Aggiunti
Demo\CBuilder\ImageToPDFeDemo\Lazarus\ImageToPDF, completando la matrice di esempi ImageToPDF per Delphi, C++Builder e Lazarus. - I nuovi esempi dimostrano selezione multi-immagine, anteprima dell'immagine selezionata, una pagina PDF per immagine, dimensionamento pagina A4 portrait / landscape, ridimensionamento centrato dell'immagine, avanzamento per immagine e apertura del PDF generato dopo il salvataggio.
- Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.4.
Version 1.39.3
- Aggiunto
Demo\CBuilder\BatchExport, portando il workflow di esportazione multi-file da PDF a JPG in C++Builder insieme agli esempi Delphi e Lazarus esistenti. - L'esempio dimostra
LoadCustomDocument,IPdfCancellationTokenSource, inputTFileStreamin streaming, avanzamento per file e per pagina, gestione dell'annullamento, input DPI / quality / password e apertura della cartella di output al completamento. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.3.
Version 1.39.2
- Aggiunto
Demo\Delphi\WatermarkStamp, un esempio eseguibile di workflow Form XObject che crea un PDF di destinazione e uno stamp PDF riutilizzabile, quindi applica filigrane centrate, timbri in alto a destra ed etichette con numero di pagina su ogni pagina. - L'esempio dimostra
CreateXObjectFromPage,InsertFormObjectFromXObject,TPdfMatrixeFPDFPageObj_SetMatrixsenza aggiungere nuove API della libreria. - Aggiornato
Docs\en-us\Examples.htmlper usare il pattern correnteTPdfMatrix.Handlequando si passano matrici aFPDFPageObj_SetMatrix. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.2.
Version 1.39.1
- Corretta la compatibilità della build batch dei demo C++Builder
PDFViewereMultiPageViewer, sostituendonullptrconNULLper il project mode corrente. - Aggiunto
Demo\Delphi\ViewerInteractionLab, un esempio mirato diTPdfViewper display modes, fit modes, page colors, rotation, user text selection, clipboard actions e feedback delle coordinateDeviceToPage. - Aggiunto
Demo\CBuilder\StandardsLab/Demo\Lazarus\StandardsLabper consentire agli utenti Lazarus di eseguire il workflow di validazione e marker-output per PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R e PDF/VT. - Le unit standards sono state elencate in
Lib\37.0\PDFiumVcl.dprojandLib\FPC\PDFiumLaz.lpke la build del demo DelphiSplitViewè stata corretta rimuovendo un import duplicato diWinapi.ShellAPI. - Corretti i blocchi della build batch dei demo Delphi in
BatchExport,PDFViewer,MultiPageViewereSplitViewsenza modificarne il comportamento runtime. - Aggiornati
TPdf.AboutInfo, Lazarus package metadata e installer version metadata per riportare 1.39.1.
Version 1.39.0
- Aggiunto
Demo\Delphi\StandardsLab, un esempio eseguibile di workflow per standard che carica o crea un PDF, esegueValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfReValidatePdfVT, e mostra conformance rilevata, stato di superamento e conteggi issue in una sola griglia. - I pulsanti di salvataggio di StandardsLab chiamano
SaveAsPdfA,SaveAsPdfUa,SaveAsPdfE,SaveAsPdfX,SaveAsPdfReSaveAsPdfVT, rendendo visibile l'output marker degli standard PDF senza scrivere un harness personalizzato. - Aggiornati
TPdf.AboutInfo, metadati del pacchetto Lazarus e metadati versione dell'installer per indicare 1.39.0.
Version 1.38.0
- Gli overlay di ricerca e selezione testo di
TPdfViewora usano alpha blending reale invece della pittura con mask logica, preservando il contenuto della pagina sotto le evidenziazioni. - Aggiunto
SetPdfPrintPaperHandlingDevModeper mappareTPrintPaperHandlingsui valori WindowsDEVMODE.dmDuplex:DMDUP_SIMPLEX,DMDUP_HORIZONTALeDMDUP_VERTICAL. TPdfView.SmoothScrollora anima i comandi line/page della scrollbar in timer-driven segments; il thumb tracking resta immediato.TPdf.AboutInfoe metadati versione degli installer aggiornati a 1.38.0.
Version 1.37.0
TPdfora possiede un lock di rendering per istanza che serializzaRenderPage,RenderTile,RenderPageProgressive, reload pagina e unload documento. Il rendering da worker tramite componente condiviso è ora praticabile; l’applicazione coordina ancora mutazioni e ciclo di vita.- Corretto il wrapper bitmap zero-copy per rifiutare DIB
TBitmapbottom-up e usare un buffer PDFium con copia finale, eliminando errori stride corruption / access violation nei test render VCL. - Comportamento di selezione
TPdfViewrifinito:AllowUserTextSelectionblocca solo l’input utente, le API di selezione da codice continuano a disegnare, eSelectAllsegue lo spread visibile reale così la copertina non seleziona più pagina 2. Test Delphi, Lazarus e C++Builder estesi. TPdf.AboutInfoe metadati versione degli installer aggiornati a 1.37.0.
Version 1.36.0
- Attivata la selezione testo utente finale in
TPdfView:AllowUserTextSelection, riservato in v1.17.0, ora guida drag-select, double-click word, triple-click line,Ctrl+A,Ctrl+CeShift+arrows. - Aggiunti
SelectionColor,OnSelectionChangee API di selezione da codice:HasSelection,SelectionCharCount,SelectedText,ClearSelection,SelectAll,CopySelectionToClipboard. - I modi spread selezionano tra pagine visibili, il menu contestuale Copy viene collegato automaticamente quando l’host non definisce
PopupMenu, e la selezione viene pulita al cambio di documento, pagina, Active o DisplayMode. - Test Delphi, Lazarus e C++Builder estesi per proprietà selezione, percorso mouse, scorciatoie tastiera, popup predefinito, clipboard round-trip e spread selection.
Version 1.35.0
- Aggiunto supporto per iniezione marker PDF/VT (ISO 16612-2:2010): TPdf.SaveAsPdfVT promuove il documento corrente a file conforme PDF/VT-1 o PDF/VT-2 (il sottoinsieme PDF per stampa di dati variabili e transazionali). PDF/VT è costruito su PDF/X-4 (§6.2.1), quindi l’iniettore scrive l’intero set di marker PDF/X-4 (XMP pdfxid, Info GTS_PDFXVersion + Trapped, OutputIntent con ICC) insieme alle proprietà specifiche di PDF/VT.
- Le proprietà specifiche di PDF/VT includono XMP
pdfvtid:GTS_PDFVTVersionepdfvtid:GTS_PDFVTModDate(sincronizzato conxmp:ModifyDateper §6.3 NOTA 1) e la descrizione pdfaExtension:schemas per entrambi i namespace NPES pdfxid e pdfvtid. - Aggiunto TPdf.SaveAsPdfVTToStream per output PDF/VT in memoria e scorciatoia
TPdf.SaveAsPdfVT(FileName)che produce PDF/VT-1 con OutputIntent sRGB incorporato di default. - Aggiunto TPdf.ValidatePdfVT: verifica i marker PDF/VT (inclusa equivalenza
pdfvtid:GTS_PDFVTModDate/xmp:ModifyDatee presenza di/DPartRoot) e restituisce TPdfVTValidationResult. - Aggiunta proprietà TPdf.PdfVTConformance: restituisce il livello senza chiamare ValidatePdfVT esplicitamente.
- Nuovi tipi esportati nella nuova unit FPdfPdfvt: TPdfVTConformance, TPdfVTTrappedState, TPdfVTValidationResult, TPdfVTValidationIssue, TPdfVTSaveOptions.
- La gerarchia Document Part (DPartRoot / DPart, §6.5) è struttura di livello applicazione e NON viene sintetizzata automaticamente. I requisiti di livello contenuto PDF/X-4 (embedding font, trasparenza, gestione ICC, divieti OPI / JavaScript / Reference XObject) restano responsabilità dell’autore.
- Stringa TPdf.AboutInfo aggiornata per riportare la versione attuale del prodotto.
Version 1.34.0
- Aggiunto supporto per iniezione marker PDF/R-1 (ISO 23504-1:2020): TPdf.SaveAsPdfR promuove il documento corrente a file conforme PDF/R-1 (il sottoinsieme raster di PDF per documenti scansionati). L’iniezione copre i requisiti a livello formato — il commento unico
%PDF-raster-1.0tra il trailer dictionary e startxref (§5), catalog ridotto alla white list §6.3 (solo Version/ViewerPreferences/PageLayout/PageMode/AcroForm/Metadata), Document Information Dictionary ridotto a §6.4.3 (solo Creator/Producer/CreationDate/ModDate), flusso XMP con le quattro voci di §6.4.4 Table 1, e array/IDnel trailer. - Aggiunto TPdf.SaveAsPdfRToStream per output PDF/R in memoria e scorciatoia
TPdf.SaveAsPdfR(FileName). - Aggiunto TPdf.ValidatePdfR: verifica i marker e restituisce TPdfRValidationResult.
- Aggiunta proprietà TPdf.PdfRConformance: restituisce il livello senza chiamare ValidatePdfR esplicitamente.
- Nuovi tipi esportati nella nuova unit FPdfPdfr: TPdfRConformance, TPdfRValidationResult, TPdfRValidationIssue, TPdfRSaveOptions. Il default rimuove Title/Author/Subject/Keywords dall’Info e le voci non consentite dal catalog.
- I requisiti a livello contenuto (struttura Contents per pagina, MediaBox
[0 0 w h], filtri ristretti, niente object streams, layout strip) restano responsabilità del PDF sorgente. PDF/R è strutturalmente più rigoroso degli altri PDF/x; abbinare con un validatore del TWAIN Working Group per verifica completa. - Stringa TPdf.AboutInfo aggiornata per riportare la versione attuale del prodotto.
Version 1.33.0
- Aggiunto supporto per iniezione marker PDF/X (famiglia ISO 15930): TPdf.SaveAsPdfX promuove il documento corrente a file conforme PDF/X-1a:2001, PDF/X-3:2002 o PDF/X-4 tramite post-elaborazione del PDF base con un aggiornamento incrementale. L’iniezione copre i requisiti a livello formato file — flusso XMP con
pdfxid:GTS_PDFXVersione descrizione pdfaExtension:schemas, Document Information Dictionary riscritto con/GTS_PDFXVersion//GTS_PDFXConformance//Trapped, catalog aggiornato con/OutputIntentsche punta a un OutputIntent/S /GTS_PDFXcon profilo ICC incorporato, e array/IDnel trailer. - Aggiunto TPdf.SaveAsPdfXToStream per output PDF/X in memoria, e scorciatoia
TPdf.SaveAsPdfX(FileName)che produce PDF/X-4 con OutputIntent sRGB IEC61966-2.1 incorporato di default. - Aggiunto TPdf.ValidatePdfX: verifica i marker di conformità e restituisce TPdfXValidationResult.
- Aggiunta proprietà TPdf.PdfXConformance: restituisce il livello senza chiamare ValidatePdfX esplicitamente.
- Nuovi tipi esportati nella nuova unit FPdfPdfx: TPdfXConformance, TPdfXTrappedState, TPdfXValidationResult, TPdfXValidationIssue, TPdfXSaveOptions. Il default punta a PDF/X-4 con sRGB; i chiamanti possono fornire un profilo ICC CMYK (FOGRA39, GRACoL2006...) via
IccProfileData. - I requisiti a livello contenuto (tutti i font incorporati, no JavaScript, no annotation visibili, divieto OPI, regole di trasparenza per PDF/X-1a / PDF/X-3) restano responsabilità dell’autore. Abbinare con callas pdfaPilot o Ghent PDF Workgroup Output Suite per verifica completa.
- Stringa TPdf.AboutInfo aggiornata per riportare la versione attuale del prodotto.
Version 1.32.0
- Aggiunto supporto per iniezione marker PDF/E-1 (ISO 24517-1:2008): TPdf.SaveAsPdfE promuove il documento corrente a file conforme PDF/E-1 tramite post-elaborazione del PDF base con un aggiornamento incrementale. L’iniezione copre i requisiti a livello formato file — flusso XMP con
pdfe:ISO_PDFEVersion = "PDF/E-1"e descrizione pdfaExtension:schemas, Document Information Dictionary riscritto con la voce obbligatoria/ISO_PDFEVersion (PDF/E-1)di §5, equivalenza Info-XMP ereditata da ISO 19005-1 §6.7 via §13.1 e array/IDnel trailer (§6.2). - Aggiunto TPdf.SaveAsPdfEToStream per output PDF/E in memoria e scorciatoia
TPdf.SaveAsPdfE(FileName). - Aggiunto TPdf.ValidatePdfE: verifica i marker di conformità e restituisce TPdfEValidationResult.
- Aggiunta proprietà TPdf.PdfEConformance: restituisce il livello senza chiamare ValidatePdfE esplicitamente.
- Nuovi tipi esportati nella nuova unit FPdfPdfe: TPdfEConformance, TPdfEValidationResult, TPdfEValidationIssue, TPdfESaveOptions.
- La riscrittura dell’Info dictionary è una novità nel percorso PDF/x di PDFiumVCL — riscrive l’oggetto Info esistente con lo stesso numero (riferimento /Info del trailer preservato) e ne sintetizza uno nuovo se il trailer sorgente non ha /Info.
- I requisiti a livello contenuto (embedding font, CMap ToUnicode, XObject / chiavi ExtGState / form XFA proibiti) restano responsabilità dell’autore.
- Stringa TPdf.AboutInfo aggiornata per riportare la versione attuale del prodotto.
Version 1.31.0
- Aggiunto supporto per iniezione marker PDF/UA-1 (ISO 14289-1:2014): TPdf.SaveAsPdfUa promuove il documento corrente a file conforme PDF/UA-1 tramite post-elaborazione del PDF base con un aggiornamento incrementale. L’iniezione copre i requisiti a livello formato file applicabili tramite post-elaborazione — flusso di metadata XMP con
pdfuaid:part = 1e descrizione pdfaExtension:schemas corrispondente,dc:titleobbligatorio, catalog/MarkInfo << /Marked true /Suspects false >>e/ViewerPreferences << /DisplayDocTitle true >>(solo se la sorgente non li ha), catalog/Lang(quando il chiamante fornisce un tag BCP 47) e array/IDnel trailer. - Aggiunto TPdf.SaveAsPdfUaToStream per output PDF/UA in memoria, e una scorciatoia con opzioni di default
TPdf.SaveAsPdfUa(FileName)per il caso comune. - Aggiunto TPdf.ValidatePdfUa: verifica in un PDF aperto i marker di conformità PDF/UA-1 (esistenza di StructTreeRoot, /Lang, /MarkInfo /Marked true con /Suspects = false, /ViewerPreferences /DisplayDocTitle true, identificatore XMP pdfuaid:part, presenza di dc:title, /ID del trailer, stato di cifratura) e restituisce un risultato strutturato con il livello di conformità rilevato e l’insieme dei problemi trovati.
- Aggiunta proprietà TPdf.PdfUaConformance: restituisce il livello di conformità del documento aperto (puc1, pucNone o pucUnknown) senza chiamare ValidatePdfUa esplicitamente.
- Nuovi tipi esportati nella nuova unit FPdfPdfua: TPdfUaConformance, TPdfUaValidationResult, TPdfUaValidationIssue, TPdfUaSaveOptions.
- I campi vuoti di TPdfUaSaveOptions (Title / Author / Subject / Keywords / Creator / Producer / CreationDate / ModDate / DocumentId / InstanceId / Language) sono auto-popolati da FPDF_GetMetaText / FPDF_GetFileIdentifier / FPDFCatalog_GetLanguage.
- I requisiti a livello contenuto (completezza tagging StructTreeRoot, testo Alt di Figure, CMap ToUnicode, embedding font, ecc.) restano responsabilità dell’autore del documento — SaveAsPdfUa allega solo marker di formato. ValidatePdfUa segnala l’assenza di StructTreeRoot come
pvuaiMissingStructTreeRoot. - Stringa TPdf.AboutInfo aggiornata per riportare la versione attuale del prodotto.
Version 1.30.0
- L’output PDF/A-1b ora soddisfa i requisiti di equivalenza tra Document Information Dictionary e XMP di ISO 19005-1 (con Cor.1:2007): ogni voce dell’Info dictionary che PDFium scrive nel PDF di base viene riflessa nel pacchetto XMP, inclusi Title (dc:title), Author (dc:creator), Subject (dc:description secondo Cor.1), Keywords (pdf:Keywords), Creator (xmp:CreatorTool), Producer (pdf:Producer), CreationDate (xmp:CreateDate) e ModDate (xmp:ModifyDate). Viene emesso anche xmp:MetadataDate.
- Il trailer di un documento PDF/A contiene ora sempre un array /ID (requisito obbligatorio di ISO 19005-1 6.1.3). Quando TPdf.SaveAsPdfA elabora un documento la cui sorgente ha già un file identifier, vengono riutilizzati gli ID di 16 byte permanent e changing; altrimenti viene derivato un ID di fallback deterministico di 16 byte dai byte di origine.
- Il XMP iniettato ora incorpora la descrizione dell’extension schema pdfaid richiesta da ISO 19005-1 6.7.8 (sostituito da Cor.1): pdfaid è considerato un extension schema rispetto a XMP Specification 2004, quindi tutti i file conformi devono dichiarare i suoi property names, value types e categories nel contenitore pdfaExtension:schemas.
- TPdfASaveOptions ha cinque nuovi campi opzionali: Producer, CreationDate, ModDate (stringhe data PDF in formato “D:YYYYMMDDHHmmSSOHH'mm'”), DocumentId e InstanceId (stringhe da 16 byte per l’array /ID del trailer). TPdf.SaveAsPdfA / SaveAsPdfAToStream riempiono automaticamente i campi mancanti tramite FPDF_GetMetaText e FPDF_GetFileIdentifier, quindi il codice esistente continua a funzionare senza modifiche.
- TPdf.ValidatePdfA / TPdf.PdfAConformance ora segnalano tre problemi aggiuntivi: pvaiMissingTrailerId (nessun /ID nel trailer), pvaiMissingXmpDates (manca xmp:CreateDate o xmp:ModifyDate) e pvaiMissingExtensionSchema (descrizione dell’extension schema pdfaid assente).
- I caratteri non ASCII in Title, Author, Subject, Keywords, Creator e Producer sono ora codificati come UTF-8 nel pacchetto XMP (XMP Specification richiede UTF-8), preservando i metadati multilingue attraverso SaveAsPdfA.
- Stringa TPdf.AboutInfo aggiornata per riportare la versione attuale del prodotto.
Version 1.29.0
- Aggiornate le DLL PDFium incluse (Win32 e Win64, sia build standard sia con V8) allo snapshot upstream del 2026-05-22, integrando le correzioni upstream ai percorsi di crash di FPDFText_SetText / FPDFText_SetCharcodes e vari irrobustimenti interni del progetto PDFium.
- Esposto il nuovo flag di salvataggio FPDF_SUBSET_NEW_FONTS di PDFium in FPdfPageOps.pas, consentendo ai chiamanti di FPDF_SaveAsCopy di richiedere il subsetting automatico dei file di font incorporati per gli oggetti di testo appena aggiunti. Le costanti esistenti FPDF_INCREMENTAL, FPDF_NO_INCREMENTAL e FPDF_REMOVE_SECURITY sono ora definite con la forma a scorrimento di bit upstream (il vecchio valore numerico 3 viene mantenuto come FPDF_REMOVE_SECURITY_DEPRECATED per compatibilità binaria).
- Aggiunti l'enum FPDF_FONT_BACKEND_TYPE (FREETYPE / FONTATIONS) e il corrispondente campo m_FontLibraryType su FPDF_LIBRARY_CONFIG in FPdfView.pas, in modo che le applicazioni che inizializzano PDFium con il renderer Skia possano scegliere il backend dei font all'avvio.
- Aggiornata la firma di TFPDFPage_InsertObject per allinearsi all'upstream: la funzione C ora restituisce FPDF_BOOL (TRUE in caso di successo, FALSE se page_object è NULL o se il trasferimento di ownership fallisce) invece di void. Le chiamate esistenti di PDFiumVCL continuano a compilare invariate, poiché Delphi / FPC consentono di ignorare il valore di ritorno di una funzione.
- Corretta la stringa TPdf.AboutInfo affinché riporti la versione attuale del prodotto (era rimasta ferma a v1.27.0 dalla versione 1.28.0 dedicata solo alla documentazione).
Version 1.28.0
- Sostanzialmente ampliata la documentazione interna in tutta la API reference: ogni voce di property, method, event e global function include ora una Description di 3 paragrafi, un elenco Remarks, un Delphi Example multi-riga e un blocco See Also più ricco — coprendo oltre 200 pagine precedentemente sintetiche, inclusi tutti i counter di TPdf, i getter dei metadati, gli accessor di font e caratteri, le proprietà a livello di pagina, i record indicizzati, i metodi a livello di documento e l'intera superficie di stato / display / event di TPdfView.
- Affinato il layout dell'help per allinearlo alla baseline visiva losLab usata nella reference di HotXLS: dimensioni h1/h2 uniformate, stili della griglia di navigazione API consolidati nel StyleSheet condiviso e rimossi gli override CSS inline per-pagina su Navigation.html.
- La documentazione include ora uno script di supporto (Docs\Build-Expand-Entries.ps1) che rigenera l'arricchimento delle pagine delle voci da una singola tabella dati per una manutenzione ripetibile.
Version 1.27.0
- Aggiunto supporto alla creazione di PDF/A-1b: TPdf.SaveAsPdfA salva qualsiasi documento aperto come file conforme a PDF/A-1b tramite post-elaborazione del PDF di base con un aggiornamento incrementale che inietta un flusso di metadati XMP, un OutputIntent ICC sRGB e un catalogo del documento aggiornato — il tutto senza richiedere API DLL aggiuntive. Funziona su qualsiasi piattaforma supportata da PDFiumVCL.
- Aggiunto TPdf.SaveAsPdfAToStream per l'output PDF/A in memoria.
- Aggiunto TPdf.ValidatePdfA: controlla un PDF aperto per verificarne la conformità PDF/A (marker XMP pdfaid, OutputIntent con profilo ICC incorporato, crittografia) e restituisce un risultato strutturato con il livello di conformità rilevato e un insieme di problemi specifici trovati.
- Aggiunta property TPdf.PdfAConformance: restituisce il livello di conformità del documento attualmente aperto (pac1b, pac1a, pac2b, pac3b, pacNone o pacUnknown) senza dover invocare esplicitamente ValidatePdfA.
- Esportati nuovi tipi: TPdfAConformance, TPdfAValidationResult, TPdfAValidationIssue, TPdfASaveOptions (nella nuova unit FPdfPdfa.pas).
- SaveAsPdfA supporta un profilo ICC personalizzato tramite TPdfASaveOptions.IccProfileData; se lasciato vuoto viene utilizzato automaticamente il profilo sRGB IEC61966-2.1 integrato (HP/Microsoft, 3144 bytes).
- Sostituito il riferimento HTML monolitico con un sistema di help web ristrutturato: 302 singole pagine di voci API (una per ogni property, method, event e global function) che coprono TPdf e TPdfView, ciascuna con una descrizione completa, tabella dei parametri, esempio di codice Delphi e link See Also.
- Aggiunto Navigation.html: un indice di navigazione API completo su una pagina organizzato in sei sezioni (TPdf properties/methods/events, TPdfView properties/methods/events, global functions) con una griglia flex a 5 colonne per una scansione rapida.
- Ricostruiti TPdf.html e TPdfView.html come pagine compatte di panoramica dei componenti che mantengono le sezioni type-reference (Types, Constants, Global Variables) e rimandano alle singole pagine delle voci per tutti i membri.
- Aggiunta ricerca full-text basata su Search.js con corrispondenza incrementale lato client su tutte le 312 pagine indicizzate.
- Aggiornate tutte le barre di navigazione del sito per puntare a Navigation.html.
Version 1.26.0
- Aggiunto Demo/Lazarus/BatchExport, il port LCL della demo Delphi BatchExport v1.14.0. Stesso set di funzionalità: esportazione PDF -> JPG multi-file con avanzamento generale per file, avanzamento corrente per pagina, input DPI / qualità / password e un batch cancellabile in modo cooperativo supportato da IPdfCancellationToken. La cartella di output viene aperta nel file manager della piattaforma al termine dell'estrazione.
Version 1.25.0
- Aggiunto il riutilizzo di pagine Form XObject a TPdf, abilitando workflow di watermark, sovrapposizione di template e “stamp di una pagina su molte”: CreateXObjectFromPage produce un handle riutilizzabile da qualsiasi pagina di un altro documento; InsertFormObjectFromXObject inserisce UNA copia della pagina incapsulata nella pagina corrente. Restituisce il FPDF_PAGEOBJECT inserito in modo che il chiamante possa posizionarlo / scalarlo / ruotarlo con FPDFPageObj_SetMatrix e gli helper TPdfMatrix di v1.9.0.
- La nuova classe Pascal TPdfXObject incapsula l'handle FPDF_XOBJECT di PDFium e lo chiude automaticamente nel suo destructor, eliminando il cerimoniale manuale di FPDF_CloseXObject.
- Estese le suite di regression Delphi e Lazarus a 147 casi ciascuna e la suite C++Builder a 123 casi, coprendo i contratti di creazione di handle e di inserimento di page-object.
Version 1.24.0
- Aggiunto TPdf.RenderPageProgressive — una variante cancellabile di RenderPage che pilota il loop di rendering progressivo di PDFium e interroga un IPdfCancellationToken v1.7.0 tra le iterazioni, in modo che render lunghi ad alta DPI possano essere interrotti a metà pagina invece di bloccare il chiamante fino al completamento.
- Restituisce un valore TPdfProgressiveStatus: prsDone, prsCancelled o prsFailed. Passare AToken = nil per renderizzare fino al completamento senza mai mettere in pausa (nessuna possibilità di prsCancelled).
- Utilizza lo stesso zero-copy fast path introdotto in v1.21.0 — PDFium renderizza direttamente nel DIB del TBitmap di destinazione. Lo stesso fallback legacy si applica quando il DIB non può essere incapsulato.
- Estese le suite di regression Delphi e Lazarus a 145 casi ciascuna e la suite C++Builder a 121 casi, coprendo nil-token (completa), token pre-cancellato (prsCancelled) ed equivalenza di pixel con RenderPage sincrono su un token vivo.
Version 1.23.0
- Aggiunti sei nuovi metodi TPdfView che espongono alle applicazioni la selezione di testo dei form-widget e l'Undo/Redo di PDFium: GetSelectedFormText restituisce il testo attualmente selezionato all'interno del form widget con focus; SelectAllFormText seleziona tutti i caratteri; FormUndo / FormRedo / FormCanUndo / FormCanRedo pilotano la cronologia di editing del widget con focus. Le API PDFium sottostanti erano già bindate ma senza un punto di ingresso di alto livello. Tutti e sei terminano in modo sicuro in cortocircuito quando la view è inattiva o il documento non ha un widget AcroForm con focus.
- Estese le suite di regression Delphi e Lazarus a 142 casi ciascuna e la suite C++Builder a 119 casi, coprendo il contratto no-form-no-focus per ogni nuovo metodo.
Version 1.22.0
- Aggiunti wrapper di composizione pagine a TPdf: ImportPagesByIndex accetta un array di indici a base zero per copiare pagine specifiche da un documento di origine; ImportNPagesToOne restituisce un nuovo TPdf le cui pagine sono composite N-up di questo documento; MovePages riordina le pagine in-place. Le API PDFium sottostanti erano già bindate ma senza un punto di ingresso Pascal-friendly.
- ImportPagesByIndex accetta un array vuoto per importare ogni pagina di origine (equivalente a passare nil al livello di ABI C).
- Estese le suite di regression Delphi e Lazarus a 136 casi ciascuna e la suite C++Builder a 115 casi, coprendo importazione di sottoinsiemi, importazione dell'intero documento, riordino di pagine e composito N-up.
Version 1.21.0
- Migliorate le prestazioni di rendering passando TPdf.RenderPage / TPdf.RenderTile (e i corrispondenti helper TPdfView) a un percorso di output zero-copy. PDFium ora scrive direttamente nel buffer DIB del TBitmap di destinazione invece che in un buffer interno che veniva poi copiato riga per riga, risparmiando una copia di memoria di width x height x 4 bytes per ogni render. Il miglioramento è più evidente ad alta DPI (pannelli thumbnail, export print-quality, batch export).
- Il vecchio percorso per-scanline è mantenuto come fallback di sicurezza per il caso improbabile in cui il DIB di destinazione non possa essere incapsulato (dimensioni estreme, stride insolito, OOM). Il comportamento è byte-identico tra i due percorsi, solo più lento nel fallback.
- Estese le suite di regression Delphi e Lazarus a 132 casi ciascuna e la suite C++Builder a 112 casi, coprendo upgrade del caller-bitmap a pf32bit, round-trip delle dimensioni e un test di coerenza dello stride su bitmap di grandi dimensioni.
Version 1.20.0
- Aggiunta evidenziazione dei risultati di ricerca a TPdfView: HighlightSearchText(Text, MatchCase, MatchWholeWord) esegue la scansione della pagina di view corrente e restituisce il numero di corrispondenze trovate, dipingendo una maschera HighlightColor su ogni corrispondenza ad ogni redraw. ClearHighlight rimuove le evidenziazioni; il passaggio della view a una pagina diversa le elimina automaticamente poiché le corrispondenze sono specifiche per pagina.
- HighlightColor ha valore predefinito clYellow ed è published in modo che le applicazioni possano adattare il tema dell'evidenziazione alla loro palette UI.
- Estese le suite di regression Delphi e Lazarus a 129 casi ciascuna e la suite C++Builder a 109 casi, coprendo colore predefinito, round-trip del colore, “corrispondenze di parole reali in fixture” contro la stringa di sample.pdf e il contratto “parola mancante restituisce zero corrispondenze”.
Version 1.19.0
- Aggiunta property FitMode a TPdfView con quattro valori: pfmNone (zoom manuale), pfmActualSize (100%), pfmFitPage (l'intera pagina entra nel viewport) e pfmFitWidth (la larghezza della pagina corrisponde alla larghezza del viewport). La modalità di adattamento attiva viene riapplicata automaticamente su Resize e quando cambia la pagina corrente, in modo che documenti lunghi con dimensioni di pagina miste rimangano perfettamente inquadrati.
- Impostare direttamente Zoom annulla la modalità di adattamento attiva (FitMode torna a pfmNone), in linea con la convenzione standard dei lettori PDF in cui digitare un valore di zoom esce da Fit Page / Fit Width.
- Il valore predefinito è pfmNone in modo che le applicazioni esistenti mantengano il loro comportamento di zoom esplicito.
- Estese le suite di regression Delphi e Lazarus a 124 casi ciascuna e la suite C++Builder a 106 casi, coprendo valore predefinito, round-trip della modalità, fit-page che produce uno zoom reale su un documento caricato e zoom-manuale-annulla-fit-mode.
Version 1.18.0
- Aggiunta property PageColor a TPdfView, disaccoppiando lo sfondo della pagina PDF renderizzata dal Color del controllo circostante. Il valore predefinito è clWhite, in modo che le pagine PDF vengano ora renderizzate bianco-carta indipendentemente dal tema dell'applicazione host. I visualizzatori in dark-mode possono ora mantenere scura l'area di scorrimento lasciando bianca la pagina PDF effettiva (o di qualsiasi colore scelto dall'applicazione).
- Cambiamento di comportamento: le applicazioni che impostavano TPdfView.Color per ricolorare la pagina PDF dovrebbero ora impostare PageColor. L'esperienza predefinita migliora per il caso comune (pagine bianche su sfondi di controllo a tema) senza alcuna modifica al codice.
- Estese le suite di regression Delphi e Lazarus a 120 casi ciascuna e la suite C++Builder a 103 casi, coprendo valore predefinito e round-trip del colore.
Version 1.17.0
- Aggiunti toggle di lock-down dell'input utente a TPdfView in modo che le applicazioni che integrano il visualizzatore in kiosk, pannelli di preview o contesti read-only possano disabilitare i gesti di navigazione senza fare subclassing: AllowUserPageChange controlla le nuove scorciatoie da tastiera PgUp / PgDn / Ctrl+Home / Ctrl+End; ChangePageOnMouseScrolling controlla i nuovi salti di pagina wheel-up / wheel-down; AllowUserTextSelection è riservato per il futuro percorso di selezione testo via mouse-drag. Tutti e tre hanno valore predefinito True in modo che le applicazioni esistenti effettuino l'upgrade senza alcun cambio di comportamento.
- La navigazione di pagina con rotellina del mouse salta Ctrl+wheel in modo che le applicazioni possano mantenere Ctrl+wheel riservato per lo zoom.
- Estese le suite di regression Delphi e Lazarus a 118 casi ciascuna e la suite C++Builder a 101 casi, coprendo valori predefiniti e round-trip dei toggle.
Version 1.16.2
- Estesa la copertura di regression di TPdfView per i click sui link delle annotazioni quando la pagina del visualizzatore differisce dalla pagina TPdf associata, utilizzando un vero percorso di click del mouse headless su Delphi, Lazarus e C++Builder.
- Le suite Delphi e Lazarus eseguono ora 114 casi ciascuna e C++Builder esegue 99 casi.
Version 1.16.1
- Corretta la gestione dei click sui link in TPdfView in modo che le azioni automatiche di annotazione e web-link utilizzino la pagina attualmente visualizzata dal viewer, anche quando il componente TPdf associato è parcheggiato su una pagina diversa.
- Irrobustito TPdfThumbnailView contro riferimenti Pdf pendenti quando il componente TPdf collegato viene distrutto.
- Aggiunta copertura di regression sul ciclo di vita dei riferimenti dei thumbnail; le suite Delphi e Lazarus eseguono ora 113 casi ciascuna e C++Builder esegue 98 casi.
- Sincronizzati README, documentazione di test, contenuto search/index dell'HTML Help e output dei pacchetti C++ generati con gli aggiornamenti di integrazione da v1.7.0 a v1.16.0.
Version 1.16.0
- Aggiunta una nuova demo Delphi PrintDialog (Demo/Delphi/PrintDialog) focalizzata sulla stampa N-up (1 / 2 / 4 / 9 pagine per foglio) con filtro pagine dispari / pari, rendering in scala di grigi e bordi opzionali da 1 pixel per cella. È una piccola e deliberata compagna della demo PrintPDF esistente, che già copre preview, file recenti, zoom e scaling.
Version 1.15.0
- Aggiunto un nuovo componente TPdfThumbnailView (unit FPdfThumbnail) che renderizza un thumbnail di pagina per riga in un pannello laterale scorrevole con evidenziazione hover e selezione, oltre alla navigazione click-to-go. Progettato per affiancare un TPdfView in modo che gli utenti finali possano sfogliare un documento lungo per pagina.
- Il componente è registrato nella scheda della tavolozza losLab insieme a TPdf e TPdfView; properties chiave: Pdf, CurrentPageIndex, ThumbnailWidth, ThumbnailHeight, TextColor, HoverColor, SelectionColor, BorderColor e l'evento OnPageClick.
- Estese le suite di regression Delphi e Lazarus a 112 casi ciascuna e la suite C++Builder a 97 casi, coprendo valori predefiniti, round-trip delle dimensioni thumbnail, clamping di valori estremi, round-trip del colore e assegnazione di event handler.
Version 1.14.0
- Aggiunta una nuova demo Delphi BatchExport (Demo/Delphi/BatchExport) che mostra come convertire molti file PDF in JPG in un'unica passata utilizzando TPdf.LoadCustomDocument per il caricamento in streaming, IPdfCancellationToken per la cancellazione cooperativa e barre di avanzamento generale per file + corrente per pagina. La demo utilizza un'istanza TPdf per file (PDFium stesso non è thread safe) e apre la cartella di output in Explorer quando l'estrazione termina con successo.
Version 1.13.0
- Aggiunto un overlay UI di async-rendering a TPdfView tramite tre nuove properties: AsyncRendering, LoadingText e LoadingColor. Quando AsyncRendering è True il percorso di paint single-page disegna un piccolo indicatore “Loading...” sopra la pagina renderizzata in modo che le applicazioni che usano il proprio worker per render lunghi condividano un affordance visiva coerente.
- I valori predefiniti preservano il comportamento esistente: AsyncRendering è False, quindi le applicazioni che non aderiscono non vedono alcun cambio visivo.
- La documentazione chiarisce che PDFium stesso non è thread safe — per delegare effettivamente il render a un worker il chiamante deve mantenere un TPdf per worker; la prossima demo batch-export mostra quel pattern.
- Estese le suite di regression Delphi e Lazarus a 106 casi ciascuna e la suite C++Builder a 93 casi, coprendo valori predefiniti e round-trip delle tre properties.
Version 1.12.0
- Aggiunta gestione dei link click-driven a TPdfView. La nuova property LinkOptions controlla il comportamento automatico per i quattro tipi di azione di link PDF: goto (salto di pagina), URI (ShellExecute), launch (ShellExecute) ed embedded GotoR (riservato). I valori predefiniti abilitano loAutoGoto e loAutoOpenURI; loAutoLaunch e loAutoEmbeddedGoto rimangono off in modo che un click accidentale non possa eseguire un programma arbitrario.
- Aggiunti gli eventi OnAnnotationLinkClick e OnWebLinkClick che si attivano prima di qualsiasi azione automatica e consentono alle applicazioni di ispezionare il link, marcarlo come Handled o reindirizzarlo (per esempio, a un prompt di sicurezza).
- Il rilevamento del click sui link viene eseguito solo quando il gesto è un click piuttosto che un drag, utilizzando un nuovo anchor MouseDown in modo che i gesti di pan continuino a fluire attraverso il percorso di scroll esistente invariati.
- Estese le suite di regression Delphi e Lazarus a 102 casi ciascuna e la suite C++Builder a 91 casi, coprendo LinkOptions predefinito, round-trip del set e assegnazione di event handler.
Version 1.11.0
- Aggiunto polish visivo a TPdfView: le properties PageShadowSize, PageShadowColor e PageBorderColor dipingono un'ombra drop opzionale sotto il rettangolo della pagina e un bordo di un pixel attorno ad essa. I valori predefiniti preservano il precedente aspetto piatto (PageShadowSize = 0; il bordo viene disegnato nel clBlack predefinito ma si confonde nello sfondo bianco predefinito finché i chiamanti non cambiano i colori).
- Aggiunta una property SmoothScroll come flag opt-in per un futuro animation di scroll incrementale; la property ha round-trip oggi ed è collegata in modo che le applicazioni possano persistere la preferenza, mentre il lato rendering utilizza ancora il comportamento di scroll immediato esistente.
- Estese le suite di regression Delphi e Lazarus a 98 casi ciascuna e la suite C++Builder a 89 casi, coprendo valori predefiniti, round-trip della property e il clamp di shadow-size negativo.
Version 1.10.0
- Aggiunto inserimento diretto di immagini tramite nuovi overload TPdf.AddImage e TPdfView.AddImage che accettano un percorso di file oppure un TBitmap, oltre all'esistente AddPicture basato su TPicture. AddImage(FileName) riconosce qualsiasi formato registrato con le unit grafiche VCL o LCL (BMP, PNG tramite l'unit PngImage, JPG, ecc.) e percorre la stessa pipeline di AddPicture in modo che il comportamento sia identico.
- AddImage(TBitmap) salta l'intermediario TPicture, semplificando i chiamanti che già detengono un TBitmap proveniente da operazioni di rendering o di generazione batch.
- Estese le suite di regression Delphi e Lazarus a 92 casi ciascuna e la suite C++Builder a 84 casi, coprendo inserimento di bitmap, limiti di page-object, rifiuto di bitmap nil e caricamento di file BMP.
Version 1.9.0
- Aggiunto supporto di alto livello alle matrici di trasformazione tramite la nuova classe TPdfMatrix nell'unit FPdfMatrix. TPdfMatrix incapsula FS_MATRIX di PDFium con un'API OO per Translate, Scale, Rotate, HorizontalFlip, VerticalFlip, CentralFlip, Skew e Multiply, adatta a comporre trasformazioni prima di passarle a FPDFPageObj_SetMatrix e ad API PDFium simili.
- TPdfMatrix.Multiply effettua correttamente lo snapshot dei sei elementi della matrice prima di calcolare i nuovi valori di riga, correggendo un problema latente in cui le implementazioni Pascal alternative sovrascrivono elementi precedenti durante la stessa chiamata e producono risultati errati per qualsiasi composizione oltre la semplice traslazione.
- Estese le suite di regression Delphi e Lazarus a 88 casi ciascuna e la suite C++Builder a 81 casi, coprendo identity, reset, translate / scale / flip, ordine di composizione post-moltiplicativa e il caso di regression di Multiply.
Version 1.8.0
- Aggiunto caricamento di stream on-demand tramite il nuovo metodo TPdf.LoadCustomDocument(AStream, AOwnsStream) e la classe helper TPdfStreamAdapter, basata su FPDF_LoadCustomDocument di PDFium. PDFium legge ora blocchi dal TStream fornito solo quando necessario, quindi PDF molto grandi o remoti non richiedono più una copia in memoria upfront.
- Aggiunta proprietà opzionale dello stream: passando AOwnsStream = True si trasferisce il ciclo di vita del TStream a TPdf, che lo libera quando viene eseguito UnloadDocument.
- Estese le suite di regression Delphi e Lazarus a 79 casi ciascuna e la suite C++Builder a 75 casi, coprendo caricamento in streaming tramite TFileStream, pulizia dello stream posseduto e il contratto di sopravvivenza all'unload dello stream posseduto esternamente.
Version 1.7.0
- Aggiunte primitive di cancellazione async cooperativa nella nuova unit FPdfAsync, esponendo IPdfCancellationToken / IPdfCancellationTokenSource e un singleton PdfNoCancellationToken riutilizzabile in modo che i workflow di rendering ed export di lunga durata possano supportare semantiche pulite di cancel-from-UI.
- Aggiunto un helper leggero TPdfFuture<T> che esegue un worker su un thread di background e posta l'envelope TPdfFutureResult<T> di nuovo al main thread, distinguendo i casi di successo, cancellazione e fallimento.
- Estese le suite di regression Delphi e Lazarus a 76 casi ciascuna e la suite C++Builder a 73 casi, con copertura condivisa di stato di cancellazione, cancel idempotente, fan-out di callback e registrazione post-cancel.
Version 1.6.10
- Aggiunto l'accesso di alto livello TPdf.PrintPageRanges alla preferenza di intervallo di pagine di stampa del visualizzatore PDF, restituendo intervalli di pagine a base uno per il codice applicativo.
- Aggiunti TPdf.SetFormFieldFlags / SetFormFieldFlagsAt e gli helper corrispondenti di TPdfView in modo che le applicazioni possano aggiornare i flag dei campi AcroForm tramite l'API pubblica, inclusa la copertura dei flag di password e multi-select.
- Irrobustita la copertura ABI del binding PDFium per FPDF_DWORD dimensionato per Windows, le callback FPDF_FILEACCESS e i campi slot dell'embedder V8.
Version 1.6.9
- Aggiunti binding di basso livello per il rendering Skia per le API FPDF_RenderPageSkia e FPDF_FFLDrawSkia appena esportate nelle DLL PDFium standard e V8 incluse.
- Estesi i controlli di copertura del binding pubblico in modo che il caricamento delle DLL standard e V8 verifichi ora i punti di ingresso di rendering Skia insieme alle sonde di capacità V8/XFA esistenti.
Version 1.6.8
- Aggiunti TPdf.SetTextPositions e TPdfSingleArray per impostare posizioni per-carattere su oggetti di testo esistenti tramite la API FPDFText_SetPositions appena esportata.
- Promossa FPDFText_SetPositions a binding richiesto per le DLL PDFium attualmente incluse, confermando al contempo che i punti di ingresso di rendering Skia rimangono non disponibili perché le DLL non li esportano ancora.
- Estese le suite di regression Delphi, C++Builder e Lazarus a 65 casi ciascuna con copertura di posizione del testo.
Version 1.6.7
- Aggiunto l'accesso di alto livello TPdf alle azioni JavaScript name-tree del documento, restituendo nomi di azione e script tramite JavaScriptAction e JavaScriptActions.
- Aggiunto TPdf.FileIdentifier per leggere gli ID di trailer permanenti e cambianti come TBytes binari senza il byte terminatore di PDFium.
- Aggiunti TPdf.PageBox, GetPageBox e SetPageBox per MediaBox, CropBox, BleedBox, TrimBox e ArtBox sulla pagina corrente.
- Confermato che le DLL PDFium attualmente incluse lasciano solo i punti di ingresso di rendering Skia non disponibili a runtime perché tali export non sono presenti.
- Estese le suite di regression Delphi, C++Builder e Lazarus a 64 casi ciascuna con copertura di JavaScript del documento, ID di trailer e page-box.
Version 1.6.6
- Aggiunto supporto a runtime per la DLL PDFium V8-enabled inclusa. Impostare EnableV8Engine prima del caricamento seleziona ora pdfium.v8.dll dall'albero DLLs\Win32 o DLLs\Win64 ed espone i binding V8/XFA-only quando la DLL caricata li fornisce.
- Aggiunti V8FeaturesAvailable, XfaBStrHelpersAvailable, GetRecommendedV8Flags e binding opzionali di basso livello per FPDF_BStr_*, FPDF_GetRecommendedV8Flags e FPDF_GetArrayBufferAllocatorSharedInstance.
- Resa FPDFText_SetPositions opzionale in modo che PDFiumVCL continui a caricarsi con DLL PDFium che non esportano quel setter sperimentale di posizione del testo.
- Estese le suite di regression Delphi, C++Builder e Lazarus a 61 casi ciascuna con copertura delle capacità standard-DLL e V8-DLL.
Version 1.6.5
- Aggiunta ispezione del structure-tree di Tagged PDF tramite TPdf.StructureElements e TPdfView.StructureElements, inclusi tipo di elemento, titolo, testo alternativo, testo effettivo, testo di espansione, lingua, ID di marked-content, conteggi di figli e conteggi di attributi.
- Aggiunta selezione del print mode PDFium di Windows tramite TPdfPrintMode e SetPdfPrintMode, coprendo i print mode EMF, solo-testo, PostScript, pass-through, image-mask e Type 42.
- Aggiunti binding di basso livello per i restanti export pubblici PDFium della DLL standard che coprono azioni JavaScript, flag di form di annotazione/colore di font, stato attivo di page-object, inserimento indicizzato, valori float di content-mark, dati del profilo ICC di immagine, rimozione di form-object e posizioni di testo.
- Estese le suite di regression Delphi, C++Builder e Lazarus a 59 casi ciascuna con copertura di structure-tree di Tagged PDF, print mode e binding di export pubblici.
Version 1.6.4
- Aggiornate le demo Delphi, C++Builder e Lazarus per aprire automaticamente i PDF generati, il testo/le immagini esportati e le cartelle di output dei batch dopo la creazione riuscita.
Version 1.6.3
- Estese le suite di regression allineate Delphi, C++Builder e Lazarus a 56 casi ciascuna con copertura GUI di TPdfView per gli helper di fit-zoom, round-trip di coordinate device/page, hit-testing di caratteri e pan via mouse attraverso controlli di visualizzatore con finestra nascosta.
- Le fixture di TPdfView usano ora una dimensione di viewer esplicita e sottoclassi di solo test che esercitano gli handler di mouse protected mantenendo le suite completamente headless.
Version 1.6.2
- Corretto TPdf.AddPage(0, ...) in modo che la prima pagina inserita diventi immediatamente la pagina attiva. Il codice di esempio esistente continua a funzionare, mentre PageNumber ora riporta una pagina a base uno valida dopo l'inserimento.
- Sincronizzata la versione del pacchetto Lazarus ed estese le suite di regression allineate Delphi, C++Builder e Lazarus a 52 casi ciascuna.
Version 1.6.1
- Corretto un requisito di versione minima errato nel validatore di conformità di versione PDF di v1.6.0: l'azione SetState è stata riclassificata da PDF 1.5 a PDF 1.2, in linea con PDF 1.2 Reference 6.9.9. I target di SaveAs PDF 1.3 / 1.4 che contengono azioni SetState vengono ora salvati correttamente invece di essere rifiutati.
- Aggiunti controlli lessicali corrispondenti per PDF 1.2 secondo la stessa sezione di spec: le azioni Sound, Movie e NOP più lo spazio colore Separation sono ora bloccati quando la versione target scelta è precedente a PDF 1.2.
- Estese le suite di regression Delphi, C++Builder e Lazarus a 50 casi ciascuna aggiungendo un test positivo di accettazione PDF 1.4 SetState che blocca il limite corretto.
Version 1.6.0
- Irrobustiti i target SaveAs PDF 1.0 - PDF 1.7 espliciti con un validator completo di feature-versione che copre l'intera timeline di feature da PDF 1.1 a ISO 32000-1. Il validator blocca ora i salvataggi che contengono voci di dizionario, nomi di filtri, sottotipi di annotazione, tipi di azione, font, spazi colore o parametri di crittografia introdotti dopo la versione target scelta. Esempi: JBIG2Decode (1.4+), MarkInfo / Tagged PDF (1.4+), OutputIntents (1.4+), ICCBased / DeviceN / BleedBox / TrimBox / ArtBox / StructTreeRoot (1.3+), annotazioni Polygon / PolyLine / Caret / Screen / Watermark / Redact, crittografia AES e AES-256 (CFM AESV2 / AESV3), voci di catalogo Perms / Legal / Requirements / NeedsRendering e azioni version-gated come JavaScript, Trans, SetState, Rendition, GoToE, GoTo3DView vengono tutte rifiutate quando la versione PDF target non può rappresentarle.
Version 1.5.13
- Estese le suite di regression Delphi, C++Builder e Lazarus a 49 casi ciascuna, aggiungendo copertura diretta per il rifiuto di spazi colore ICCBased, MarkInfo di Tagged PDF, annotazioni Polygon, crittografia AES (V2) e annotazioni Redact contro target PDF 1.2 / 1.3 / 1.4 / 1.5 / 1.6 rispettivamente.
Version 1.5.12
- Corretta la post-elaborazione di SaveAs per le riscritture di catalogo incrementali. PDFiumVCL valida ora l'ultimo oggetto indiretto ripetuto, in modo che gli override esistenti di catalog /Version vengano sostituiti correttamente quando si salva verso una versione target PDF più vecchia esplicita.
- Estese le suite di regression Delphi, C++Builder e Lazarus a 44 casi ciascuna, aggiungendo copertura diretta per la sostituzione di catalog /Version obsoleto, normalizzazione di catalog version PDF 1.4 e rifiuto di feature di trasparenza e portable-collection quando la versione target PDF selezionata non può rappresentarle.
Version 1.5.11
- Irrobustito l'output SaveAs versionato per target PDF 1.3, 1.4, 1.5, 1.6 e 1.7 espliciti. PDFiumVCL normalizza ora i marker di versione del catalogo, mantiene l'OpenAction Fit Height predefinito version-safe e rifiuta feature PDF più recenti quando la versione target selezionata non può rappresentarle.
- Aggiunta copertura di regression Delphi, C++Builder e Lazarus che salva e ricarica file PDF 1.3 - PDF 1.7 espliciti, verificando l'header finale, l'OpenAction Fit Height predefinito e la versione PDF riportata.
Version 1.5.10
- Passato dall'opzione B della spec all'opzione C aggiungendo smoke test di TPdfView in tutte e tre le suite IDE (Tests.PdfView). Ogni suite costruisce un TForm parent nascosto (tramite TForm.CreateNew sui lati Pascal e
new TForm(NULL, 0)sul lato C++Builder), riparenta un TPdfView, imposta Active := True e poi verifica la superficie di round-trip per PageCount, PageNumber predefinito, Zoom, Rotation, DisplayMode e che View.Text corrisponda al TPdf.Text sottostante. Ogni suite IDE esegue ora 39 casi.
Version 1.5.9
- Passato dall'opzione A della spec all'opzione B aggiungendo smoke test di rendering in tutte e tre le suite IDE. Ogni suite Tests.Render chiama TPdf.RenderPage su sample.pdf e verifica tre segnali robusti invece di checksum byte-per-byte: la bitmap restituita corrisponde esattamente alla dimensione di pixel richiesta; dimensioni richieste diverse (200x100, 64x256) producono bitmap corrispondenti; e la pagina renderizzata è almeno per il 95% di sfondo bianco con almeno 50 (Lazarus: 20) pixel non bianchi che marcano il testo antialiased. Ogni suite IDE esegue ora 33 casi.
Version 1.5.8
- Chiusi i gruppi originali del test plan A(2) aggiungendo sette regression in più per IDE: TPdf.CreateAnnotation costruisce un'annotazione anHighlight più un round-trip SaveAs/LoadDocument, il percorso di lettura AcroForm su Demo/Delphi/FormFill/cmp_fill_out_and_merge_forms.pdf (FormType è ftAcroForm, FormFieldCount > 0, FlattenAllPages porta i campi a zero) e copertura di percorso di lettura silenziosa per Bookmarks, LinkAnnotationCount e WebLinkCount su un documento che non ha nessuna di quelle feature. Ogni suite IDE esegue ora 30 casi.
Version 1.5.7
- Estese le suite Delphi (DUnitX), Lazarus (FPCUnit) e C++Builder (GoogleTest) con sette nuove regression per IDE: PdfVersion, PageRotation, TPdf.FindFirst / FindNext per ricerca di sottostringa, accordo CharacterOrigin / CharacterRectangle rispetto all'origine di AddText, registrazione di CreateAttachment più un round-trip SaveAs/LoadDocument e un round-trip AddText di testo accentato che verifica che il percorso di embedding TrueType europeo di v1.3.0 mantenga intatti i code point supplementari Latin-1.
Version 1.5.6
- I PDF salvati ricevono ora un'azione di apertura Fit Height predefinita sulla prima pagina quando non è presente alcun OpenAction esistente, in modo che i lettori PDF visualizzino inizialmente i documenti generati con zoom alla altezza di pagina.
- Aggiunta copertura di regression Delphi, Lazarus e C++Builder per l'OpenAction generato e l'impostazione Fit Height.
Version 1.5.5
- Aggiunti regression test attraverso le suite Delphi (DUnitX), Lazarus (FPCUnit) e C++Builder (GoogleTest) per la superficie di API di ispezione di caratteri e font indicizzati (TPdf.FontBaseName, FontFamilyName, FontWeight, FontItalicAngle, FontData, FontIsEmbedded, CharacterFontWeight, CharacterAngle). La suite Lazarus salta intenzionalmente FontData, che attualmente causa access-violation all'interno di FPDFFont_GetFontData sotto FPC.
Version 1.5.4
- Aggiunta una demo C++Builder Attachment portata dall'esempio Delphi, che copre creazione di PDF, aggiunta, elencazione, estrazione, eliminazione e salvataggio di allegati di file embedded con visualizzazione del sottotipo MIME.
Version 1.5.3
- Esposto il calcolo di spread-page che supporta le modalità a due pagine di TPdfView come helper a livello di unit ComputeSpreadPages(DisplayMode, PageNumber, PageCount, out LeftPageNo, out RightPageNo). Il comportamento è invariato; l'helper rende la regola cover-aware testabile indipendentemente senza istanziare un viewer.
- Aggiunti cinque regression test attraverso le suite Delphi (DUnitX), Lazarus (FPCUnit) e C++Builder (GoogleTest) coprendo documenti vuoti, l'accoppiamento standard a due pagine, la pagina di copertina da sola in dmTwoPageContinuousWithCover, coppie post-copertina e comportamento di clamping per ultima pagina / fuori intervallo.
Version 1.5.2
- Aggiunto supporto della lingua del documento tramite TPdf.Language, mappato alla voce /Lang del catalogo PDF.
- Aggiunto l'accesso al sottotipo MIME degli allegati con TPdf.AttachmentType.
- Aggiunto anRedact a TPdfAnnotationSubtype e aggiunti helper di rimozione di page-object per TPdf e TPdfView.
- Aggiornate le demo viewer e attachment per visualizzare le nuove informazioni di lingua e tipo di allegato quando disponibili.
Version 1.5.1
- Aggiunto dmTwoPageContinuousWithCover per TPdfView in modo che i layout del viewer possano mostrare la prima pagina da sola e poi continuare con spread a due pagine.
- Aggiornate le demo MultiPageViewer Delphi, C++Builder e Lazarus per esporre la modalità di visualizzazione a due pagine cover-aware.
Version 1.5.0
- Aggiunte suite di test automatizzate smoke-level per Delphi (DUnitX), Lazarus (FPCUnit) e C++Builder (GoogleTest). Le tre suite condividono una singola fixture PDF in Tests\TestData ed eseguono gli stessi sette casi ciascuna, coprendo caricamento del documento, info di pagina, estrazione di testo, metadati, round-trip di salvataggio, validazione dell'header PDF e la property Compressed.
Version 1.4.3
- Migliorata la demo FontProperties per mostrare sia le API di metadati font di TPdfView che di TPdf, inclusi handle di font, dimensione dei dati di font e metriche di carattere.
- Aggiunte properties di ispezione di caratteri e font indicizzati a TPdfView e aggiornata la demo FontProperties per interrogare i metadati di font dei text-object.
Version 1.4.2
- Aggiunte properties di ispezione di caratteri e font indicizzati a TPdf per l'analisi del testo senza richiedere un viewer. Le properties indicizzate per carattere (CharacterAngle, CharacterFontSize, CharacterFontWeight) interrogano metriche per-carattere dallo stream di testo della pagina corrente. Le properties indicizzate per page-object (FontAscent, FontBaseName, FontData, FontDescent, FontFamilyName, FontHandle, FontIsEmbedded, FontItalicAngle, FontWeight) interrogano i metadati di font per qualsiasi oggetto di testo sulla pagina corrente.
- Gli oggetti di pagina non-testo restituiscono valori zero o vuoti sicuri per tutte le properties Font* invece di sollevare un errore, rendendo semplice iterare ogni oggetto di pagina e ispezionare solo quelli di testo.
- FontBaseName legge direttamente il nome PostScript base font invece di ricadere sul nome della famiglia di font, fornendo un identificatore più accurato per i font embedded.
Version 1.4.1
- Aggiunte versioni C++Builder e Lazarus della demo EuropeanText in modo che tutte le famiglie IDE supportate possano verificare la generazione di testo europeo accentato con font TrueType di sistema.
- Aggiunte versioni C++Builder e Lazarus della demo FormFill, includendo PDF di form di esempio, modifica di campi, rigenerazione dell'aspetto, salvataggio del compilato e workflow di salvataggio flattened.
Version 1.4.0
- Aggiunto supporto Lazarus / Free Pascal: il nuovo pacchetto PDFiumLaz fornisce gli stessi componenti TPdf, TPdfView e correlati sotto il widget set LCL, estendendo la libreria all'IDE Lazarus e al compilatore Free Pascal accanto agli esistenti pacchetti Delphi e C++Builder.
- Aggiunte versioni Lazarus delle demo in modo che gli sviluppatori Lazarus possano esplorare ogni feature con esempi eseguibili.
- Corretto un problema di compilazione Lazarus in cui le define condizionali di Free Pascal venivano valutate insieme ai controlli di versione del compilatore Delphi, causando il fallimento delle build FPC che tentavano di risolvere nomi di unit Delphi-specifici.
Version 1.3.1
- Documentato il workflow di flattening dei form nel set di help: GenerateFormAppearances, FlattenPage, FlattenAllPages e le costanti FLAT_* / FLATTEN_* correlate sono ora coperti in TPdf, TPdfView, nell'API reference, nella matrice delle feature e negli esempi di programmazione.
- Corretta la tabella di architettura nella pagina di overview in modo che elenchi le unit di binding effettive distribuite nella cartella Lib.
Version 1.3.0
- Migliorato il supporto ai caratteri europei durante la creazione di PDF. TPdf.AddText carica ora e mette in cache il font TrueType di sistema corrispondente prima di creare un oggetto di testo, preservando i caratteri accentati di ceco, francese, tedesco, spagnolo, portoghese, polacco e turco che i font standard integrati di PDFium non possono rappresentare.
- Le applicazioni che producevano in precedenza punti interrogativi o glifi di sostituzione per testo Latino non-ASCII verranno ora renderizzate correttamente senza alcuna modifica al codice. Aggiunta la demo EuropeanText per illustrare la feature.
Version 1.2.0
- Aggiunto refresh dell'aspetto AcroForm a TPdf: chiamare GenerateFormAppearances dopo aver modificato i valori di FormField[] aggiorna l'aspetto del widget in modo che i valori compilati siano visibili nei lettori PDF standard senza richiedere una sessione di editing interattiva.
- Aggiunti helper di flattening dei form a TPdf (FlattenPage / FlattenAllPages) e TPdfView (FlattenPage per la pagina di view corrente). Il flattening incorpora permanentemente i valori di campo compilati come normale contenuto di pagina e rimuove il layer di form interattivo, producendo un documento statico che viene renderizzato in modo coerente su tutti i viewer.
- Aggiunto Demo\Delphi\FormFill per dimostrare i workflow fill-and-save e fill-and-flatten con un PDF AcroForm di esempio.
Version 1.1.2
- Aggiunta compressione di stream PDF in fase di salvataggio. La nuova property TPdf.Compressed (abilitata di default) riscrive gli stream di contenuto non compressi come stream compressi FlateDecode al salvataggio, riducendo significativamente la dimensione del file per i PDF generati programmaticamente. Le applicazioni che richiedono output non compresso semplice possono impostare Compressed a False prima di chiamare SaveAs.
Version 1.1.1
- Le build del pacchetto Win64 non includono più le unit di registrazione design-time, prevenendo fallimenti di build quando il pacchetto Win64 viene distribuito in un contesto solo-runtime.
- Il loader della DLL PDFium cerca ora prima nella sottodirectory applicativa Win32 o Win64, usando i nomi standard pdfium.dll e pdfium.v8.dll, e ricade sulla directory flat dell'applicazione e sulla system directory di Windows. Ciò corrisponde al layout di DLL incluso con il pacchetto dei componenti, rendendo l'installazione semplice.
Version 1.1.0
- Corretto un difetto visivo di clipping nella modalità a due pagine di TPdfView: il contenuto della pagina sanguinava attraverso il gutter perché sia il tile di pagina sinistra che destra condividevano un singolo rettangolo di clipping. Ogni tile ora effettua il clipping in modo indipendente in modo che il contenuto rimanga entro il proprio confine di pagina.
- Migliorato il messaggio di errore della demo Delphi quando la DLL PDFium non può essere trovata, fornendo un prompt più chiaro con il nome e la posizione attesi della DLL.