PDFiumVCL Versionshinweise
Versionshistorie für benutzerrelevante PDFiumVCL-Funktionen, Korrekturen, Viewer-Verbesserungen, Dokumenterzeugung, PDF/A-Ausgabe, Rendering und Dokumentationsaktualisierungen.
Version 1.39.52
Geändert (Changed)
Demo\Lazarus\CreatePDFwurde erweitert, sodass das Einstiegssample jetzt eine zweiseitige PDF mit vector paths, table content, embedded image, text annotation, rotated text und einem klareren document-building walkthrough erzeugt.- Für alle Delphi-, C++Builder- und Lazarus-Demoordner wurden ansprechendere
README.html-Seiten ergänzt; das verbleibende reine Text-README der Demo wurde durch eine browserlesbare Anleitung ersetzt. TPdf.AboutInfo, Lazarus-Paketmetadaten und Installer-Versionsmetadaten wurden auf 1.39.52 aktualisiert.
Version 1.39.51
- Die Batch-Zusammenfassungen von
Demo\Delphi\PreflightReportCliwurden um Standardstatus-Summen für Pass, Action required und Review über die ausgewählten Standards erweitert. - Zeilen pro Datei enthalten jetzt Action-required- und Review-Zähler in TXT / HTML / JSON / CSV-Zusammenfassungen, sodass CI-Artefakte leichter geprüft werden können, ohne jeden erzeugten Bericht zu öffnen.
TPdf.AboutInfo, Lazarus-Paketmetadaten und Installer-Versionsmetadaten wurden auf 1.39.51 aktualisiert.
Version 1.39.50
- Der Verzeichnis-Batch-Modus von
Demo\Delphi\PreflightReportCliwurde erweitert:batchdir=foldersammelt gefundene PDF-Pfade, sortiert sie und erzeugt Berichte anschließend in stabiler Reihenfolge. - Rekursive Verzeichnisscans erzeugen jetzt reproduzierbare Berichtsreihenfolgen und Zusammenfassungszeilen, während explizite
batch=list.txt-Verarbeitung weiterhin die Reihenfolge der Listendatei beibehält. TPdf.AboutInfo, Lazarus-Paketmetadaten und Installer-Versionsmetadaten wurden auf 1.39.50 aktualisiert.
Version 1.39.49
- Die Batch-Zusammenfassungen von
Demo\Delphi\PreflightReportCliwurden erweitert und protokollieren jetzt run settings: Quelltyp, Quellpfad, rekursiven Zustand, Ausgabeverzeichnis, Berichtsformat, ausgewählte Standards undfailon=-Modus. - JSON-Zusammenfassungen enthalten jetzt ein
run-Objekt, TXT- und HTML-Zusammenfassungen zeigen einen Abschnitt für run settings, und CSV-Zeilen wiederholen dieselben Audit-Spalten für Tabellenkalkulationen und CI pipelines. TPdf.AboutInfo, Lazarus-Paketmetadaten und Installer-Versionsmetadaten wurden auf 1.39.49 aktualisiert.
Version 1.39.48
- Das batch output naming von
Demo\Delphi\PreflightReportCliwurde verbessert, sodass duplicate input file names mit demselbenoutdir=ihre generated reports nicht mehr gegenseitig ueberschreiben. - Batch runs haengen jetzt
-2,-3und weitere Suffixe an, wenn ein generated report path in derselben Ausfuehrung bereits vergeben wurde, und summaries protokollieren den finalen collision-safe report path. TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.48 aktualisiert.
Version 1.39.47
- Die batch summaries von
Demo\Delphi\PreflightReportCliwurden erweitert, sodass TXT- und JSON-Ausgaben jetzt aggregate totals fuer total files, processed files, failed files, issues undfailon=matches enthalten. - CSV summaries bleiben fuer bestehende consumers eine reine row table, waehrend HTML summaries dieselben aggregate metrics weiter im dashboard header anzeigen.
TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.47 aktualisiert.
Version 1.39.46
Demo\Delphi\PreflightReportCliwurde umsummary=batch.html/.htmerweitert, damit batch runs neben TXT / CSV / JSON manifests ein browser-readable dashboard ausgeben koennen.- HTML summaries zeigen total-, processed-, failed-, issue- und
failon=match metrics und listen danach jeden input mit report links, status, counts und error text auf. TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.46 aktualisiert.
Version 1.39.45
Demo\Delphi\PreflightReportCliwurde umbatchdir=folderundrecursiveerweitert, damit Skripte PDF folders direkt scannen koennen, ohne zuerst ein list file zu schreiben.- Directory batch mode verwendet das Verhalten von
outdir=,summary=,standards=undfailon=aus list-based batch mode wieder; non-recursive scannt nur die ausgewaehlte folder, undrecursiveschliesst subfolders ein. TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.45 aktualisiert.
Version 1.39.44
Demo\Delphi\PreflightReportCliwurde umsummary=batch.csv|json|txterweitert, damit batch runs neben den per-file reports ein machine-readable manifest ausgeben können.- Batch summaries enthalten jeden input path, report path, status, standard count, passed count, issue count,
failon=match state und error text für CI jobs und externe scripts. TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.44 aktualisiert.
Version 1.39.43
Demo\Delphi\PreflightReportCliwurde umbatch=list.txtundoutdir=reportserweitert, damit scripts in einem Lauf preflight reports für eine Liste von PDF files erzeugen können.- Batch mode überspringt leere Zeilen und
#-Kommentarzeilen, leitet jeden.preflight.<ext>report name aus dem Eingabe-PDF ab, fährt nach per-file errors fort und fasst processed und failed files vor der Rückgabe zusammen. TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.43 aktualisiert.
Version 1.39.42
Demo\Delphi\PreflightReportCliwurde umfailon=none|issues|action|reviewerweitert, damit CI jobs erzeugte preflight results in deterministische exit codes umsetzen können.- Die CLI gibt jetzt exit code 2 zurück, wenn eine ausgewählte
failon=rule nach dem Erzeugen der report file und der optional attached-report PDF zutrifft; runtime errors geben weiterhin exit code 1 zurück. TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.42 aktualisiert.
Version 1.39.41
Demo\Delphi\PreflightReportCliwurde umattach=output.pdferweitert, sodass ein erzeugter preflight report als document-level attachment in eine neue PDF copy eingebettet werden kann.- Die CLI behält die erzeugte TXT / HTML / Markdown / JSON / CSV report file auf dem Datenträger und verweigert das Anhängen an den ursprünglichen input PDF path, um versehentliches Überschreiben zu vermeiden.
TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.41 aktualisiert.
Version 1.39.40
Demo\Delphi\PreflightReportCliwurde hinzugefügt, ein Delphi console companion für scriptableFPdfPreflightReport-Erstellung ohne Öffnen eines viewer.- Die CLI unterstützt no-argument sample creation sowie input / output arguments, optional password, die Ausgabeformate
text/html/md/json/csvundstandards=filtering für PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R und PDF/VT. TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.40 aktualisiert.
Version 1.39.39
FPdfPreflightReportwurde umTPdfPreflightReport.ToMarkdownundSaveMarkdownToFileerweitert, damit preflight reports als fuer issue tracker geeignetes Markdown exportiert werden koennen.- Die Delphi-, C++Builder- und Lazarus-Beispiele
PreflightReportwurden um Markdown preview switching und Save MD actions neben dem bestehenden TXT / HTML / JSON / CSV workflow erweitert. TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden aktualisiert, um 1.39.39 zu melden.
Version 1.39.38
- Die Delphi-, C++Builder- und Lazarus-Beispiele
SecurityAuditwurden um JSON audit report export neben dem bestehenden TXT save / copy workflow erweitert. - Der JSON report enthält
format,generatedAt,summary,findingCountsowie strukturiertefindings-Zeilen mit severity-, area- und detail-Feldern. TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden aktualisiert, um 1.39.38 zu melden.
Version 1.39.37
FPdfPreflightReportwurde umTPdfPreflightReport.ToCsvundSaveCsvToFileerweitert, sodass preflight reports als spreadsheet-friendly CSV exportiert werden können.- Die Delphi-, C++Builder- und Lazarus-
PreflightReport-samples wurden um CSV preview switching und Save CSV actions neben dem vorhandenen TXT / HTML / JSON workflow erweitert. TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden aktualisiert, um 1.39.37 zu melden.
Version 1.39.36
FPdfPreflightReportwurde umTPdfPreflightReport.IssueCategoryCountssowie die wiederverwendbaren TypenTPdfPreflightIssueCategoryCountundTPdfPreflightIssueCategoryCountserweitert, um marker-level issues nach category zu aggregieren.TPdfPreflightReport.ToText,ToHtmlundToJsonwurden aktualisiert, sodass generierte PreflightReport-Ausgaben issue-category count summaries neben per-standard rows und detailed issue recommendations enthalten.TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.36 aktualisiert.
Version 1.39.35
- Das erweiterte
PrintDialogsample wurde in Delphi, C++Builder und Lazarus inPrintPreferencesumbenannt, sodass der demo name jetzt zum Workflow für PDF author print preferences, N-up printing, odd / even filtering, grayscale, cell border und duplex mapping passt. TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.35 aktualisiert.
Version 1.39.34
Demo\Delphi\PrintPDFwurde um PDF-Laden per Drag-and-drop erweitert, und der vorhandeneDemo\CBuilder\PrintPDFworkflow wurde zusammen mit den PrintPDF-Beispielen für Delphi und Lazarus dokumentiert.TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden aktualisiert, sodass 1.39.34 gemeldet wird.
Version 1.39.33
Demo\CBuilder\SplitViewwurde hinzugefügt und vervollständigt die SplitView sample matrix für Delphi, C++Builder und Lazarus.TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden aktualisiert, damit sie 1.39.33 melden.
Version 1.39.32
Demo\Lazarus\SplitViewwurde hinzugefügt und bringt side-by-side PDF comparison mit two- or three-pane layouts, active-view navigation, synchronized commands, zoom presets und rotation nach Lazarus.TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden aktualisiert, damit sie 1.39.32 melden.
Version 1.39.31
Demo\Lazarus\PrintPDFwurde hinzugefügt und bringt den standard PDF print workflow mit preview navigation, page ranges, copies, collate mode, progress und cancellation nach Lazarus.TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden aktualisiert, damit sie 1.39.31 melden.
Version 1.39.30
Demo\Lazarus\FontPropertieswurde hinzugefügt und vervollständigt die FontProperties-Beispielmatrix über Delphi, C++Builder und Lazarus.TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden aktualisiert, sodass 1.39.30 gemeldet wird.
Version 1.39.29
Demo\CBuilder\FontPropertieswurde hinzugefügt und bringt die Prüfung indexierter Zeichen- und Schriftmetadaten neben dem Delphi-Beispiel auch zu C++Builder.TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden aktualisiert, sodass 1.39.29 gemeldet wird.
Version 1.39.28
Demo\Delphi\ExtractTextPageswurde hinzugefügt und vervollständigt die Beispielmatrix für die seitenweise Textextraktion über Delphi, C++Builder und Lazarus.TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden aktualisiert, sodass 1.39.28 gemeldet wird.
Version 1.39.27
Demo\Lazarus\PrintDialogwurde hinzugefügt und vervollständigt den PrintDialog sample matrix für Delphi, C++Builder und Lazarus.TPdf.AboutInfo, Lazarus package metadata und installer version metadata melden jetzt 1.39.27.
Version 1.39.26
Demo\CBuilder\PrintDialogwurde hinzugefügt, sodass der N-up printing und PDF author print preferences workflow neben dem Delphi sample auch C++Builder abdeckt.TPdf.AboutInfo, Lazarus package metadata und installer version metadata melden jetzt 1.39.26.
Version 1.39.25
Demo\CBuilder\ViewerInteractionLabwurde hinzugefügt und vervollständigt den ViewerInteractionLab sample matrix für Delphi, C++Builder und Lazarus.- Library build workflow und Win64 C++Builder package outputs wurden aktualisiert, damit
TPdfViewviewer interaction methods in Win64 demos korrekt linken. TPdf.AboutInfo, Lazarus package metadata und installer version metadata melden jetzt 1.39.25.
Version 1.39.24
Demo\Lazarus\ViewerInteractionLabwurde hinzugefügt, sodass der focused viewer interaction workflow neben dem Delphi sample auch Lazarus abdeckt.TPdf.AboutInfo, Lazarus package metadata und installer version metadata melden jetzt 1.39.24.
Version 1.39.23
Demo\Lazarus\SearchAndSelectwurde hinzugefügt und vervollständigt die SearchAndSelect sample matrix für Delphi, C++Builder und Lazarus.TPdf.AboutInfo, Lazarus package metadata und installer version metadata melden jetzt 1.39.23.
Version 1.39.22
Demo\CBuilder\ContentExtractionLabundDemo\Lazarus\ContentExtractionLabwurden hinzugefügt, sodass der multi-category content extraction workflow alle unterstützten demo IDEs abdeckt.TPdf.AboutInfo, Lazarus package metadata und installer version metadata melden jetzt 1.39.22.
Version 1.39.21
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportundDemo\CBuilder\PreflightReportum einen preview format selector erweitert, damit Benutzer text oder JSON output vor dem Speichern prüfen können.TPdf.AboutInfo, Lazarus package metadata und installer version metadata melden jetzt 1.39.21.
Version 1.39.20
- JSON-Export für
FPdfPreflightReportüberTPdfPreflightReport.ToJsonundSaveJsonToFilehinzugefügt, mit maschinenlesbarer summary, per-standard status / priority, next action und issue detail. Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportundDemo\CBuilder\PreflightReportum Save JSON Aktionen neben dem TXT / HTML Export erweitert.TPdf.AboutInfo, Lazarus package metadata und installer version metadata melden jetzt 1.39.20.
Version 1.39.19
FPdfPreflightReportwurde umTPdfPreflightStatus, issue categories, per-standard priority und next-action guidance in TXT / HTML reports erweitert.Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportundDemo\CBuilder\PreflightReportzeigen jetzt status, priority, issue count und next action in der summary grid.TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.19 aktualisiert.
Version 1.39.18
Demo\Lazarus\SecurityAuditwurde hinzugefügt und vervollständigt die Delphi-, C++Builder- und Lazarus-Beispielmatrix für den read-only PDF risk-surface audit workflow.- Das Lazarus-Beispiel listet permissions, attachments, JavaScript actions, URI / Launch link annotations, web links, signatures, XFA state, V8 / XFA helper availability und unsupported-feature callbacks auf und speichert oder kopiert die finding list als TXT report.
TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.18 aktualisiert.
Version 1.39.17
Demo\CBuilder\SecurityAuditwurde hinzugefügt und bringt den read-only PDF risk-surface audit workflow neben dem vorhandenen Delphi-Beispiel zu C++Builder.- Das C++Builder-Beispiel listet permissions, attachments, JavaScript actions, URI / Launch link annotations, web links, signatures, XFA state, V8 / XFA helper availability und unsupported-feature callbacks auf und speichert oder kopiert die finding list als TXT report.
TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.17 aktualisiert.
Version 1.39.16
Demo\CBuilder\SearchAndSelectwurde hinzugefügt und bringt den eigenständigen SearchAndSelect viewer workflow neben dem vorhandenen Delphi-Beispiel zu C++Builder.- Das C++Builder-Beispiel erstellt oder öffnet PDFs, listet seitenübergreifende matches mit page / character-index previews, unterstützt Previous / Next und double-click navigation und hebt aktuelle Seitentreffer mit
HighlightSearchTexthervor. - Es zeigt außerdem
AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelection,OnSelectionChangeund spreadDisplayMode-Optionen; Versionsmetadaten melden jetzt 1.39.16.
Version 1.39.15
Demo\CBuilder\WatermarkStampwurde hinzugefügt und vervollständigt die Delphi-, Lazarus- und C++Builder-demo matrix für wiederverwendbare Form XObject watermark und stamp workflows.- Das C++Builder-Beispiel erstellt target- und stamp-PDFs, verwendet die stamp page über
CreateXObjectFromPagewieder, wendetTPdfMatrixtransforms an und speichert centered watermarks, corner stamps und page number labels. TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden aktualisiert, damit sie 1.39.15 melden.
Version 1.39.14
Demo\Lazarus\WatermarkStampwurde hinzugefügt und bringt den wiederverwendbaren Form XObject watermark und stamp workflow nach Lazarus.- Das Lazarus-Beispiel erstellt target- und stamp-PDFs, verwendet die stamp page über
CreateXObjectFromPagewieder, wendetTPdfMatrixtransforms an und speichert centered watermarks, corner stamps und page number labels. TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden aktualisiert, damit sie 1.39.14 melden.
Version 1.39.13
Demo\CBuilder\PreflightReportwurde hinzugefügt und vervollständigt die Delphi-, Lazarus- und C++Builder-Demomatrix für den wiederverwendbarenFPdfPreflightReportworkflow.- Das C++Builder-Beispiel verwendet
FPdfPreflightReport.hpp, um standard summaries, TXT report previews, TXT / HTML report files und Open Last Report-Verhalten zu erzeugen. TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden aktualisiert, damit sie 1.39.13 melden.
Version 1.39.12
Demo\Lazarus\PreflightReportwurde hinzugefügt und bringt den PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R und PDF/VT preflight report workflow zu Lazarus.- Das Lazarus-Beispiel kann ein PDF öffnen oder erstellen, target standards auswählen, summary rows und TXT report output anzeigen, TXT / HTML reports speichern und den zuletzt gespeicherten report öffnen.
TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden aktualisiert, damit sie 1.39.12 melden.
Version 1.39.11
Demo\Delphi\SearchAndSelectwurde um eine Suchergebnisliste über alle Seiten erweitert, die page number, character index und preview text erfasst.- Previous / Next match navigation und double-click result jumping wurden ergänzt, während das Verhalten von
HighlightSearchTextauf der aktuellen Seite erhalten bleibt. TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden aktualisiert, damit sie 1.39.11 melden.
Version 1.39.10
Demo\Delphi\SecurityAuditwurde um Save Report und Copy Report actions erweitert, die den aktuellen summary und die finding rows als TXT audit report exportieren.- Das demo löscht jetzt den report export state, wenn das audit panel zurückgesetzt wird, damit kopierte oder gespeicherte reports den sichtbaren findings entsprechen.
TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.10 aktualisiert.
Version 1.39.9
Demo\Delphi\ContentExtractionLabwurde um source-PDF save, report copy-to-clipboard und all / none category selection actions erweitert.- Das demo invalidiert jetzt den aktuellen report, wenn sich category selection ändert, damit TXT / JSON exports dem sichtbaren extraction scope entsprechen.
TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.9 aktualisiert.
Version 1.39.8
Demo\Delphi\ContentExtractionLabwurde hinzugefügt, ein einheitliches content extraction workflow sample für document metadata, page text, page objects, images, attachments, links, annotations, bookmarks und font / character metrics.- Das Beispiel kann ein vorhandenes PDF öffnen oder ein synthetic PDF mit text, image, attachment und annotation Inhalt erzeugen und anschließend summary rows sowie detaillierte TXT / JSON reports generieren.
TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.8 aktualisiert.
Version 1.39.7
Lib\FPdfPreflightReport.paswurde hinzugefügt, ein wiederverwendbarer report helper, derValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfRundValidatePdfVTin einTPdfPreflightReport-Objekt zusammenführt.Demo\Delphi\PreflightReportwurde als workflow sample hinzugefügt: PDF öffnen oder erstellen, target standards auswählen, summary rows und issue recommendations anzeigen sowie TXT- oder HTML-Berichte speichern.- Die erzeugten Berichte beschreiben ausdrücklich die Grenze der eingebauten marker-level validation, damit Anwendungen bei Bedarf dedizierte content-level preflight tools ergänzen können.
TPdf.AboutInfo, Lazarus package metadata, package project lists und installer version metadata wurden auf 1.39.7 aktualisiert.
Version 1.39.6
Demo\Delphi\SearchAndSelectwurde hinzugefügt, ein fokussiertes viewer workflow Beispiel für search highlighting, text selection, selected-text preview, copy, clear und spread display modes.- Das Beispiel demonstriert
HighlightSearchText, match-case / whole-word Suchoptionen,AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboardundClearSelection, ohne neue Library API hinzuzufügen. TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.6 aktualisiert.
Version 1.39.5
Demo\Delphi\ViewerInteractionLabwurde zu einem SearchAndSelect-artigen viewer UX Beispiel mitHighlightSearchText, match-case / whole-word Optionen, Vorschau des ausgewählten Textes und vorhandenen selection / clipboard controls erweitert.Demo\Delphi\PrintDialogwurde erweitert, um PDF author print preferences zu prüfen:PrintCopies,PrintPageRanges,PrintScaling,PrintPaperHandlingund sichtbaresSetPdfPrintPaperHandlingDevModeduplex mapping.Demo\Delphi\SecurityAuditwurde hinzugefügt, ein schreibgeschütztes risk-surface Beispiel, das permissions, attachments, document JavaScript, URI / Launch links, web links, signatures, XFA state und V8 / XFA helper availability auflistet.TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.5 aktualisiert.
Version 1.39.4
Demo\CBuilder\ImageToPDFundDemo\Lazarus\ImageToPDFwurden hinzugefügt und vervollständigen die ImageToPDF-Beispielmatrix für Delphi, C++Builder und Lazarus.- Die neuen Beispiele demonstrieren Mehrfachauswahl von Bildern, Vorschau des ausgewählten Bildes, eine PDF-Seite pro Bild, A4 portrait / landscape-Seitengröße, zentrierte Bildskalierung, Fortschritt pro Bild und das Öffnen des erzeugten PDF nach dem Speichern.
TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.4 aktualisiert.
Version 1.39.3
Demo\CBuilder\BatchExportwurde hinzugefügt und bringt den Multi-File-PDF-zu-JPG-Export-Workflow zu C++Builder, neben den vorhandenen Delphi- und Lazarus-Beispielen.- Das Beispiel demonstriert
LoadCustomDocument,IPdfCancellationTokenSource, Streaming-Eingabe überTFileStream, Fortschritt pro Datei und pro Seite, Abbruchbehandlung, DPI / quality / password-Eingaben und das Öffnen des Ausgabeordners nach Abschluss. TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.3 aktualisiert.
Version 1.39.2
Demo\Delphi\WatermarkStampwurde hinzugefügt, ein ausführbares Form XObject Workflow-Beispiel, das ein Ziel-PDF und ein wiederverwendbares stamp PDF erstellt und danach zentrierte Wasserzeichen, Stempel oben rechts und Seitenzahl-Labels auf jede Seite anwendet.- Das Beispiel demonstriert
CreateXObjectFromPage,InsertFormObjectFromXObject,TPdfMatrixundFPDFPageObj_SetMatrix, ohne neue Bibliotheks-API hinzuzufügen. Docs\en-us\Examples.htmlwurde aktualisiert, um beim Übergeben von Matrizen anFPDFPageObj_SetMatrixdas aktuelle MusterTPdfMatrix.Handlezu verwenden.TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.2 aktualisiert.
Version 1.39.1
- Die Batch-build-Kompatibilität der C++Builder-Demos
PDFViewerundMultiPageViewerwurde korrigiert, indemnullptrfür den aktuellen project mode durchNULLersetzt wurde. Demo\Delphi\ViewerInteractionLabwurde hinzugefügt, ein fokussiertesTPdfView-Beispiel für display modes, fit modes, page colors, rotation, user text selection, clipboard actions undDeviceToPage-Koordinatenfeedback.Demo\CBuilder\StandardsLab/Demo\Lazarus\StandardsLabwurde hinzugefügt, damit Lazarus-Benutzer den Validierungs- und marker-output-Workflow für PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R und PDF/VT ausführen können.- Die standards units wurden in
Lib\37.0\PDFiumVcl.dprojandLib\FPC\PDFiumLaz.lpkaufgeführt, und der Build des Delphi-DemosSplitViewwurde durch Entfernen eines doppeltenWinapi.ShellAPI-Imports korrigiert. - Batch-build-Blocker der Delphi-Demos in
BatchExport,PDFViewer,MultiPageViewerundSplitViewwurden ohne Änderung des Laufzeitverhaltens behoben. TPdf.AboutInfo, Lazarus package metadata und installer version metadata wurden auf 1.39.1 aktualisiert.
Version 1.39.0
Demo\Delphi\StandardsLabwurde hinzugefügt, ein ausführbares Standards-Workflow-Beispiel, das ein PDF lädt oder erstellt,ValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfRundValidatePdfVTausführt und erkannte conformance, Bestehensstatus und issue-Zahlen in einer Tabelle zeigt.- Die Speichern-Schaltflächen in StandardsLab rufen
SaveAsPdfA,SaveAsPdfUa,SaveAsPdfE,SaveAsPdfX,SaveAsPdfRundSaveAsPdfVTauf, sodass die PDF-Standards-marker-Ausgabe ohne eigenes Testprogramm sichtbar wird. TPdf.AboutInfo, Lazarus-Paketmetadaten und Installer-Versionsmetadaten wurden auf 1.39.0 aktualisiert.
Version 1.38.0
- Such- und Textauswahl-Overlays in
TPdfViewverwenden jetzt echtes alpha blending statt logischer mask-Zeichnung, sodass Seiteninhalt unter Hervorhebungen erhalten bleibt. SetPdfPrintPaperHandlingDevModehinzugefügt, umTPrintPaperHandlingauf Windows-DEVMODE.dmDuplex-Werte abzubilden:DMDUP_SIMPLEX,DMDUP_HORIZONTALundDMDUP_VERTICAL.TPdfView.SmoothScrollanimiert line/page scrollbar commands jetzt in timer-driven segments; thumb tracking bleibt unmittelbar.TPdf.AboutInfound Installer-Versionsmetadaten auf 1.38.0 aktualisiert.
Version 1.37.0
TPdfbesitzt jetzt eine Render-Sperre pro Instanz, dieRenderPage,RenderTile,RenderPageProgressive, Seiten-Reload und Dokument-Unload serialisiert. Worker-Rendering über eine gemeinsame Komponente ist damit praktikabel; die Anwendung koordiniert weiterhin Dokumentänderungen und Lebensdauer.- Der zero-copy-Bitmap-Wrapper weist bottom-up
TBitmap-DIBs nun zurück und fällt auf einen PDFium-eigenen Buffer mit abschließender Kopie zurück, wodurch stride corruption / access violation in VCL-Render-Tests beseitigt werden. TPdfView-Auswahl präzisiert:AllowUserTextSelectionsperrt nur Benutzereingaben, code-level Auswahl-APIs zeichnen weiterhin, undSelectAllfolgt dem tatsächlich sichtbaren spread, sodass die Cover-Seite nicht mehr Seite 2 auswählt. Delphi-, Lazarus- und C++Builder-Tests wurden erweitert.TPdf.AboutInfound Installer-Versionsmetadaten auf 1.37.0 aktualisiert.
Version 1.36.0
- Endbenutzer-Textauswahl in
TPdfViewaktiviert: das in v1.17.0 reservierteAllowUserTextSelectionsteuert jetzt drag-select, double-click word, triple-click line,Ctrl+A,Ctrl+CundShift+arrows. SelectionColor,OnSelectionChangeund code-level Auswahl-APIs hinzugefügt:HasSelection,SelectionCharCount,SelectedText,ClearSelection,SelectAll,CopySelectionToClipboard.- Spread-Modi wählen über sichtbare Seiten hinweg; das Standardmenü Copy wird automatisch angehängt, wenn der Host kein
PopupMenudefiniert; die Auswahl wird bei Dokument-, Seiten-, Active- oder DisplayMode-Wechsel gelöscht. - Delphi-, Lazarus- und C++Builder-Tests wurden für Auswahl-Eigenschaften, Mauspfad, Tastaturkürzel, Standard-Popup, clipboard round-trip und spread selection erweitert.
Version 1.35.0
- PDF/VT-Marker-Injektion (ISO 16612-2:2010) hinzugefügt: TPdf.SaveAsPdfVT erhebt das aktuelle Dokument zu einer PDF/VT-1- oder PDF/VT-2-konformen Datei (das PDF-Subset für variable und transaktionale Druckaufgaben). PDF/VT baut auf PDF/X-4 auf (§6.2.1), daher schreibt der Injektor den vollständigen PDF/X-4-Marker-Satz (XMP pdfxid, Info GTS_PDFXVersion + Trapped, OutputIntent mit ICC) zusammen mit den PDF/VT-spezifischen Eigenschaften.
- PDF/VT-spezifische Eigenschaften umfassen XMP
pdfvtid:GTS_PDFVTVersionundpdfvtid:GTS_PDFVTModDate(mitxmp:ModifyDatesynchronisiert nach §6.3 NOTE 1) und die pdfaExtension:schemas-Beschreibung für beide NPES-Namespaces pdfxid und pdfvtid. - TPdf.SaveAsPdfVTToStream für PDF/VT-Ausgabe im Speicher und Kurzform
TPdf.SaveAsPdfVT(FileName)hinzugefügt — erzeugt PDF/VT-1 mit eingebettetem sRGB-OutputIntent als Default. - TPdf.ValidatePdfVT hinzugefügt: prüft PDF/VT-Marker (einschließlich
pdfvtid:GTS_PDFVTModDate/xmp:ModifyDate-Gleichheit und/DPartRoot-Vorhandensein) und liefert TPdfVTValidationResult. - Eigenschaft TPdf.PdfVTConformance hinzugefügt: liefert das Level ohne expliziten ValidatePdfVT-Aufruf.
- Neue Typen, exportiert in der neuen Unit FPdfPdfvt: TPdfVTConformance, TPdfVTTrappedState, TPdfVTValidationResult, TPdfVTValidationIssue, TPdfVTSaveOptions.
- Document-Part-Hierarchie (DPartRoot / DPart, §6.5) ist anwendungslevel Struktur und wird NICHT automatisch synthetisiert. PDF/X-4-Inhaltslevel-Anforderungen (Schrifteinbettung, Transparenz, ICC-Farbverwaltung, OPI / JavaScript / Reference-XObject-Verbote) bleiben in der Verantwortung des Autors.
- TPdf.AboutInfo-Zeichenkette aktualisiert, um die aktuelle Produktversion zu melden.
Version 1.34.0
- PDF/R-1-Marker-Injektion (ISO 23504-1:2020) hinzugefügt: TPdf.SaveAsPdfR erhebt das aktuelle Dokument zu einer PDF/R-1-konformen Datei (das Raster-Bildtransport-Subset von PDF für gescannte Dokumente). Die Injektion umfasst die dateiformat-level Anforderungen — den einzigartigen
%PDF-raster-1.0-Kommentar zwischen Trailer-Dictionary und startxref (§5), Katalog auf die §6.3 White-List reduziert (nur Version/ViewerPreferences/PageLayout/PageMode/AcroForm/Metadata), Document Information Dictionary auf §6.4.3 reduziert (nur Creator/Producer/CreationDate/ModDate), XMP-Stream mit den vier §6.4.4 Table 1 Einträgen, und/ID-Array im Trailer. - TPdf.SaveAsPdfRToStream für PDF/R-Ausgabe im Speicher und Kurzform
TPdf.SaveAsPdfR(FileName)hinzugefügt. - TPdf.ValidatePdfR hinzugefügt: prüft Konformitätsmarker und liefert TPdfRValidationResult.
- Eigenschaft TPdf.PdfRConformance hinzugefügt: liefert das Level ohne expliziten ValidatePdfR-Aufruf.
- Neue Typen, exportiert in der neuen Unit FPdfPdfr: TPdfRConformance, TPdfRValidationResult, TPdfRValidationIssue, TPdfRSaveOptions. Der Default strippt Title/Author/Subject/Keywords aus dem Info und nicht erlaubte Einträge aus dem Katalog.
- Inhaltslevel-Anforderungen (Contents-Struktur pro Seite, MediaBox
[0 0 w h], beschränkte Filter, keine Object-Streams, Strip-Layout) bleiben in der Verantwortung des Quell-PDFs. PDF/R ist strukturell strenger als andere PDF/x-Standards; mit einem TWAIN-Working-Group-Validator für vollständige Prüfung kombinieren. - TPdf.AboutInfo-Zeichenkette aktualisiert, um die aktuelle Produktversion zu melden.
Version 1.33.0
- PDF/X-Marker-Injektion (ISO 15930-Familie) hinzugefügt: TPdf.SaveAsPdfX erhebt das aktuelle Dokument durch Nachbearbeitung mit einem Inkrement-Update zu einer PDF/X-1a:2001-, PDF/X-3:2002- oder PDF/X-4-konformen Datei. Die Injektion umfasst die dateiformat-level Anforderungen — XMP-Strom mit
pdfxid:GTS_PDFXVersionund pdfaExtension:schemas-Beschreibung, neu geschriebenes Document Information Dictionary mit/GTS_PDFXVersion//GTS_PDFXConformance//Trapped, aktualisierter Katalog mit/OutputIntentsauf eine/S /GTS_PDFX-OutputIntent mit eingebettetem ICC-Profil, und/ID-Array im Trailer. - TPdf.SaveAsPdfXToStream für PDF/X-Ausgabe im Speicher und Kurzform
TPdf.SaveAsPdfX(FileName)hinzugefügt — erzeugt PDF/X-4 mit eingebauter sRGB IEC61966-2.1-OutputIntent als Default. - TPdf.ValidatePdfX hinzugefügt: prüft Konformitätsmarker und liefert TPdfXValidationResult mit erkanntem Level und Problemsatz.
- Eigenschaft TPdf.PdfXConformance hinzugefügt: liefert das Konformitätslevel ohne expliziten ValidatePdfX-Aufruf.
- Neue Typen, exportiert in der neuen Unit FPdfPdfx: TPdfXConformance, TPdfXTrappedState, TPdfXValidationResult, TPdfXValidationIssue, TPdfXSaveOptions. Default zielt auf PDF/X-4 mit sRGB; Aufrufer können ein CMYK-ICC-Profil (FOGRA39, GRACoL2006...) über
IccProfileDataliefern. - Inhaltslevel-Anforderungen (alle Schriften eingebettet, kein JavaScript, keine sichtbaren Annotationen, OPI-Verbot, Transparenzregeln für PDF/X-1a / PDF/X-3) bleiben in der Verantwortung des Autors. Mit callas pdfaPilot oder Ghent PDF Workgroup Output Suite für vollständige Prüfung kombinieren.
- TPdf.AboutInfo-Zeichenkette aktualisiert, um die aktuelle Produktversion zu melden.
Version 1.32.0
- PDF/E-1-Marker-Injektion (ISO 24517-1:2008) hinzugefügt: TPdf.SaveAsPdfE erhebt das aktuelle Dokument durch Nachbearbeitung mit einem Inkrement-Update zu einer PDF/E-1-konformen Datei. Die Injektion umfasst alle dateiformat-level Anforderungen, die per Nachbearbeitung anhängbar sind — XMP-Metadaten-Stream mit
pdfe:ISO_PDFEVersion = "PDF/E-1"und pdfaExtension:schemas-Beschreibung, neu geschriebenes Document Information Dictionary mit der in §5 vorgeschriebenen/ISO_PDFEVersion (PDF/E-1)-Eintragung, Info-XMP-Äquivalenz aus ISO 19005-1 §6.7 via §13.1 und/ID-Array im Trailer (§6.2). - TPdf.SaveAsPdfEToStream für PDF/E-Ausgabe im Speicher und Kurzform
TPdf.SaveAsPdfE(FileName)hinzugefügt. - TPdf.ValidatePdfE hinzugefügt: prüft Konformitätsmarker und liefert TPdfEValidationResult mit erkanntem Level und Problemsatz.
- Eigenschaft TPdf.PdfEConformance hinzugefügt: liefert das Konformitätslevel ohne expliziten ValidatePdfE-Aufruf.
- Neue Typen, exportiert in der neuen Unit FPdfPdfe: TPdfEConformance, TPdfEValidationResult, TPdfEValidationIssue, TPdfESaveOptions.
- Info-Dictionary-Neuschreibung ist die erste ihrer Art in PDFiumVCL's PDF/x-Nachbearbeitungspfad — schreibt das vorhandene Info-Objekt unter derselben Objektnummer neu (bleibende /Info-Referenz im Trailer) und synthetisiert ein neues, wenn der Quell-Trailer kein /Info hat.
- Inhaltslevel-Anforderungen (Schrifteinbettung, ToUnicode-CMaps, verbotene XObjects / ExtGState-Schlüssel / XFA-Formulare) bleiben in der Verantwortung des Dokumentautors.
- TPdf.AboutInfo-Zeichenkette aktualisiert, um die aktuelle Produktversion zu melden.
Version 1.31.0
- Unterstützung für das Einspeisen von PDF/UA-1-Markern (ISO 14289-1:2014) hinzugefügt: TPdf.SaveAsPdfUa erhebt das aktuelle Dokument durch Nachbearbeitung mit einem Inkrement-Update zu einer PDF/UA-1-konformen Datei. Die Injektion umfasst alle dateiformat-level Anforderungen, die per Nachbearbeitung durchsetzbar sind — XMP-Metadaten-Stream mit
pdfuaid:part = 1und passender pdfaExtension:schemas-Beschreibung, verpflichtendesdc:title, Katalog/MarkInfo << /Marked true /Suspects false >>und/ViewerPreferences << /DisplayDocTitle true >>(nur wenn die Quelle keines hat), Katalog/Lang(wenn der Aufrufer ein BCP 47-Tag liefert) und/ID-Array im Trailer. - TPdf.SaveAsPdfUaToStream für PDF/UA-Ausgabe im Arbeitsspeicher hinzugefügt sowie eine Default-Options-Kurzform
TPdf.SaveAsPdfUa(FileName)für den häufigen Fall. - TPdf.ValidatePdfUa hinzugefügt: prüft eine geöffnete PDF auf PDF/UA-1-Konformitätsmarker (StructTreeRoot-Existenz, /Lang, /MarkInfo /Marked true mit /Suspects = false, /ViewerPreferences /DisplayDocTitle true, XMP pdfuaid:part-Identifier, dc:title-Vorhandensein, Trailer /ID, Verschlüsselungsstatus) und liefert ein strukturiertes Ergebnis mit erkanntem Konformitätslevel und Problemmenge.
- Eigenschaft TPdf.PdfUaConformance hinzugefügt: liefert das Konformitätslevel des geöffneten Dokuments (puc1, pucNone oder pucUnknown) ohne expliziten ValidatePdfUa-Aufruf.
- Neue Typen, exportiert in der neuen Unit FPdfPdfua: TPdfUaConformance, TPdfUaValidationResult, TPdfUaValidationIssue, TPdfUaSaveOptions.
- Leere Felder in TPdfUaSaveOptions (Title / Author / Subject / Keywords / Creator / Producer / CreationDate / ModDate / DocumentId / InstanceId / Language) werden automatisch über FPDF_GetMetaText / FPDF_GetFileIdentifier / FPDFCatalog_GetLanguage befüllt.
- Inhaltslevel-Anforderungen (vollständige StructTreeRoot-Auszeichnung, Figure-Alt-Text, ToUnicode-CMaps, Schrifteinbettung usw.) bleiben in der Verantwortung des Dokumentautors — SaveAsPdfUa fügt nur Dateiformat-Marker an. ValidatePdfUa meldet das Fehlen eines StructTreeRoot als
pvuaiMissingStructTreeRoot. - TPdf.AboutInfo-Zeichenkette aktualisiert, um die aktuelle Produktversion zu melden.
Version 1.30.0
- Die PDF/A-1b-Ausgabe erfüllt nun die Anforderungen von ISO 19005-1 (mit Cor.1:2007) an die Äquivalenz zwischen Document Information Dictionary und XMP: Jeder Eintrag im Info dictionary, den PDFium in das Basis-PDF schreibt, wird im XMP-Paket gespiegelt, einschließlich Title (dc:title), Author (dc:creator), Subject (gemäß Cor.1 als dc:description), Keywords (pdf:Keywords), Creator (xmp:CreatorTool), Producer (pdf:Producer), CreationDate (xmp:CreateDate) und ModDate (xmp:ModifyDate). xmp:MetadataDate wird ebenfalls geschrieben.
- Der Trailer eines PDF/A-Dokuments enthält nun stets ein /ID-Array (zwingende Anforderung in ISO 19005-1 6.1.3). Wenn TPdf.SaveAsPdfA ein Dokument verarbeitet, dessen Quelle bereits eine file identifier hat, werden die 16-Byte-IDs permanent und changing wiederverwendet; andernfalls wird eine deterministische 16-Byte-Fallback-ID aus den Quellbytes abgeleitet.
- Das eingespeiste XMP enthält jetzt die in ISO 19005-1 6.7.8 (durch Cor.1 ersetzt) verlangte pdfaid Extension-Schema-Beschreibung — pdfaid gilt relativ zur XMP Specification 2004 als Extension-Schema, daher müssen alle konformen Dateien ihre property names, value types und categories im Container pdfaExtension:schemas deklarieren.
- TPdfASaveOptions wurde um fünf optionale Felder erweitert: Producer, CreationDate, ModDate (PDF-Datums-Strings in der Form “D:YYYYMMDDHHmmSSOHH'mm'”), DocumentId und InstanceId (16-Byte-Strings für das /ID-Array im Trailer). TPdf.SaveAsPdfA / SaveAsPdfAToStream füllen fehlende Werte automatisch über FPDF_GetMetaText und FPDF_GetFileIdentifier, sodass bestehender Aufrufer-Code unverändert weiterläuft.
- TPdf.ValidatePdfA / TPdf.PdfAConformance melden nun drei zusätzliche Probleme: pvaiMissingTrailerId (kein /ID im Trailer), pvaiMissingXmpDates (xmp:CreateDate oder xmp:ModifyDate fehlt) und pvaiMissingExtensionSchema (pdfaid Extension-Schema-Beschreibung fehlt).
- Nicht-ASCII-Zeichen in Title, Author, Subject, Keywords, Creator und Producer werden nun als UTF-8 in das XMP-Paket geschrieben (XMP Specification verlangt UTF-8). Mehrsprachige Metadaten bleiben dadurch beim Durchlauf von SaveAsPdfA erhalten.
- TPdf.AboutInfo-Zeichenkette aktualisiert, um die aktuelle Produktversion zu melden.
Version 1.29.0
- Die mitgelieferten PDFium-DLLs (Win32 und Win64, sowohl Standard- als auch V8-Builds) wurden auf den Upstream-Snapshot vom 2026-05-22 aktualisiert. Damit werden Upstream-Korrekturen an den Absturzpfaden in FPDFText_SetText / FPDFText_SetCharcodes sowie diverse interne Härtungen aus dem PDFium-Projekt übernommen.
- Das neue Speicher-Flag FPDF_SUBSET_NEW_FONTS von PDFium wurde in FPdfPageOps.pas freigegeben, sodass Aufrufer von FPDF_SaveAsCopy automatisches Subsetting eingebetteter Schriftdateien für neu hinzugefügte Textobjekte anfordern können. Die bestehenden Konstanten FPDF_INCREMENTAL, FPDF_NO_INCREMENTAL und FPDF_REMOVE_SECURITY werden nun mit der Upstream-Bitshift-Form definiert (der bisherige numerische Wert 3 bleibt als FPDF_REMOVE_SECURITY_DEPRECATED erhalten, um die Binärkompatibilität zu wahren).
- FPDF_FONT_BACKEND_TYPE-Enum (FREETYPE / FONTATIONS) sowie das passende Feld m_FontLibraryType in FPDF_LIBRARY_CONFIG wurden in FPdfView.pas ergänzt, sodass Anwendungen, die PDFium mit dem Skia-Renderer initialisieren, beim Start das Schrift-Backend wählen können.
- Die Signatur von TFPDFPage_InsertObject wurde an den Upstream angepasst: Die C-Funktion liefert nun FPDF_BOOL (TRUE bei Erfolg, FALSE wenn page_object NULL ist oder die Ownership-Übergabe fehlschlägt) statt void. Bestehende PDFiumVCL-Aufrufer bleiben kompilierbar, da Delphi / FPC das Ignorieren des Funktionsrückgabewerts erlauben.
- Die Zeichenkette TPdf.AboutInfo wurde korrigiert und meldet nun die aktuelle Produktversion (stand seit der reinen Dokumentationsversion 1.28.0 noch auf v1.27.0).
Version 1.28.0
- Die Inline-Dokumentation der gesamten API-Referenz wurde erheblich erweitert: jeder Eintrag für Property, Methode, Event und globale Funktion enthält nun eine dreiteilige Description, eine Remarks-Liste, ein mehrzeiliges Delphi Example sowie einen umfangreicheren See Also-Block — abdeckend 200+ zuvor knapp gehaltene Seiten einschließlich aller TPdf-Zähler, Metadaten-Getter, Font- und Character-Accessor, Page-Level Properties, indexierter Records, dokumentebener Methoden und der gesamten TPdfView Status- / Display- / Event-API.
- Das Hilfe-Layout wurde fein abgestimmt, um der visuellen Basis von losLab in der HotXLS-Referenz zu entsprechen: angeglichene h1/h2-Größen, Konsolidierung der API-Navigationsraster-Stile in das gemeinsame StyleSheet sowie Entfernung der seitenbezogenen Inline-CSS-Überschreibungen in Navigation.html.
- Die Dokumentation enthält nun ein Hilfsskript (Docs\Build-Expand-Entries.ps1), das die Einträgsseiten-Anreicherung aus einer einzigen Datentabelle regeneriert und so wiederholbare Wartung ermöglicht.
Version 1.27.0
- PDF/A-1b-Erstellung hinzugefügt: TPdf.SaveAsPdfA speichert ein beliebiges geöffnetes Dokument als PDF/A-1b-konforme Datei, indem die Basis-PDF durch ein inkrementelles Update nachbearbeitet wird, das einen XMP-Metadatenstrom, einen sRGB-ICC-OutputIntent und einen aktualisierten Dokumentkatalog einfügt — alles ohne zusätzliche DLL-APIs. Funktioniert auf allen von PDFiumVCL unterstützten Plattformen.
- TPdf.SaveAsPdfAToStream für PDF/A-Ausgabe in den Arbeitsspeicher hinzugefügt.
- TPdf.ValidatePdfA hinzugefügt: überprüft ein geöffnetes PDF auf PDF/A-Konformität (XMP pdfaid-Marker, OutputIntent mit eingebettetem ICC-Profil, Verschlüsselung) und gibt ein strukturiertes Ergebnis mit dem erkannten Konformitätslevel und einer Menge konkret gefundener Probleme zurück.
- Property TPdf.PdfAConformance hinzugefügt: liefert den Konformitätslevel des aktuell geöffneten Dokuments (pac1b, pac1a, pac2b, pac3b, pacNone oder pacUnknown) ohne expliziten Aufruf von ValidatePdfA.
- Neue Typen exportiert: TPdfAConformance, TPdfAValidationResult, TPdfAValidationIssue, TPdfASaveOptions (in neuer Unit FPdfPdfa.pas).
- SaveAsPdfA unterstützt ein benutzerdefiniertes ICC-Profil über TPdfASaveOptions.IccProfileData; bleibt es leer, wird automatisch das eingebaute sRGB IEC61966-2.1-Profil (HP/Microsoft, 3144 bytes) verwendet.
- Die monolithische HTML-Referenz wurde durch ein restrukturiertes Web-Hilfesystem ersetzt: 302 individuelle API-Einträgsseiten (je eine pro Property, Methode, Event und globaler Funktion) für TPdf und TPdfView, jede mit vollständiger Beschreibung, Parametertabelle, Delphi-Code-Beispiel und See Also-Links.
- Navigation.html hinzugefügt: ein umfassender einseitiger API-Navigationsindex, organisiert in sechs Abschnitten (TPdf Properties/Methoden/Events, TPdfView Properties/Methoden/Events, globale Funktionen) mit einem 5-spaltigen Flex-Grid für schnelles Überfliegen.
- TPdf.html und TPdfView.html wurden als kompakte Komponenten-Übersichtsseiten neu aufgebaut, die die Typreferenz-Abschnitte (Types, Constants, Global Variables) beibehalten und für alle Member auf die einzelnen Einträgsseiten verweisen.
- Volltextsuche mit Search.js hinzugefügt, mit inkrementellem clientseitigem Matching über alle 312 indizierten Seiten.
- Alle Navigationsleisten der gesamten Site wurden auf Navigation.html aktualisiert.
Version 1.26.0
- Demo/Lazarus/BatchExport hinzugefügt, die LCL-Portierung des Delphi-Demos BatchExport aus v1.14.0. Gleicher Funktionsumfang: Mehrdatei-PDF -> JPG-Export mit Fortschritt pro Datei (Gesamtfortschritt), Seitenfortschritt (aktueller Fortschritt), DPI- / Qualitäts- / Passworteingaben und kooperativ abbrechbarem Batch auf Basis von IPdfCancellationToken. Der Ausgabeordner wird nach erfolgreichem Abschluss im plattformeigenen Dateimanager geöffnet.
Version 1.25.0
- Form XObject-Seitenwiederverwendung zu TPdf hinzugefügt und damit Workflows für Wasserzeichen, Template-Overlay und “eine Seite auf viele stempeln” ermöglicht: CreateXObjectFromPage erzeugt aus einer beliebigen Seite eines anderen Dokuments ein wiederverwendbares Handle; InsertFormObjectFromXObject fügt EINE Kopie der gekapselten Seite in die aktuelle Seite ein. Liefert das eingefügte FPDF_PAGEOBJECT zurück, so dass der Aufrufer es mit FPDFPageObj_SetMatrix und den TPdfMatrix-Hilfen aus v1.9.0 positionieren / skalieren / rotieren kann.
- Die neue Pascal-Klasse TPdfXObject kapselt das FPDF_XOBJECT-Handle von PDFium und schließt es im Destruktor automatisch, wodurch die manuelle FPDF_CloseXObject-Zeremonie entfällt.
- Die Delphi- und Lazarus-Regressionssuites wurden auf je 147 Fälle erweitert, die C++Builder-Suite auf 123 Fälle — mit Abdeckung der Handle-Erzeugung und Page-Object-Insertion-Kontrakte.
Version 1.24.0
- TPdf.RenderPageProgressive hinzugefügt — eine abbrechbare Variante von RenderPage, die PDFiums progressive Rendering-Schleife antreibt und zwischen Iterationen ein IPdfCancellationToken (v1.7.0) abfragt, so dass lange Renderings mit hoher DPI mitten in der Seite abgebrochen werden können, statt den Aufrufer bis zum Abschluss zu blockieren.
- Gibt einen TPdfProgressiveStatus-Wert zurück: prsDone, prsCancelled oder prsFailed. Mit AToken = nil rendert die Methode ohne jegliche Pause bis zum Ende (keine Möglichkeit von prsCancelled).
- Verwendet denselben Zero-Copy-Schnellpfad aus v1.21.0 — PDFium rendert direkt in die DIB des Ziel-TBitmap. Der bisherige Legacy-Fallback gilt weiterhin, wenn die DIB nicht gekapselt werden kann.
- Die Delphi- und Lazarus-Regressionssuites wurden auf je 145 Fälle erweitert, die C++Builder-Suite auf 121 Fälle — mit Abdeckung von nil-Token (durchläuft komplett), bereits abgebrochenem Token (prsCancelled) und Pixel-Äquivalenz mit synchronem RenderPage bei aktivem Token.
Version 1.23.0
- Sechs neue TPdfView-Methoden hinzugefügt, die PDFiums Textauswahl in Formular-Widgets und Undo/Redo für Anwendungen verfügbar machen: GetSelectedFormText liefert den aktuell ausgewählten Text innerhalb des fokussierten Formular-Widgets; SelectAllFormText wählt jedes Zeichen; FormUndo / FormRedo / FormCanUndo / FormCanRedo steuern den Edit-Verlauf des fokussierten Widgets. Die zugrundeliegenden PDFium-APIs waren bereits gebunden, hatten aber keinen High-Level-Einstiegspunkt. Alle sechs Methoden brechen sicher ab, wenn die View inaktiv ist oder das Dokument kein AcroForm-Widget fokussiert hat.
- Die Delphi- und Lazarus-Regressionssuites wurden auf je 142 Fälle erweitert, die C++Builder-Suite auf 119 Fälle — mit Abdeckung des Kontrakts “kein Formular / kein Fokus” für jede neue Methode.
Version 1.22.0
- Seitenkompositions-Wrapper zu TPdf hinzugefügt: ImportPagesByIndex erwartet ein nullbasiertes Indexarray, um bestimmte Seiten aus einem Quelldokument zu kopieren; ImportNPagesToOne liefert ein brandneues TPdf, dessen Seiten N-up-Komposite dieses Dokuments sind; MovePages ordnet Seiten an Ort und Stelle um. Die zugrundeliegenden PDFium-APIs waren bereits gebunden, hatten aber keinen Pascal-freundlichen Einstiegspunkt.
- ImportPagesByIndex akzeptiert ein leeres Array, um jede Quellseite zu importieren (entspricht der Übergabe von nil auf C-ABI-Ebene).
- Die Delphi- und Lazarus-Regressionssuites wurden auf je 136 Fälle erweitert, die C++Builder-Suite auf 115 Fälle — mit Abdeckung von Subset-Import, Volldokument-Import, Seitenneuordnung und N-up-Komposit.
Version 1.21.0
- Rendering-Leistung verbessert durch Umstellung von TPdf.RenderPage / TPdf.RenderTile (und der entsprechenden TPdfView-Helfer) auf einen Zero-Copy-Ausgabepfad. PDFium schreibt nun direkt in den DIB-Puffer des Ziel-TBitmap statt in einen internen Puffer, der anschließend zeilenweise kopiert wurde — das spart je Render eine Speicherkopie der Größe Breite x Höhe x 4 Bytes. Der Effekt ist bei hoher DPI am deutlichsten (Thumbnail-Paneele, Druckqualitäts-Export, Batch-Export).
- Der bisherige zeilenweise Pfad bleibt als Sicherheits-Fallback erhalten, für den unwahrscheinlichen Fall, dass die Ziel-DIB nicht gekapselt werden kann (extreme Dimensionen, ungewöhnlicher Stride, OOM). Das Verhalten ist Byte für Byte identisch — der Fallback ist nur langsamer.
- Die Delphi- und Lazarus-Regressionssuites wurden auf je 132 Fälle erweitert, die C++Builder-Suite auf 112 Fälle — mit Abdeckung der pf32bit-Konvertierung des aufruferseitigen Bitmaps, Dimensions-Round-Trip und einer Sanity-Prüfung für den Stride großer Bitmaps.
Version 1.20.0
- Such-Ergebnishervorhebung zu TPdfView hinzugefügt: HighlightSearchText(Text, MatchCase, MatchWholeWord) durchsucht die aktuelle View-Seite, gibt die Anzahl der Treffer zurück und malt bei jedem Neuzeichnen eine HighlightColor-Maske über jeden Treffer. ClearHighlight entfernt die Hervorhebungen; das Wechseln der View auf eine andere Seite löscht sie automatisch, da Treffer seitenspezifisch sind.
- HighlightColor ist standardmäßig clYellow und published, damit Anwendungen die Hervorhebung an ihre UI-Palette anpassen können.
- Die Delphi- und Lazarus-Regressionssuites wurden auf je 129 Fälle erweitert, die C++Builder-Suite auf 109 Fälle — mit Abdeckung von Standardfarbe, Farb-Round-Trip, “reale Fixture-Worttreffer” gegen den Text in sample.pdf und dem Kontrakt “fehlendes Wort liefert null Treffer”.
Version 1.19.0
- Property FitMode zu TPdfView mit vier Werten hinzugefügt: pfmNone (manueller Zoom), pfmActualSize (100%), pfmFitPage (gesamte Seite passt in den Viewport) und pfmFitWidth (Seitenbreite entspricht der Viewport-Breite). Der aktive Fit-Modus wird bei Resize und beim Wechsel der aktuellen Seite automatisch erneut angewendet, sodass lange Dokumente mit gemischten Seitengrößen jederzeit perfekt eingepasst bleiben.
- Das direkte Setzen von Zoom hebt den aktiven Fit-Modus auf (FitMode fällt zurück auf pfmNone) — entsprechend der gängigen Konvention von PDF-Viewern, bei der die Eingabe eines Zoomwerts Fit Page / Fit Width verlässt.
- Der Standardwert ist pfmNone, so dass bestehende Anwendungen ihr Verhalten mit explizitem Zoom beibehalten.
- Die Delphi- und Lazarus-Regressionssuites wurden auf je 124 Fälle erweitert, die C++Builder-Suite auf 106 Fälle — mit Abdeckung von Standardwert, Modus-Round-Trip, fit-page erzeugt auf einem geladenen Dokument einen realen Zoom und manueller Zoom hebt den Fit-Modus auf.
Version 1.18.0
- Property PageColor zu TPdfView hinzugefügt, die den gerenderten PDF-Seitenhintergrund von der Color des umgebenden Steuerelements entkoppelt. Standardwert ist clWhite, damit PDF-Seiten unabhängig vom Theme der Host-Anwendung in Papierweiß gerendert werden. Dark-Mode-Viewer können den Scrollbereich dunkel halten und gleichzeitig die eigentliche PDF-Seite weiß (oder in jeder von der Anwendung gewählten Farbe) belassen.
- Verhaltensänderung: Anwendungen, die TPdfView.Color setzten, um die PDF-Seite umzufärben, sollten stattdessen PageColor setzen. Das Standardverhalten wird für den häufigen Fall (weiße Seiten auf themengefärbten Steuerelement-Hintergründen) ohne Code-Änderung besser.
- Die Delphi- und Lazarus-Regressionssuites wurden auf je 120 Fälle erweitert, die C++Builder-Suite auf 103 Fälle — mit Abdeckung von Standardwert und Farb-Round-Trip.
Version 1.17.0
- Benutzerinput-Sperrschalter zu TPdfView hinzugefügt, damit Anwendungen, die den Viewer in Kiosks, Vorschaupaneelen oder schreibgeschützten Kontexten einbetten, Navigationsgesten ohne Subclassing deaktivieren können: AllowUserPageChange steuert die neuen Tastenkürzel PgUp / PgDn / Ctrl+Home / Ctrl+End; ChangePageOnMouseScrolling steuert die neuen Sprünge per Mausrad-hoch / Mausrad-runter; AllowUserTextSelection ist für den künftigen Pfad der Mauszug-Textauswahl reserviert. Alle drei sind standardmäßig True, sodass bestehende Anwendungen ohne Verhaltensänderung aktualisieren können.
- Die Seiten-Navigation per Mausrad überspringt Ctrl+Rad, damit Anwendungen Ctrl+Rad weiterhin für Zoom reservieren können.
- Die Delphi- und Lazarus-Regressionssuites wurden auf je 118 Fälle erweitert, die C++Builder-Suite auf 101 Fälle — mit Abdeckung von Standardwerten und Schalter-Round-Trip.
Version 1.16.2
- TPdfView-Regressionsabdeckung für Annotation-Linkklicks erweitert, wenn die Viewer-Seite von der zugehörigen TPdf-Seite abweicht — mit einem echten headless Mausklick-Pfad in Delphi, Lazarus und C++Builder.
- Die Delphi- und Lazarus-Suites laufen nun mit je 114 Fällen, C++Builder mit 99 Fällen.
Version 1.16.1
- Behoben: TPdfView-Linkklick-Behandlung verwendet nun bei automatischen Annotation- und Web-Link-Aktionen die aktuell vom Viewer angezeigte Seite, selbst wenn die zugehörige TPdf-Komponente auf einer anderen Seite steht.
- TPdfThumbnailView gegen dangling Pdf-Referenzen abgesichert, wenn die verknüpfte TPdf-Komponente zerstört wird.
- Lebenszyklus-Regressionsabdeckung für Thumbnail-Referenzen hinzugefügt; die Delphi- und Lazarus-Suites laufen nun mit je 113 Fällen, C++Builder mit 98 Fällen.
- README, Testdokumentation, HTML-Help Such-/Indexinhalte und generierte C++-Paketausgaben mit den Integrations-Updates von v1.7.0 bis v1.16.0 synchronisiert.
Version 1.16.0
- Neues Delphi-PrintDialog-Demo (Demo/Delphi/PrintDialog) hinzugefügt, das N-up-Druck (1 / 2 / 4 / 9 Seiten pro Blatt) mit Filterung gerader / ungerader Seiten, Graustufen-Rendering und optionalen 1-Pixel-Zellrahmen demonstriert. Es ist ein bewusst kleiner Begleiter zum bestehenden PrintPDF-Demo, das bereits Vorschau, Recent-Files, Zoom und Skalierung abdeckt.
Version 1.15.0
- Neue Komponente TPdfThumbnailView (Unit FPdfThumbnail) hinzugefügt, die in einem scrollbaren Seitenpaneel ein Seiten-Thumbnail pro Zeile rendert — mit Hover- und Auswahl-Hervorhebung sowie Klick-Navigation. Vorgesehen für die Platzierung neben einem TPdfView, damit Endanwender lange Dokumente seitenweise durchblättern können.
- Die Komponente ist auf der losLab-Palettenseite zusammen mit TPdf und TPdfView registriert; wichtige Properties: Pdf, CurrentPageIndex, ThumbnailWidth, ThumbnailHeight, TextColor, HoverColor, SelectionColor, BorderColor und das Event OnPageClick.
- Die Delphi- und Lazarus-Regressionssuites wurden auf je 112 Fälle erweitert, die C++Builder-Suite auf 97 Fälle — mit Abdeckung von Standardwerten, Thumbnail-Größen-Round-Trip, Klemmung extremer Werte, Farb-Round-Trip und Event-Handler-Zuweisung.
Version 1.14.0
- Neues Delphi-BatchExport-Demo (Demo/Delphi/BatchExport) hinzugefügt, das zeigt, wie viele PDF-Dateien in einem Durchlauf nach JPG konvertiert werden — mit TPdf.LoadCustomDocument für streamendes Laden, IPdfCancellationToken für kooperative Abbrechbarkeit sowie Gesamt-Fortschritt pro Datei und Fortschrittsbalken pro Seite. Das Demo verwendet je eine TPdf-Instanz pro Datei (PDFium selbst ist nicht thread-sicher) und öffnet nach erfolgreichem Export den Ausgabeordner im Explorer.
Version 1.13.0
- Async-Rendering-UI-Overlay zu TPdfView durch drei neue Properties hinzugefügt: AsyncRendering, LoadingText und LoadingColor. Wenn AsyncRendering True ist, zeichnet der Single-Page-Paint-Pfad einen kleinen “Loading...”-Indikator über die gerenderte Seite, sodass Anwendungen, die einen eigenen Worker für lange Renderings nutzen, eine einheitliche visuelle Affordanz teilen.
- Standardwerte erhalten das bestehende Verhalten: AsyncRendering ist False, sodass Anwendungen, die sich nicht aktiv einklinken, keine visuelle Änderung bemerken.
- Die Dokumentation stellt klar, dass PDFium selbst nicht thread-sicher ist — das tatsächliche Auslagern des Renderings auf einen Worker erfordert vom Aufrufer eine TPdf pro Worker; das anstehende Batch-Export-Demo demonstriert dieses Muster.
- Die Delphi- und Lazarus-Regressionssuites wurden auf je 106 Fälle erweitert, die C++Builder-Suite auf 93 Fälle — mit Abdeckung von Standardwerten und Round-Trip der drei Properties.
Version 1.12.0
- Klickgesteuerte Linkbehandlung zu TPdfView hinzugefügt. Die neue Property LinkOptions steuert das automatische Verhalten für die vier PDF-Link-Aktionstypen: goto (Seitensprung), URI (ShellExecute), launch (ShellExecute) und embedded GotoR (reserviert). Standardmäßig sind loAutoGoto und loAutoOpenURI aktiviert; loAutoLaunch und loAutoEmbeddedGoto bleiben aus, damit ein versehentlicher Klick kein beliebiges Programm ausführen kann.
- Die Events OnAnnotationLinkClick und OnWebLinkClick wurden hinzugefügt, feuern vor jeder automatischen Aktion und ermöglichen es Anwendungen, den Link zu prüfen, ihn als Handled zu markieren oder umzulenken (zum Beispiel auf eine Sicherheitsabfrage).
- Die Erkennung von Linkklicks läuft nur, wenn die Geste ein Klick und kein Ziehen ist — ein frischer MouseDown-Anker wird verwendet, damit Schwenkgesten weiterhin unverändert über den bestehenden Scrollpfad laufen.
- Die Delphi- und Lazarus-Regressionssuites wurden auf je 102 Fälle erweitert, die C++Builder-Suite auf 91 Fälle — mit Abdeckung von Standard-LinkOptions, Set-Round-Trip und Event-Handler-Zuweisung.
Version 1.11.0
- Visuelle Aufwertung von TPdfView: Die Properties PageShadowSize, PageShadowColor und PageBorderColor malen optional einen Schlagschatten unter dem Seitenrechteck und einen Ein-Pixel-Rahmen darum. Die Standardwerte erhalten das vorherige flache Aussehen (PageShadowSize = 0; der Rahmen wird im Standard-clBlack gezeichnet, verschmilzt aber mit dem Standard-Weißhintergrund, bis Aufrufer die Farben ändern).
- Eine SmoothScroll-Property als Opt-in-Flag für eine künftige inkrementelle Scroll-Animation hinzugefügt; die Property macht heute Round-Trip und ist so verdrahtet, dass Anwendungen die Einstellung persistieren können, während die Renderseite weiterhin das bestehende sofortige Scrollverhalten verwendet.
- Die Delphi- und Lazarus-Regressionssuites wurden auf je 98 Fälle erweitert, die C++Builder-Suite auf 89 Fälle — mit Abdeckung von Standardwerten, Property-Round-Trip und der Klemmung negativer Schattenbreiten.
Version 1.10.0
- Direktes Einfügen von Bildern durch neue Überladungen von TPdf.AddImage und TPdfView.AddImage hinzugefügt, die zusätzlich zum bestehenden TPicture-basierten AddPicture entweder einen Dateipfad oder ein TBitmap akzeptieren. AddImage(FileName) erkennt jedes Format, das bei den Grafik-Units von VCL oder LCL registriert ist (BMP, PNG über die PngImage-Unit, JPG usw.), und durchläuft dieselbe Pipeline wie AddPicture — das Verhalten ist identisch.
- AddImage(TBitmap) umgeht den TPicture-Zwischenschritt und vereinfacht Aufrufer, die bereits aus Rendering- oder Batch-Generationsaufgaben über ein TBitmap verfügen.
- Die Delphi- und Lazarus-Regressionssuites wurden auf je 92 Fälle erweitert, die C++Builder-Suite auf 84 Fälle — mit Abdeckung von Bitmap-Einfügung, Page-Object-Grenzen, Ablehnung von nil-Bitmaps und BMP-Datei-Laden.
Version 1.9.0
- High-Level-Unterstützung für Transformationsmatrizen über die neue Klasse TPdfMatrix in der Unit FPdfMatrix hinzugefügt. TPdfMatrix kapselt PDFiums FS_MATRIX mit einer OO-API für Translate, Scale, Rotate, HorizontalFlip, VerticalFlip, CentralFlip, Skew und Multiply — geeignet zum Komponieren von Transformationen, bevor sie an FPDFPageObj_SetMatrix und ähnliche PDFium-APIs übergeben werden.
- TPdfMatrix.Multiply nimmt die sechs Matrixelemente korrekt als Snapshot, bevor die neuen Zeilenwerte berechnet werden — und behebt damit ein latentes Problem, bei dem alternative Pascal-Implementierungen frühere Elemente während desselben Aufrufs überschreiben und für jede Komposition jenseits reiner Translation falsche Ergebnisse liefern.
- Die Delphi- und Lazarus-Regressionssuites wurden auf je 88 Fälle erweitert, die C++Builder-Suite auf 81 Fälle — mit Abdeckung von Identität, Reset, Translate / Scale / Flip, post-multiplikativer Kompositionsreihenfolge und dem Multiply-Regressionsfall.
Version 1.8.0
- On-Demand-Stream-Laden über die neue Methode TPdf.LoadCustomDocument(AStream, AOwnsStream) und die Hilfsklasse TPdfStreamAdapter hinzugefügt, basierend auf PDFiums FPDF_LoadCustomDocument. PDFium liest nun Blöcke aus dem übergebenen TStream nur bei Bedarf, sodass sehr große oder entfernte PDFs keine vorab im Speicher gehaltene Kopie mehr benötigen.
- Optionale Stream-Eigentumsübergabe hinzugefügt: bei AOwnsStream = True übernimmt TPdf den Lebenszyklus des TStream und gibt ihn beim Aufruf von UnloadDocument frei.
- Die Delphi- und Lazarus-Regressionssuites wurden auf je 79 Fälle erweitert, die C++Builder-Suite auf 75 Fälle — mit Abdeckung von Streaming-Laden via TFileStream, Cleanup eines eigenen Streams und dem Kontrakt, dass extern besessene Streams das Unload überleben.
Version 1.7.0
- Kooperative asynchrone Abbruch-Primitiven in der neuen Unit FPdfAsync hinzugefügt, die IPdfCancellationToken / IPdfCancellationTokenSource sowie ein wiederverwendbares PdfNoCancellationToken-Singleton bereitstellen — damit langlaufende Rendering- und Export-Workflows saubere Cancel-from-UI-Semantik unterstützen können.
- Einen leichtgewichtigen TPdfFuture<T>-Helfer hinzugefügt, der einen Worker in einem Hintergrundthread ausführt und die Hülle TPdfFutureResult<T> zurück an den Hauptthread postet, um Erfolg, Abbruch und Fehlerfälle voneinander zu unterscheiden.
- Die Delphi- und Lazarus-Regressionssuites wurden auf je 76 Fälle erweitert, die C++Builder-Suite auf 73 Fälle — mit gemeinsamer Abdeckung von Abbruchzustand, idempotentem Cancel, Callback-Fan-Out und Registrierung nach erfolgtem Cancel.
Version 1.6.10
- High-Level-Zugriff via TPdf.PrintPageRanges auf den Druck-Seitenbereich der PDF Viewer Preference hinzugefügt — gibt einbasierte Seitenbereiche an den Anwendungscode zurück.
- TPdf.SetFormFieldFlags / SetFormFieldFlagsAt sowie passende TPdfView-Helfer hinzugefügt, damit Anwendungen AcroForm-Feld-Flags über die öffentliche API aktualisieren können — inklusive Abdeckung der Password- und Multi-Select-Flags.
- PDFium-Binding-ABI-Abdeckung für die Windows-konformen FPDF_DWORD, FPDF_FILEACCESS-Callbacks und die V8 Embedder Slot-Felder gehärtet.
Version 1.6.9
- Low-Level-Skia-Rendering-Bindings für die neu exportierten APIs FPDF_RenderPageSkia und FPDF_FFLDrawSkia in den mitgelieferten Standard- und V8-PDFium-DLLs hinzugefügt.
- Die öffentliche Binding-Abdeckung erweitert: das Laden der Standard- und V8-DLL prüft nun zusätzlich zu den bestehenden V8/XFA-Capability-Probes auch die Skia-Render-Einstiegspunkte.
Version 1.6.8
- TPdf.SetTextPositions und TPdfSingleArray hinzugefügt, um zeichenweise Positionen an bestehenden Textobjekten über die neu exportierte API FPDFText_SetPositions zu setzen.
- FPDFText_SetPositions zu einem erforderlichen Binding für die aktuell mitgelieferten PDFium-DLLs erhoben, während gleichzeitig bestätigt wird, dass die Skia-Render-Einstiegspunkte weiterhin nicht verfügbar sind, da die DLLs sie nicht exportieren.
- Die Regressionssuites in Delphi, C++Builder und Lazarus wurden auf je 65 Fälle erweitert — mit Abdeckung der Text-Positions-Änderung.
Version 1.6.7
- High-Level-Zugriff von TPdf auf JavaScript name-tree-Aktionen auf Dokumentebene hinzugefügt — Aktionsnamen und Skripte werden über JavaScriptAction und JavaScriptActions zurückgegeben.
- TPdf.FileIdentifier hinzugefügt, um die permanente und die wechselnde Trailer-ID als binäre TBytes ohne das PDFium-Terminierungsbyte zu lesen.
- TPdf.PageBox, GetPageBox und SetPageBox für MediaBox, CropBox, BleedBox, TrimBox und ArtBox auf der aktuellen Seite hinzugefügt.
- Bestätigt, dass die aktuell mitgelieferten PDFium-DLLs zur Laufzeit nur die Skia-Render-Einstiegspunkte nicht zur Verfügung stellen, da diese Exporte nicht vorhanden sind.
- Die Regressionssuites in Delphi, C++Builder und Lazarus wurden auf je 64 Fälle erweitert — mit Abdeckung von Dokument-JavaScript, Trailer-ID und Page-Box.
Version 1.6.6
- Laufzeit-Unterstützung für die mitgelieferte V8-fähige PDFium-DLL hinzugefügt. Setzt man EnableV8Engine vor dem Laden, wählt der Loader pdfium.v8.dll aus dem Baum DLLs\Win32 oder DLLs\Win64 und gibt die V8/XFA-spezifischen Bindings frei, sofern die geladene DLL diese bereitstellt.
- V8FeaturesAvailable, XfaBStrHelpersAvailable, GetRecommendedV8Flags sowie Low-Level-Optional-Bindings für FPDF_BStr_*, FPDF_GetRecommendedV8Flags und FPDF_GetArrayBufferAllocatorSharedInstance hinzugefügt.
- FPDFText_SetPositions als optionales Binding klassifiziert, damit PDFiumVCL auch mit PDFium-DLLs lädt, die diesen experimentellen Text-Positions-Setter nicht exportieren.
- Die Regressionssuites in Delphi, C++Builder und Lazarus wurden auf je 61 Fälle erweitert — mit Abdeckung der Capability-Probes für Standard-DLL und V8-DLL.
Version 1.6.5
- Tagged-PDF-Strukturbaum-Inspektion über TPdf.StructureElements und TPdfView.StructureElements hinzugefügt — mit Elementtyp, Titel, Alternativtext, tatsächlichem Text, Erweiterungstext, Sprache, marked-content-IDs, Anzahl der Kinder und Anzahl der Attribute.
- Windows-PDFium-Druckmodusauswahl über TPdfPrintMode und SetPdfPrintMode hinzugefügt — abdeckend EMF, Nur-Text, PostScript, Pass-Through, Image-Mask und Type-42-Druckmodi.
- Low-Level-Bindings für die übrigen Standard-DLL-PDFium-Public-Exporte hinzugefügt — betreffend JavaScript-Aktionen, Annotation-Form-Flags / Schriftfarbe, Aktiv-Status von Page-Objekten, indizierte Einfügung, Float-Werte für Content-Marks, ICC-Profildaten von Bildern, Entfernen von Form-Objekten und Text-Positionen.
- Die Regressionssuites in Delphi, C++Builder und Lazarus wurden auf je 59 Fälle erweitert — mit Abdeckung des Tagged-PDF-Strukturbaums, der Druckmodi und der Public-Export-Bindings.
Version 1.6.4
- Die Demos in Delphi, C++Builder und Lazarus wurden aktualisiert, so dass sie erzeugte PDFs, exportierte Text-/Bilddateien und Batch-Ausgabeordner nach erfolgreichem Erstellen automatisch öffnen.
Version 1.6.3
- Die aufeinander abgestimmten Regressionssuites in Delphi, C++Builder und Lazarus wurden auf je 56 Fälle erweitert — mit TPdfView-GUI-Abdeckung für Fit-Zoom-Helfer, Round-Trips zwischen Geräte- und Seitenkoordinaten, Zeichen-Hittest und Maus-Schwenken über unsichtbare Viewer-Steuerelemente.
- Die TPdfView-Fixtures verwenden nun eine explizite Viewergröße und testspezifische Subklassen, die geschützte Maus-Handler ausführen und die Suites dennoch vollständig headless halten.
Version 1.6.2
- Behoben: TPdf.AddPage(0, ...) macht die eingefügte erste Seite sofort zur aktiven Seite. Bestehender Beispielcode funktioniert weiterhin, und PageNumber meldet nach dem Einfügen eine gültige einbasierte Seitennummer.
- Die Version des Lazarus-Pakets synchronisiert und die aufeinander abgestimmten Regressionssuites in Delphi, C++Builder und Lazarus auf je 52 Fälle erweitert.
Version 1.6.1
- Eine falsche Mindestversionsanforderung im PDF-Versions-Konformitäts-Validator aus v1.6.0 behoben: die SetState-Aktion wurde von PDF 1.5 auf PDF 1.2 herabgestuft — in Übereinstimmung mit PDF 1.2 Reference 6.9.9. SaveAs-Ziele für PDF 1.3 / 1.4, die SetState-Aktionen enthalten, werden jetzt korrekt gespeichert statt abgelehnt.
- Passende lexikalische PDF-1.2-Prüfungen aus demselben Spezifikationsabschnitt hinzugefügt: die Aktionen Sound, Movie und NOP sowie der Farbraum Separation werden nun blockiert, wenn die gewählte Zielversion älter als PDF 1.2 ist.
- Die Regressionssuites in Delphi, C++Builder und Lazarus wurden auf je 50 Fälle erweitert — durch Hinzufügen eines positiven Akzeptanztests für SetState unter PDF 1.4, der die korrigierte Grenze festhält.
Version 1.6.0
- Explizite SaveAs-Ziele von PDF 1.0 bis PDF 1.7 wurden mit einem umfassenden Versions-Feature-Validator gehärtet, der die gesamte Feature-Zeitleiste von PDF 1.1 bis ISO 32000-1 abdeckt. Der Validator blockiert nun Speicherungen, die Dictionary-Einträge, Filternamen, Annotation-Subtypen, Aktionstypen, Schriftarten, Farbräume oder Verschlüsselungsparameter enthalten, die nach der gewählten Zielversion eingeführt wurden. Beispiele: JBIG2Decode (1.4+), MarkInfo / Tagged PDF (1.4+), OutputIntents (1.4+), ICCBased / DeviceN / BleedBox / TrimBox / ArtBox / StructTreeRoot (1.3+), Annotationen Polygon / PolyLine / Caret / Screen / Watermark / Redact, AES- und AES-256-Verschlüsselung (CFM AESV2 / AESV3), Katalogeinträge Perms / Legal / Requirements / NeedsRendering sowie versionsabhängige Aktionen wie JavaScript, Trans, SetState, Rendition, GoToE, GoTo3DView — alle werden abgelehnt, wenn die Ziel-PDF-Version sie nicht ausdrücken kann.
Version 1.5.13
- Die Regressionssuites in Delphi, C++Builder und Lazarus wurden auf je 49 Fälle erweitert — mit direkter Abdeckung der Ablehnung von ICCBased-Farbräumen, Tagged-PDF MarkInfo, Polygon-Annotationen, AES (V2)-Verschlüsselung und Redact-Annotationen gegen die Ziele PDF 1.2 / 1.3 / 1.4 / 1.5 / 1.6.
Version 1.5.12
- SaveAs-Nachverarbeitung für inkrementelle Katalog-Rewrites behoben. PDFiumVCL validiert nun das jüngste wiederholte indirekte Objekt, so dass bestehende /Version-Überschreibungen im Katalog beim Speichern auf eine explizit ältere PDF-Zielversion korrekt ersetzt werden.
- Die Regressionssuites in Delphi, C++Builder und Lazarus wurden auf je 44 Fälle erweitert — mit direkter Abdeckung des Ersetzens veralteter /Version-Katalogeinträge, der PDF 1.4-Katalogversion-Normalisierung und der Ablehnung von Transparenz- und Portable-Collection-Features, wenn die gewählte PDF-Zielversion sie nicht ausdrücken kann.
Version 1.5.11
- Versionierte SaveAs-Ausgabe für explizite Ziele PDF 1.3, 1.4, 1.5, 1.6 und 1.7 gehärtet. PDFiumVCL normalisiert nun Katalog-Versionsmarker, hält die standardmäßige Fit-Height-OpenAction versionsverträglich und lehnt neuere PDF-Features ab, wenn die gewählte Zielversion sie nicht ausdrücken kann.
- Regressionsabdeckung in Delphi, C++Builder und Lazarus hinzugefügt, die explizite PDF 1.3 bis PDF 1.7-Dateien speichert und neu lädt — um den finalen Header, die standardmäßige Fit-Height-OpenAction und die gemeldete PDF-Version zu verifizieren.
Version 1.5.10
- Von Option B der Spezifikation zu Option C gewechselt: TPdfView-Smoke-Tests in allen drei IDE-Suites hinzugefügt (Tests.PdfView). Jede Suite baut ein verstecktes Eltern-TForm (auf Pascal-Seite via TForm.CreateNew, auf C++Builder-Seite via
new TForm(NULL, 0)), repartiert ein TPdfView, setzt Active := True und prüft anschließend den Round-Trip der API für PageCount, PageNumber-Default, Zoom, Rotation, DisplayMode sowie dass View.Text dem zugrundeliegenden TPdf.Text entspricht. Jede IDE-Suite läuft nun mit 39 Fällen.
Version 1.5.9
- Von Option A der Spezifikation zu Option B gewechselt: Render-Smoke-Tests in allen drei IDE-Suites hinzugefügt. Jede Tests.Render-Suite ruft TPdf.RenderPage auf sample.pdf auf und verifiziert drei robuste Signale anstelle byteweiser Checksummen: das zurückgegebene Bitmap entspricht exakt der angeforderten Pixelgröße; verschiedene angeforderte Größen (200x100, 64x256) erzeugen passende Bitmaps; und die gerenderte Seite ist zu mindestens 95% weißer Hintergrund mit mindestens 50 (Lazarus: 20) nicht-weißen Pixeln, die den antialiasierten Text markieren. Jede IDE-Suite läuft nun mit 33 Fällen.
Version 1.5.8
- Die ursprünglichen A(2)-Testplan-Gruppen wurden abgeschlossen, indem pro IDE sieben weitere Regressionen ergänzt wurden: TPdf.CreateAnnotation, das eine anHighlight-Annotation aufbaut, plus ein SaveAs/LoadDocument-Round-Trip; der AcroForm-Lesepfad auf Demo/Delphi/FormFill/cmp_fill_out_and_merge_forms.pdf (FormType ist ftAcroForm, FormFieldCount > 0, FlattenAllPages reduziert die Felder auf null); und stille Leseweg-Abdeckung für Bookmarks, LinkAnnotationCount und WebLinkCount auf einem Dokument, das keines dieser Features besitzt. Jede IDE-Suite läuft nun mit 30 Fällen.
Version 1.5.7
- Die Suites in Delphi (DUnitX), Lazarus (FPCUnit) und C++Builder (GoogleTest) wurden um sieben neue Regressionen pro IDE erweitert: PdfVersion, PageRotation, TPdf.FindFirst / FindNext-Substring-Suche, Übereinstimmung von CharacterOrigin / CharacterRectangle mit dem AddText-Ursprung, CreateAttachment-Registrierung plus ein SaveAs/LoadDocument-Round-Trip sowie ein Round-Trip mit akzentuiertem Text via AddText, der verifiziert, dass der europäische TrueType-Einbettungspfad aus v1.3.0 Codepoints des Latin-1-Supplements unverändert beibehält.
Version 1.5.6
- Gespeicherte PDFs erhalten nun eine Standard-OpenAction für die erste Seite mit Fit-Height, wenn keine bestehende OpenAction vorhanden ist, sodass PDF-Reader generierte Dokumente initial mit Seitenhöhen-Zoom anzeigen.
- Regressionsabdeckung in Delphi, Lazarus und C++Builder für die erzeugte OpenAction und die Fit-Height-Einstellung hinzugefügt.
Version 1.5.5
- Regressionstests in den Suites Delphi (DUnitX), Lazarus (FPCUnit) und C++Builder (GoogleTest) für die indizierten Character- und Font-Inspektions-APIs hinzugefügt (TPdf.FontBaseName, FontFamilyName, FontWeight, FontItalicAngle, FontData, FontIsEmbedded, CharacterFontWeight, CharacterAngle). Die Lazarus-Suite überspringt FontData absichtlich, da es derzeit unter FPC innerhalb von FPDFFont_GetFontData eine Zugriffsverletzung auslöst.
Version 1.5.4
- Ein C++Builder Attachment-Demo hinzugefügt, das vom Delphi-Beispiel portiert wurde und das Erzeugen von PDFs, das Hinzufügen, Auflisten, Extrahieren, Löschen und Speichern eingebetteter Datei-Attachments samt Anzeige des MIME-Subtyps abdeckt.
Version 1.5.3
- Die Spread-Page-Berechnung, die hinter den Zwei-Seiten-Modi von TPdfView steht, als Unit-Level-Helfer ComputeSpreadPages(DisplayMode, PageNumber, PageCount, out LeftPageNo, out RightPageNo) verfügbar gemacht. Das Verhalten ist unverändert; der Helfer macht die titelblattbewusste Regel unabhängig testbar, ohne einen Viewer instanziieren zu müssen.
- Fünf Regressionstests in den Suites Delphi (DUnitX), Lazarus (FPCUnit) und C++Builder (GoogleTest) hinzugefügt — mit Abdeckung von leeren Dokumenten, der Standardpaarung zweier Seiten, dem allein stehenden Cover in dmTwoPageContinuousWithCover, der Paarung nach dem Cover und dem Klemmverhalten für Letzte-Seite / außerhalb des Bereichs.
Version 1.5.2
- Unterstützung für die Dokumentsprache über TPdf.Language hinzugefügt, abgebildet auf den /Lang-Eintrag des PDF-Katalogs.
- Zugriff auf den MIME-Subtyp des Attachments mit TPdf.AttachmentType hinzugefügt.
- anRedact zu TPdfAnnotationSubtype hinzugefügt und Hilfsmethoden zum Entfernen von Page-Objekten in TPdf und TPdfView ergänzt.
- Die Viewer- und Attachment-Demos aktualisiert, sodass sie die neuen Informationen zu Dokumentsprache und Attachmenttyp anzeigen, sofern verfügbar.
Version 1.5.1
- dmTwoPageContinuousWithCover für TPdfView hinzugefügt, damit Viewer-Layouts die erste Seite allein zeigen und anschließend mit Zwei-Seiten-Spreads fortfahren können.
- Die MultiPageViewer-Demos in Delphi, C++Builder und Lazarus aktualisiert, um den Cover-bewussten Zwei-Seiten-Anzeigemodus zugänglich zu machen.
Version 1.5.0
- Automatisierte Smoke-Test-Suites für Delphi (DUnitX), Lazarus (FPCUnit) und C++Builder (GoogleTest) hinzugefügt. Die drei Suites teilen sich eine einzige Fixture-PDF in Tests\TestData und führen jeweils dieselben sieben Fälle aus, die das Laden von Dokumenten, Seiteninformationen, Textextraktion, Metadaten, Save-Round-Trip, PDF-Header-Validierung und die Compressed-Property abdecken.
Version 1.4.3
- Das FontProperties-Demo erweitert, damit es sowohl die TPdfView- als auch die TPdf-APIs zu Schrift-Metadaten zeigt — einschließlich Schrift-Handles, Schriftdatengröße und Zeichenmetriken.
- Indizierte TPdfView-Character- und Font-Inspektions-Properties hinzugefügt und das FontProperties-Demo aktualisiert, damit es Schrift-Metadaten von Textobjekten abfragt.
Version 1.4.2
- Indizierte Character- und Font-Inspektions-Properties zu TPdf hinzugefügt, um Textanalyse ohne Viewer zu ermöglichen. Zeichen-indizierte Properties (CharacterAngle, CharacterFontSize, CharacterFontWeight) fragen Metriken pro Zeichen aus dem Textstream der aktuellen Seite ab. Page-Object-indizierte Properties (FontAscent, FontBaseName, FontData, FontDescent, FontFamilyName, FontHandle, FontIsEmbedded, FontItalicAngle, FontWeight) fragen Schrift-Metadaten für jedes Textobjekt auf der aktuellen Seite ab.
- Nicht-Text-Page-Objekte liefern für alle Font*-Properties sichere Nullwerte oder leere Werte zurück, statt einen Fehler auszulösen — das vereinfacht das Iterieren über jedes Page-Objekt und das Untersuchen nur der Text-Objekte.
- FontBaseName liest den PostScript-Basisschriftnamen direkt, statt auf den Schriftfamiliennamen zurückzugreifen, und liefert damit eine genauere Kennung für eingebettete Schriften.
Version 1.4.1
- C++Builder- und Lazarus-Varianten des EuropeanText-Demos hinzugefügt, damit alle unterstützten IDE-Familien die Generierung akzentuierten europäischen Texts mit System-TrueType-Schriften verifizieren können.
- C++Builder- und Lazarus-Varianten des FormFill-Demos hinzugefügt — inklusive Beispiel-Formular-PDFs, Feldbearbeitung, Erscheinungsbild-Regenerierung sowie Workflows für ausgefülltes Speichern und geflattetes Speichern.
Version 1.4.0
- Lazarus / Free Pascal-Unterstützung hinzugefügt: das neue Paket PDFiumLaz stellt dieselben TPdf-, TPdfView- und verwandten Komponenten unter dem LCL-Widget-Set bereit und erweitert die Bibliothek auf die Lazarus-IDE und den Free Pascal-Compiler neben den bestehenden Paketen für Delphi und C++Builder.
- Lazarus-Varianten der Demos hinzugefügt, damit Lazarus-Entwickler jedes Feature mit lauffähigen Beispielen erkunden können.
- Behoben: ein Lazarus-Kompilierungsproblem, bei dem Free-Pascal-Conditional-Defines zusammen mit Delphi-Compiler-Versionsprüfungen ausgewertet wurden — was FPC-Builds dazu brachte, Delphi-spezifische Unit-Namen aufzulösen und zu scheitern.
Version 1.3.1
- Den Form-Flattening-Workflow in den Hilfeunterlagen dokumentiert: GenerateFormAppearances, FlattenPage, FlattenAllPages sowie die zugehörigen FLAT_- / FLATTEN_-Konstanten sind nun in TPdf, TPdfView, der API-Referenz, der Feature-Matrix und den Programmierbeispielen abgedeckt.
- Die Architekturtabelle auf der Übersichtsseite korrigiert, sodass sie die tatsächlich im Lib-Ordner ausgelieferten Binding-Units auflistet.
Version 1.3.0
- Verbesserte Unterstützung europäischer Zeichen beim Erstellen von PDFs. TPdf.AddText lädt und cacht nun die passende System-TrueType-Schrift, bevor ein Textobjekt erzeugt wird, und bewahrt damit akzentuierte Zeichen aus Tschechisch, Französisch, Deutsch, Spanisch, Portugiesisch, Polnisch und Türkisch, die PDFiums eingebaute Standardschriften nicht darstellen können.
- Anwendungen, die zuvor Fragezeichen oder Ersatzglyphen für Latin-Text außerhalb von ASCII erzeugt haben, rendern nun ohne Code-Änderung korrekt. Das EuropeanText-Demo wurde hinzugefügt, um die Funktion zu veranschaulichen.
Version 1.2.0
- Refresh des AcroForm-Erscheinungsbildes zu TPdf hinzugefügt: ein Aufruf von GenerateFormAppearances nach Änderungen an FormField[]-Werten aktualisiert das Widget-Erscheinungsbild, sodass ausgefüllte Werte in Standard-PDF-Readern ohne interaktive Bearbeitungssitzung sichtbar sind.
- Form-Flattening-Hilfen zu TPdf (FlattenPage / FlattenAllPages) und TPdfView (FlattenPage für die aktuelle Viewseite) hinzugefügt. Flattening bettet ausgefüllte Feldwerte dauerhaft als gewöhnlichen Seiteninhalt ein und entfernt die interaktive Formularschicht, sodass ein statisches Dokument entsteht, das in allen Viewern konsistent rendert.
- Demo\Delphi\FormFill hinzugefügt, um die Workflows Fill-and-Save und Fill-and-Flatten anhand einer Beispiel-AcroForm-PDF zu demonstrieren.
Version 1.1.2
- Komprimierung von PDF-Streams beim Speichern hinzugefügt. Die neue Property TPdf.Compressed (standardmäßig aktiviert) schreibt unkomprimierte Content-Streams beim Speichern als FlateDecode-komprimierte Streams um, was die Dateigröße programmgenerierter PDFs deutlich reduziert. Anwendungen, die unkomprimierte Ausgabe benötigen, können Compressed vor dem Aufruf von SaveAs auf False setzen.
Version 1.1.1
- Win64-Paket-Builds enthalten keine Design-Time-Registrierungs-Units mehr, was Build-Zeit-Fehler verhindert, wenn das Win64-Paket in einem ausschließlich Runtime-Kontext eingesetzt wird.
- Der PDFium-DLL-Loader sucht nun zuerst im Win32- oder Win64-Anwendungsunterverzeichnis — mit den Standardnamen pdfium.dll und pdfium.v8.dll — und fällt anschließend auf das flache Anwendungsverzeichnis und das Windows-Systemverzeichnis zurück. Das entspricht dem DLL-Layout, das im Komponentenpaket mitgeliefert wird, und macht die Installation unkompliziert.
Version 1.1.0
- Behoben: ein visueller Clipping-Defekt im Zwei-Seiten-Modus von TPdfView — Seiteninhalte gingen durch den Bundsteg über die Mitte hinaus, weil sich linke und rechte Seitenkachel ein einziges Clipping-Rechteck teilten. Jede Kachel hat nun ein eigenes Clipping, sodass Inhalte innerhalb ihrer Seitengrenze bleiben.
- Die Fehlermeldung des Delphi-Demos verbessert, wenn die PDFium-DLL nicht gefunden werden kann — mit einem klareren Hinweis auf den erwarteten DLL-Namen und Speicherort.