Notes de version PDFiumVCL
Historique des versions pour les fonctions visibles par l'utilisateur, corrections, améliorations du visualiseur, génération de documents, sortie PDF/A, rendu et mises à jour de documentation de PDFiumVCL.
Version 1.39.52
Modifié (Changed)
Demo\Lazarus\CreatePDFa été enrichi afin que l’exemple d’introduction génère maintenant un PDF de deux pages avec vector paths, table content, embedded image, text annotation, rotated text et un document-building walkthrough plus clair.- Des pages
README.htmlsoignées ont été ajoutées pour chaque dossier de démo Delphi, C++Builder et Lazarus, en remplaçant le dernier README de démo en texte seul par un guide lisible dans le navigateur. - Mise à jour de
TPdf.AboutInfo, des métadonnées du package Lazarus et des métadonnées de version de l’installeur vers 1.39.52.
Version 1.39.51
- Les synthèses batch de
Demo\Delphi\PreflightReportCliajoutent des totaux de statut standard pour les résultats Pass, Action required et Review sur les standards sélectionnés. - Les lignes par fichier incluent désormais des compteurs action-required et review dans les synthèses TXT / HTML / JSON / CSV, ce qui facilite l'inspection des artefacts CI sans ouvrir chaque rapport généré.
- Mise à jour de
TPdf.AboutInfo, des métadonnées du package Lazarus et des métadonnées de version de l'installeur vers 1.39.51.
Version 1.39.50
- Le mode batch par dossier de
Demo\Delphi\PreflightReportCliest amélioré :batchdir=foldercollecte les chemins PDF découverts, les trie, puis génère les rapports dans un ordre stable. - Les analyses récursives de dossiers produisent désormais un ordre de rapports et des lignes de synthèse reproductibles, tandis que le traitement explicite
batch=list.txtconserve l'ordre du fichier de liste. - Mise à jour de
TPdf.AboutInfo, des métadonnées du package Lazarus et des métadonnées de version de l'installeur vers 1.39.50.
Version 1.39.49
- Les synthèses batch de
Demo\Delphi\PreflightReportClienregistrent maintenant les run settings : type de source, chemin source, état récursif, dossier de sortie, format de rapport, standards sélectionnés et modefailon=. - Les synthèses JSON incluent désormais un objet
run, les synthèses TXT et HTML affichent une section run settings, et les lignes CSV répètent les mêmes colonnes d'audit pour les tableurs et CI pipelines. - Mise à jour de
TPdf.AboutInfo, des métadonnées du package Lazarus et des métadonnées de version de l'installeur vers 1.39.49.
Version 1.39.48
- Le batch output naming de
Demo\Delphi\PreflightReportClia ete ameliore afin que des duplicate input file names partageant un memeoutdir=n'ecrasent plus leurs generated reports. - Batch runs ajoutent maintenant les suffixes
-2,-3et suivants lorsqu'un generated report path est deja attribue dans la meme execution, et summaries enregistrent le collision-safe report path final. TPdf.AboutInfo, Lazarus package metadata et installer version metadata ont ete mis a jour pour indiquer 1.39.48.
Version 1.39.47
- Les batch summaries de
Demo\Delphi\PreflightReportCliont ete ameliores afin que les sorties TXT et JSON incluent desormais des aggregate totals pour total files, processed files, failed files, issues et correspondancesfailon=. - CSV summaries restent une row table pure pour les consumers existants, tandis que HTML summaries continuent d'afficher les memes aggregate metrics dans le dashboard header.
TPdf.AboutInfo, Lazarus package metadata et installer version metadata ont ete mis a jour pour indiquer 1.39.47.
Version 1.39.46
Demo\Delphi\PreflightReportClia ete ameliore avecsummary=batch.html/.htmafin que les batch runs puissent produire un browser-readable dashboard en plus des TXT / CSV / JSON manifests.- HTML summaries affichent les metrics total, processed, failed, issue et correspondance
failon=, puis listent chaque input avec report links, status, counts et error text. TPdf.AboutInfo, Lazarus package metadata et installer version metadata ont ete mis a jour pour indiquer 1.39.46.
Version 1.39.45
Demo\Delphi\PreflightReportClia ete ameliore avecbatchdir=folderetrecursiveafin que les scripts puissent analyser directement des PDF folders sans d'abord ecrire un list file.- Directory batch mode reutilise le comportement
outdir=,summary=,standards=etfailon=de list-based batch mode ; non-recursive analyse uniquement la folder choisie, etrecursiveinclut les subfolders. TPdf.AboutInfo, Lazarus package metadata et installer version metadata ont ete mis a jour pour indiquer 1.39.45.
Version 1.39.44
- Amélioration de
Demo\Delphi\PreflightReportCliavecsummary=batch.csv|json|txtafin que les batch runs puissent produire un machine-readable manifest à côté des per-file reports. - Batch summaries contient chaque input path, report path, status, standard count, passed count, issue count, état de correspondance
failon=et error text pour CI jobs et scripts externes. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.44.
Version 1.39.43
- Amélioration de
Demo\Delphi\PreflightReportCliavecbatch=list.txtetoutdir=reportsafin que les scripts génèrent des preflight reports pour une liste de fichiers PDF en une seule exécution. - Batch mode ignore les lignes vides et les lignes de commentaire
#, dérive chaque report name.preflight.<ext>du PDF d’entrée, continue après les erreurs par fichier et récapitule processed et failed files avant de retourner. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.43.
Version 1.39.42
- Amélioration de
Demo\Delphi\PreflightReportCliavecfailon=none|issues|action|review, afin que les CI jobs puissent convertir les preflight results générés en exit codes déterministes. - La CLI renvoie désormais exit code 2 lorsqu'une
failon=rule sélectionnée correspond après la génération du report file et du optional attached-report PDF, tandis que les runtime errors renvoient toujours exit code 1. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.42.
Version 1.39.41
- Amélioration de
Demo\Delphi\PreflightReportCliavecattach=output.pdf, afin qu'un preflight report généré puisse être intégré comme document-level attachment dans une nouvelle PDF copy. - La CLI conserve sur disque le TXT / HTML / Markdown / JSON / CSV report file généré et refuse de l'attacher au input PDF path d'origine, ce qui réduit le risque d'écrasement accidentel.
- Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.41.
Version 1.39.40
- Ajout de
Demo\Delphi\PreflightReportCli, un Delphi console companion pour générerFPdfPreflightReportde façon scriptable sans ouvrir de viewer. - La CLI prend en charge la création de sample sans argument, les input / output arguments, optional password, les formats de sortie
text/html/md/json/csv, ainsi que lestandards=filtering pour PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R et PDF/VT. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.40.
Version 1.39.39
FPdfPreflightReportajouteTPdfPreflightReport.ToMarkdownetSaveMarkdownToFileafin que les preflight reports puissent etre exportes en Markdown adapte aux issue tracker.- Les exemples
PreflightReportpour Delphi, C++Builder et Lazarus ajoutent Markdown preview switching et des actions Save MD en plus du workflow TXT / HTML / JSON / CSV existant. TPdf.AboutInfo, Lazarus package metadata et installer version metadata ont ete mis a jour pour indiquer 1.39.39.
Version 1.39.38
- Les exemples
SecurityAuditpour Delphi, C++Builder et Lazarus ajoutent maintenant JSON audit report export en plus du workflow TXT save / copy existant. - Le JSON report contient
format,generatedAt,summary,findingCountet des lignesfindingsstructurées avec les champs severity, area et detail. TPdf.AboutInfo, Lazarus package metadata et installer version metadata ont été mis à jour pour indiquer 1.39.38.
Version 1.39.37
FPdfPreflightReporta été amélioré avecTPdfPreflightReport.ToCsvetSaveCsvToFileafin que les preflight reports puissent être exportés en spreadsheet-friendly CSV.- Les samples Delphi, C++Builder et Lazarus
PreflightReportont été mis à jour avec CSV preview switching et Save CSV actions aux côtés du workflow TXT / HTML / JSON existant. TPdf.AboutInfo, Lazarus package metadata et installer version metadata ont été mis à jour pour indiquer 1.39.37.
Version 1.39.36
FPdfPreflightReporta été enrichi avecTPdfPreflightReport.IssueCategoryCountsainsi que les types réutilisablesTPdfPreflightIssueCategoryCountetTPdfPreflightIssueCategoryCountspour agréger les marker-level issues par category.TPdfPreflightReport.ToText,ToHtmletToJsonont été mis à jour afin que la sortie PreflightReport générée inclue des issue-category count summaries avec les per-standard rows et detailed issue recommendations.- Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.36.
Version 1.39.35
- Le sample
PrintDialogétendu a été renommé enPrintPreferencespour Delphi, C++Builder et Lazarus, afin que le demo name corresponde désormais à son workflow PDF author print preferences, N-up printing, odd / even filtering, grayscale, cell border et duplex mapping. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.35.
Version 1.39.34
Demo\Delphi\PrintPDFaccepte désormais le chargement de PDF par glisser-déposer, et le workflow existantDemo\CBuilder\PrintPDFest documenté avec les exemples PrintPDF Delphi et Lazarus.TPdf.AboutInfo, Lazarus package metadata et installer version metadata ont été mis à jour pour indiquer 1.39.34.
Version 1.39.33
- Ajout de
Demo\CBuilder\SplitView, ce qui complète SplitView sample matrix pour Delphi, C++Builder et Lazarus. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.33.
Version 1.39.32
- Ajout de
Demo\Lazarus\SplitView, qui apporte side-by-side PDF comparison à Lazarus avec two- or three-pane layouts, active-view navigation, synchronized commands, zoom presets et rotation. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.32.
Version 1.39.31
- Ajout de
Demo\Lazarus\PrintPDF, qui apporte le standard PDF print workflow à Lazarus avec preview navigation, page ranges, copies, collate mode, progress et cancellation. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.31.
Version 1.39.30
- Ajout de
Demo\Lazarus\FontProperties, ce qui complète la matrice d'exemples FontProperties pour Delphi, C++Builder et Lazarus. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata afin d'indiquer 1.39.30.
Version 1.39.29
- Ajout de
Demo\CBuilder\FontProperties, qui apporte l'inspection indexée des métadonnées de caractères et de polices à C++Builder en plus de l'exemple Delphi. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata afin d'indiquer 1.39.29.
Version 1.39.28
- Ajout de
Demo\Delphi\ExtractTextPages, ce qui complète la matrice d'exemples d'extraction de texte page par page pour Delphi, C++Builder et Lazarus. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata afin d'indiquer 1.39.28.
Version 1.39.27
- Ajout de
Demo\Lazarus\PrintDialog, ce qui complète le PrintDialog sample matrix pour Delphi, C++Builder et Lazarus. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.27.
Version 1.39.26
- Ajout de
Demo\CBuilder\PrintDialog, ce qui porte le N-up printing et PDF author print preferences workflow sur C++Builder aux côtés du sample Delphi. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.26.
Version 1.39.25
- Ajout de
Demo\CBuilder\ViewerInteractionLab, ce qui complète le ViewerInteractionLab sample matrix pour Delphi, C++Builder et Lazarus. - Mise à jour du library build workflow et des Win64 C++Builder package outputs afin que les
TPdfViewviewer interaction methods se lient correctement dans les Win64 demos. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.25.
Version 1.39.24
- Ajout de
Demo\Lazarus\ViewerInteractionLab, ce qui porte le focused viewer interaction workflow sur Lazarus aux côtés du sample Delphi. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.24.
Version 1.39.23
- Ajout de
Demo\Lazarus\SearchAndSelect, ce qui complète la SearchAndSelect sample matrix pour Delphi, C++Builder et Lazarus. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.23.
Version 1.39.22
- Ajout de
Demo\CBuilder\ContentExtractionLabetDemo\Lazarus\ContentExtractionLab, ce qui porte le multi-category content extraction workflow sur tous les demo IDE pris en charge. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.22.
Version 1.39.21
- Amélioration de
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportetDemo\CBuilder\PreflightReportavec un preview format selector permettant de vérifier le text ou JSON output avant l'enregistrement des rapports. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.21.
Version 1.39.20
- Ajout de l'export JSON à
FPdfPreflightReportviaTPdfPreflightReport.ToJsonetSaveJsonToFile, avec summary lisible par machine, per-standard status / priority, next action et issue detail. - Mise à jour de
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportetDemo\CBuilder\PreflightReportavec des actions Save JSON en plus de l'export TXT / HTML. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.20.
Version 1.39.19
FPdfPreflightReportajoute désormaisTPdfPreflightStatus, issue categories, per-standard priority et next-action guidance dans les rapports TXT / HTML.Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportetDemo\CBuilder\PreflightReportaffichent maintenant status, priority, issue count et next action dans la summary grid.TPdf.AboutInfo, Lazarus package metadata et installer version metadata indiquent maintenant 1.39.19.
Version 1.39.18
- Ajout de
Demo\Lazarus\SecurityAudit, qui complète la matrice d'exemples Delphi, C++Builder et Lazarus pour le workflow d'audit PDF risk-surface en lecture seule. - L'exemple Lazarus énumère permissions, attachments, JavaScript actions, URI / Launch link annotations, web links, signatures, XFA state, V8 / XFA helper availability et unsupported-feature callbacks, puis enregistre ou copie la finding list sous forme de TXT report.
TPdf.AboutInfo, Lazarus package metadata et installer version metadata indiquent maintenant 1.39.18.
Version 1.39.17
- Ajout de
Demo\CBuilder\SecurityAudit, qui apporte le workflow d'audit PDF risk-surface en lecture seule à C++Builder aux côtés de l'exemple Delphi existant. - L'exemple C++Builder énumère permissions, attachments, JavaScript actions, URI / Launch link annotations, web links, signatures, XFA state, V8 / XFA helper availability et unsupported-feature callbacks, puis enregistre ou copie la finding list sous forme de TXT report.
TPdf.AboutInfo, Lazarus package metadata et installer version metadata indiquent maintenant 1.39.17.
Version 1.39.16
- Ajout de
Demo\CBuilder\SearchAndSelect, qui apporte le workflow viewer SearchAndSelect autonome à C++Builder aux côtés de l'exemple Delphi existant. - L'exemple C++Builder crée ou ouvre des PDFs, liste les matches sur toutes les pages avec page / character-index previews, prend en charge Previous / Next et double-click navigation, puis met en évidence les matches de la page courante avec
HighlightSearchText. - Il expose aussi
AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelection,OnSelectionChangeet les options spreadDisplayMode; les métadonnées de version indiquent maintenant 1.39.16.
Version 1.39.15
- Ajout de
Demo\CBuilder\WatermarkStamp, qui complète la demo matrix Delphi, Lazarus et C++Builder pour les workflows réutilisables de Form XObject watermark et stamp. - L’exemple C++Builder crée des PDF target et stamp, réutilise la stamp page via
CreateXObjectFromPage, applique des transforms avecTPdfMatrix, puis enregistre centered watermarks, corner stamps et page number labels. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.15.
Version 1.39.14
- Ajout de
Demo\Lazarus\WatermarkStamp, qui apporte à Lazarus le workflow réutilisable de Form XObject watermark et stamp. - L’exemple Lazarus crée des PDF target et stamp, réutilise la stamp page via
CreateXObjectFromPage, applique des transforms avecTPdfMatrix, puis enregistre centered watermarks, corner stamps et page number labels. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.14.
Version 1.39.13
- Ajout de
Demo\CBuilder\PreflightReport, ce qui complète la matrice de demos Delphi, Lazarus et C++Builder pour le workflow réutilisableFPdfPreflightReport. - L’exemple C++Builder utilise
FPdfPreflightReport.hpppour générer des standard summaries, TXT report previews, TXT / HTML report files et le comportement Open Last Report. TPdf.AboutInfo, Lazarus package metadata et installer version metadata ont été mis à jour pour indiquer 1.39.13.
Version 1.39.12
- Ajout de
Demo\Lazarus\PreflightReport, qui apporte à Lazarus le workflow de preflight report pour PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R et PDF/VT. - L’exemple Lazarus peut ouvrir ou créer un PDF, sélectionner des target standards, prévisualiser les summary rows et le TXT report output, enregistrer des TXT / HTML reports et ouvrir le report enregistré le plus récent.
TPdf.AboutInfo, Lazarus package metadata et installer version metadata ont été mis à jour pour indiquer 1.39.12.
Version 1.39.11
Demo\Delphi\SearchAndSelecta été enrichi avec une liste de résultats de recherche sur toutes les pages qui enregistre page number, character index et preview text.- Ajout de Previous / Next match navigation et de double-click result jumping, tout en conservant le comportement de
HighlightSearchTextsur la page courante. TPdf.AboutInfo, Lazarus package metadata et installer version metadata ont été mis à jour pour indiquer 1.39.11.
Version 1.39.10
Demo\Delphi\SecurityAuditajoute les actions Save Report et Copy Report qui exportent le summary courant et les finding rows sous forme de TXT audit report.- Le demo efface maintenant le report export state lorsque le audit panel est réinitialisé, afin que les reports copiés ou enregistrés restent alignés avec les findings visibles.
TPdf.AboutInfo, Lazarus package metadata et installer version metadata ont été mis à jour pour indiquer 1.39.10.
Version 1.39.9
Demo\Delphi\ContentExtractionLabajoute source-PDF save, report copy-to-clipboard et des actions all / none category selection.- Le demo invalide maintenant le report courant quand category selection change, afin que les TXT / JSON exports reflètent le extraction scope visible.
TPdf.AboutInfo, Lazarus package metadata et installer version metadata ont été mis à jour pour indiquer 1.39.9.
Version 1.39.8
- Ajout de
Demo\Delphi\ContentExtractionLab, un workflow sample unifié de content extraction pour document metadata, page text, page objects, images, attachments, links, annotations, bookmarks et font / character metrics. - L'exemple peut ouvrir un PDF existant ou créer un synthetic PDF avec du contenu text, image, attachment et annotation, puis générer des summary rows et des rapports TXT / JSON détaillés.
- Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.8.
Version 1.39.7
- Ajout de
Lib\FPdfPreflightReport.pas, un helper de rapport réutilisable qui regroupeValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfRetValidatePdfVTdans un objetTPdfPreflightReport. - Ajout de
Demo\Delphi\PreflightReport, un exemple de workflow qui ouvre ou crée un PDF, sélectionne les standards cibles, affiche des summary rows et issue recommendations, puis enregistre des rapports TXT ou HTML. - Les rapports générés décrivent explicitement la limite de la marker-level validation intégrée afin que les applications puissent l'associer à des content-level preflight tools dédiés si nécessaire.
- Mise à jour de
TPdf.AboutInfo, Lazarus package metadata, package project lists et installer version metadata pour indiquer 1.39.7.
Version 1.39.6
Demo\Delphi\SearchAndSelecta été ajouté comme exemple viewer workflow ciblé pour search highlighting, text selection, selected-text preview, copy, clear et spread display modes.- L'exemple démontre
HighlightSearchText, les options de recherche match-case / whole-word,AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboardetClearSelectionsans ajouter de nouvelle API de bibliothèque. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.6.
Version 1.39.5
Demo\Delphi\ViewerInteractionLaba été étendu en exemple viewer UX de style SearchAndSelect avecHighlightSearchText, options match-case / whole-word, aperçu du texte sélectionné et contrôles existants de sélection / presse-papiers.Demo\Delphi\PrintDialoga été étendu pour inspecter PDF author print preferences :PrintCopies,PrintPageRanges,PrintScaling,PrintPaperHandlinget duplex mapping visible viaSetPdfPrintPaperHandlingDevMode.Demo\Delphi\SecurityAudita été ajouté comme exemple risk-surface en lecture seule listant permissions, attachments, document JavaScript, URI / Launch links, web links, signatures, XFA state et V8 / XFA helper availability.- Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.5.
Version 1.39.4
- Ajout de
Demo\CBuilder\ImageToPDFetDemo\Lazarus\ImageToPDF, ce qui complète la matrice d'exemples ImageToPDF pour Delphi, C++Builder et Lazarus. - Les nouveaux exemples démontrent la sélection multi-images, l'aperçu de l'image sélectionnée, une page PDF par image, le dimensionnement A4 portrait / landscape, le centrage et la mise à l'échelle de l'image, la progression par image et l'ouverture du PDF généré après l'enregistrement.
- Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.4.
Version 1.39.3
- Ajout de
Demo\CBuilder\BatchExport, qui apporte le flux d'export multi-fichiers PDF vers JPG à C++Builder aux côtés des exemples Delphi et Lazarus existants. - L'exemple démontre
LoadCustomDocument,IPdfCancellationTokenSource, l'entréeTFileStreamen streaming, la progression par fichier et par page, la gestion de l'annulation, les entrées DPI / quality / password et l'ouverture du dossier de sortie à la fin. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.3.
Version 1.39.2
- Ajout de
Demo\Delphi\WatermarkStamp, un exemple exécutable de flux Form XObject qui crée un PDF cible et un stamp PDF réutilisable, puis applique des filigranes centrés, des tampons en haut à droite et des libellés de numéro de page sur chaque page. - L'exemple démontre
CreateXObjectFromPage,InsertFormObjectFromXObject,TPdfMatrixetFPDFPageObj_SetMatrixsans ajouter de nouvelle API de bibliothèque. - Mise à jour de
Docs\en-us\Examples.htmlpour utiliser le modèle actuelTPdfMatrix.Handlelors du passage de matrices àFPDFPageObj_SetMatrix. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.2.
Version 1.39.1
- Correction de la compatibilité de build par lot des demos C++Builder
PDFVieweretMultiPageVieweren remplaçantnullptrparNULLpour le project mode actuel. - Ajout de
Demo\Delphi\ViewerInteractionLab, un exemple ciblé deTPdfViewpour display modes, fit modes, page colors, rotation, user text selection, clipboard actions et retour de coordonnéesDeviceToPage. - Ajout de
Demo\CBuilder\StandardsLab/Demo\Lazarus\StandardsLabafin que les utilisateurs Lazarus puissent exécuter le flux de validation et de marker-output PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R et PDF/VT. - Les unités standards sont maintenant listées dans
Lib\37.0\PDFiumVcl.dprojandLib\FPC\PDFiumLaz.lpk, et la compilation du demo DelphiSplitViewa été corrigée en supprimant un importWinapi.ShellAPIdupliqué. - Correction des blocages de build par lot des demos Delphi dans
BatchExport,PDFViewer,MultiPageVieweretSplitView, sans modifier leur comportement à l'exécution. - Mise à jour de
TPdf.AboutInfo, Lazarus package metadata et installer version metadata pour indiquer 1.39.1.
Version 1.39.0
- Ajout de
Demo\Delphi\StandardsLab, un exemple exécutable de flux de travail standards qui charge ou crée un PDF, exécuteValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfRetValidatePdfVT, puis affiche la conformance détectée, l'état de réussite et le nombre d'issue dans une grille unique. - Les boutons d'enregistrement de StandardsLab appellent
SaveAsPdfA,SaveAsPdfUa,SaveAsPdfE,SaveAsPdfX,SaveAsPdfRetSaveAsPdfVT, ce qui rend visible la sortie marker des standards PDF sans écrire de harnais personnalisé. - Mise à jour de
TPdf.AboutInfo, des métadonnées du paquet Lazarus et des métadonnées de version de l'installateur pour indiquer 1.39.0.
Version 1.38.0
- Les surimpressions de recherche et de sélection de texte de
TPdfViewutilisent maintenant un vrai alpha blending au lieu d’un dessin par mask logique, ce qui préserve le contenu de la page sous les surbrillances. - Ajout de
SetPdfPrintPaperHandlingDevModepour mapperTPrintPaperHandlingvers les valeurs WindowsDEVMODE.dmDuplex:DMDUP_SIMPLEX,DMDUP_HORIZONTALetDMDUP_VERTICAL. TPdfView.SmoothScrollanime désormais les commandes line/page de scrollbar en timer-driven segments ; le thumb tracking reste immédiat.TPdf.AboutInfoet les métadonnées de version des installateurs passent à 1.38.0.
Version 1.37.0
TPdfpossède désormais un verrou de rendu par instance qui sérialiseRenderPage,RenderTile,RenderPageProgressive, le rechargement de page et le déchargement de document. Le rendu worker via un composant partagé devient praticable, l’application restant responsable des mutations et du cycle de vie.- Correction de l’enveloppe bitmap zero-copy pour refuser les DIB
TBitmapbottom-up et revenir à un tampon PDFium avec copie finale, supprimant les échecs stride corruption / access violation des tests de rendu VCL. - Comportement de sélection
TPdfViewresserré :AllowUserTextSelectionne bloque que les entrées utilisateur, les APIs de sélection par code continuent de peindre, etSelectAllsuit le spread réellement visible afin que la page de couverture ne sélectionne plus la page 2. Tests Delphi, Lazarus et C++Builder étendus. TPdf.AboutInfoet les métadonnées de version des installateurs passent à 1.37.0.
Version 1.36.0
- Sélection de texte utilisateur final activée dans
TPdfView:AllowUserTextSelection, réservé en v1.17.0, pilote maintenant drag-select, double-click word, triple-click line,Ctrl+A,Ctrl+CetShift+arrows. - Ajout de
SelectionColor,OnSelectionChangeet des APIs de sélection par code :HasSelection,SelectionCharCount,SelectedText,ClearSelection,SelectAll,CopySelectionToClipboard. - Les modes spread sélectionnent entre pages visibles, le menu contextuel Copy est attaché automatiquement quand l’hôte ne définit pas
PopupMenu, et la sélection est effacée lors des changements de document, page, Active ou DisplayMode. - Tests Delphi, Lazarus et C++Builder étendus pour propriétés de sélection, chemin souris, raccourcis clavier, popup par défaut, clipboard round-trip et spread selection.
Version 1.35.0
- Ajout du support d’injection de marqueurs PDF/VT (ISO 16612-2:2010) : TPdf.SaveAsPdfVT promeut le document courant en fichier conforme PDF/VT-1 ou PDF/VT-2 (le sous-ensemble PDF pour l’impression de données variables et transactionnelle). PDF/VT est construit sur PDF/X-4 (§6.2.1), donc l’injecteur écrit l’ensemble complet des marqueurs PDF/X-4 (XMP pdfxid, Info GTS_PDFXVersion + Trapped, OutputIntent avec ICC) avec les propriétés spécifiques à PDF/VT.
- Les propriétés PDF/VT spécifiques incluent XMP
pdfvtid:GTS_PDFVTVersionetpdfvtid:GTS_PDFVTModDate(synchronisé avecxmp:ModifyDateselon §6.3 NOTE 1) et la description pdfaExtension:schemas pour les deux namespaces NPES pdfxid et pdfvtid. - Ajout de TPdf.SaveAsPdfVTToStream pour sortie PDF/VT en mémoire et raccourci
TPdf.SaveAsPdfVT(FileName)qui produit PDF/VT-1 avec OutputIntent sRGB incorporé par défaut. - Ajout de TPdf.ValidatePdfVT : vérifie les marqueurs PDF/VT (y compris équivalence
pdfvtid:GTS_PDFVTModDate/xmp:ModifyDateet présence de/DPartRoot) et renvoie TPdfVTValidationResult. - Ajout de la propriété TPdf.PdfVTConformance : renvoie le niveau sans appel explicite à ValidatePdfVT.
- Nouveaux types exportés dans la nouvelle unité FPdfPdfvt : TPdfVTConformance, TPdfVTTrappedState, TPdfVTValidationResult, TPdfVTValidationIssue, TPdfVTSaveOptions.
- La hiérarchie Document Part (DPartRoot / DPart, §6.5) est structure au niveau application et N’EST PAS synthétisée automatiquement. Les exigences au niveau contenu PDF/X-4 (incorporation de polices, transparence, gestion ICC, interdictions OPI / JavaScript / Reference XObject) restent à la charge de l’auteur.
- Chaîne TPdf.AboutInfo mise à jour pour rapporter la version actuelle du produit.
Version 1.34.0
- Ajout du support d’injection de marqueurs PDF/R-1 (ISO 23504-1:2020) : TPdf.SaveAsPdfR promeut le document courant en fichier conforme PDF/R-1 (le sous-ensemble raster de PDF pour documents scannés). L’injection couvre les exigences au niveau format de fichier — le commentaire unique
%PDF-raster-1.0entre le trailer dictionary et startxref (§5), catalog réduit à la white list §6.3 (uniquement Version/ViewerPreferences/PageLayout/PageMode/AcroForm/Metadata), Document Information Dictionary réduit à §6.4.3 (uniquement Creator/Producer/CreationDate/ModDate), flux XMP avec les quatre entrées de §6.4.4 Table 1, et tableau/IDdans le trailer. - Ajout de TPdf.SaveAsPdfRToStream pour sortie PDF/R en mémoire et raccourci
TPdf.SaveAsPdfR(FileName). - Ajout de TPdf.ValidatePdfR : vérifie les marqueurs et renvoie TPdfRValidationResult.
- Ajout de la propriété TPdf.PdfRConformance : renvoie le niveau sans appel explicite à ValidatePdfR.
- Nouveaux types exportés dans la nouvelle unité FPdfPdfr : TPdfRConformance, TPdfRValidationResult, TPdfRValidationIssue, TPdfRSaveOptions. Le défaut supprime Title/Author/Subject/Keywords de l’Info et les entrées non autorisées du catalog.
- Les exigences au niveau contenu (structure Contents par page, MediaBox
[0 0 w h], filtres restreints, pas d’object streams, disposition des strips) restent à la charge du PDF source. PDF/R est structurellement plus strict que les autres PDF/x ; combiner avec un validateur du TWAIN Working Group pour vérification complète. - Chaîne TPdf.AboutInfo mise à jour pour rapporter la version actuelle du produit.
Version 1.33.0
- Ajout du support d’injection de marqueurs PDF/X (famille ISO 15930) : TPdf.SaveAsPdfX promeut le document courant en fichier conforme PDF/X-1a:2001, PDF/X-3:2002 ou PDF/X-4 par post-traitement du PDF de base avec une mise à jour incrémentale. L’injection couvre les exigences au niveau format de fichier — flux XMP avec
pdfxid:GTS_PDFXVersionet description pdfaExtension:schemas, Document Information Dictionary réécrit avec/GTS_PDFXVersion//GTS_PDFXConformance//Trapped, catalog mis à jour avec/OutputIntentspointant vers un OutputIntent/S /GTS_PDFXavec profil ICC incorporé, et tableau/IDdans le trailer. - Ajout de TPdf.SaveAsPdfXToStream pour sortie PDF/X en mémoire, et raccourci
TPdf.SaveAsPdfX(FileName)qui produit PDF/X-4 avec OutputIntent sRGB IEC61966-2.1 incorporé par défaut. - Ajout de TPdf.ValidatePdfX : vérifie les marqueurs de conformité et renvoie TPdfXValidationResult.
- Ajout de la propriété TPdf.PdfXConformance : renvoie le niveau sans appel explicite à ValidatePdfX.
- Nouveaux types exportés dans la nouvelle unité FPdfPdfx : TPdfXConformance, TPdfXTrappedState, TPdfXValidationResult, TPdfXValidationIssue, TPdfXSaveOptions. Le défaut vise PDF/X-4 avec sRGB ; les appelants peuvent fournir un profil ICC CMYK (FOGRA39, GRACoL2006...) via
IccProfileData. - Les exigences au niveau contenu (toutes polices incorporées, pas de JavaScript, pas d’annotations visibles, interdiction OPI, règles de transparence pour PDF/X-1a / PDF/X-3) restent à la charge de l’auteur. Combiner avec callas pdfaPilot ou Ghent PDF Workgroup Output Suite pour vérification complète.
- Chaîne TPdf.AboutInfo mise à jour pour rapporter la version actuelle du produit.
Version 1.32.0
- Ajout du support d’injection de marqueurs PDF/E-1 (ISO 24517-1:2008) : TPdf.SaveAsPdfE promeut le document courant en fichier conforme PDF/E-1 par post-traitement du PDF de base avec une mise à jour incrémentale. L’injection couvre les exigences au niveau format de fichier — flux XMP avec
pdfe:ISO_PDFEVersion = "PDF/E-1"et description pdfaExtension:schemas, Document Information Dictionary réécrit avec l’entrée obligatoire/ISO_PDFEVersion (PDF/E-1)du §5, équivalence Info-XMP héritée d’ISO 19005-1 §6.7 via §13.1 et tableau/IDdu trailer (§6.2). - Ajout de TPdf.SaveAsPdfEToStream pour sortie PDF/E en mémoire et raccourci
TPdf.SaveAsPdfE(FileName). - Ajout de TPdf.ValidatePdfE : vérifie les marqueurs de conformité et renvoie TPdfEValidationResult.
- Ajout de la propriété TPdf.PdfEConformance : renvoie le niveau sans appel explicite à ValidatePdfE.
- Nouveaux types exportés dans la nouvelle unité FPdfPdfe : TPdfEConformance, TPdfEValidationResult, TPdfEValidationIssue, TPdfESaveOptions.
- La réécriture du Info dictionary est une première pour le pipeline PDF/x de PDFiumVCL — réécrit l’objet Info existant avec le même numéro (référence /Info du trailer préservée) et en synthétise un nouveau si le trailer source n’a pas de /Info.
- Les exigences au niveau contenu (incorporation de polices, CMaps ToUnicode, XObjects / clés ExtGState / formulaires XFA interdits) restent à la charge de l’auteur.
- Chaîne TPdf.AboutInfo mise à jour pour rapporter la version actuelle du produit.
Version 1.31.0
- Ajout du support d’injection de marqueurs PDF/UA-1 (ISO 14289-1:2014) : TPdf.SaveAsPdfUa promeut le document courant en fichier conforme PDF/UA-1 par post-traitement du PDF de base avec une mise à jour incrémentale. L’injection couvre les exigences au niveau format de fichier applicables par post-traitement — flux de métadonnées XMP portant
pdfuaid:part = 1avec la description pdfaExtension:schemas correspondante,dc:titleobligatoire, catalog/MarkInfo << /Marked true /Suspects false >>et/ViewerPreferences << /DisplayDocTitle true >>(uniquement si la source n’en a pas), catalog/Lang(quand l’appelant fournit une étiquette BCP 47), et tableau/IDdans le trailer. - Ajout de TPdf.SaveAsPdfUaToStream pour sortie PDF/UA en mémoire, et d’un raccourci avec options par défaut
TPdf.SaveAsPdfUa(FileName)pour le cas courant. - Ajout de TPdf.ValidatePdfUa : vérifie un PDF ouvert pour les marqueurs de conformité PDF/UA-1 (existence de StructTreeRoot, /Lang, /MarkInfo /Marked true avec /Suspects = false, /ViewerPreferences /DisplayDocTitle true, identifiant XMP pdfuaid:part, présence de dc:title, /ID du trailer, statut de chiffrement) et renvoie un résultat structuré avec le niveau de conformité détecté et l’ensemble des problèmes trouvés.
- Ajout de la propriété TPdf.PdfUaConformance : renvoie le niveau de conformité du document ouvert (puc1, pucNone ou pucUnknown) sans appel explicite à ValidatePdfUa.
- Nouveaux types exportés dans la nouvelle unité FPdfPdfua : TPdfUaConformance, TPdfUaValidationResult, TPdfUaValidationIssue, TPdfUaSaveOptions.
- Les champs vides de TPdfUaSaveOptions (Title / Author / Subject / Keywords / Creator / Producer / CreationDate / ModDate / DocumentId / InstanceId / Language) sont remplis automatiquement via FPDF_GetMetaText / FPDF_GetFileIdentifier / FPDFCatalog_GetLanguage.
- Les exigences au niveau contenu (complétude du taggage StructTreeRoot, texte Alt de Figure, CMaps ToUnicode, incorporation de polices, etc.) restent à la charge de l’auteur du document — SaveAsPdfUa n’ajoute que les marqueurs format. ValidatePdfUa signale l’absence de StructTreeRoot comme
pvuaiMissingStructTreeRoot. - Chaîne TPdf.AboutInfo mise à jour pour rapporter la version actuelle du produit.
Version 1.30.0
- La sortie PDF/A-1b satisfait désormais les exigences d’équivalence entre Document Information Dictionary et XMP d’ISO 19005-1 (avec Cor.1:2007) : chaque entrée du Info dictionary écrite par PDFium dans le PDF de base est reflétée dans le paquet XMP, y compris Title (dc:title), Author (dc:creator), Subject (mappé vers dc:description par Cor.1), Keywords (pdf:Keywords), Creator (xmp:CreatorTool), Producer (pdf:Producer), CreationDate (xmp:CreateDate) et ModDate (xmp:ModifyDate). xmp:MetadataDate est également émis.
- Le trailer d’un document PDF/A contient maintenant toujours un tableau /ID (exigence stricte d’ISO 19005-1 6.1.3). Lorsque TPdf.SaveAsPdfA traite un document dont la source possède déjà un file identifier, les IDs de 16 octets permanent et changing sont réutilisés ; sinon, un ID de secours de 16 octets déterministe est dérivé des octets sources.
- Le XMP injecté embarque maintenant la description du extension schema pdfaid requise par ISO 19005-1 6.7.8 (remplacé par Cor.1) — pdfaid est considéré comme un extension schema relatif à XMP Specification 2004, donc tous les fichiers conformes doivent déclarer ses property names, value types et categories dans le conteneur pdfaExtension:schemas.
- TPdfASaveOptions gagne cinq nouveaux champs optionnels : Producer, CreationDate, ModDate (chaînes de date PDF au format « D:YYYYMMDDHHmmSSOHH'mm' »), DocumentId et InstanceId (chaînes de 16 octets pour le tableau /ID du trailer). TPdf.SaveAsPdfA / SaveAsPdfAToStream remplissent automatiquement les champs vides via FPDF_GetMetaText et FPDF_GetFileIdentifier ; le code existant continue donc à fonctionner sans modification.
- TPdf.ValidatePdfA / TPdf.PdfAConformance signalent maintenant trois problèmes supplémentaires : pvaiMissingTrailerId (pas de /ID dans le trailer), pvaiMissingXmpDates (xmp:CreateDate ou xmp:ModifyDate manquant) et pvaiMissingExtensionSchema (description de l’extension schema pdfaid absente).
- Les caractères non-ASCII de Title, Author, Subject, Keywords, Creator et Producer sont désormais encodés en UTF-8 dans le paquet XMP (XMP Specification exige UTF-8), préservant les métadonnées multilingues lors de la traversal de SaveAsPdfA.
- Chaîne TPdf.AboutInfo mise à jour pour rapporter la version actuelle du produit.
Version 1.29.0
- Mise à jour des DLL PDFium fournies (Win32 et Win64, builds standard et V8) vers l’instantané amont du 2026-05-22, intégrant les correctifs amont des chemins de plantage de FPDFText_SetText / FPDFText_SetCharcodes et divers renforcements internes du projet PDFium.
- Exposition du nouveau drapeau de sauvegarde FPDF_SUBSET_NEW_FONTS de PDFium dans FPdfPageOps.pas, permettant aux appelants de FPDF_SaveAsCopy de demander le sous-ensemble automatique des fichiers de polices incorporées pour les nouveaux objets de texte. Les constantes existantes FPDF_INCREMENTAL, FPDF_NO_INCREMENTAL et FPDF_REMOVE_SECURITY sont désormais définies sous la forme de décalage de bits amont (la valeur numérique héritée 3 est conservée en tant que FPDF_REMOVE_SECURITY_DEPRECATED pour la compatibilité binaire).
- Ajout de l’énumération FPDF_FONT_BACKEND_TYPE (FREETYPE / FONTATIONS) et du champ correspondant m_FontLibraryType sur FPDF_LIBRARY_CONFIG dans FPdfView.pas, afin que les applications qui initialisent PDFium avec le renderer Skia puissent choisir le backend de polices au démarrage.
- Mise à jour de la signature de TFPDFPage_InsertObject pour correspondre à l’amont : la fonction C retourne désormais FPDF_BOOL (TRUE en cas de succès, FALSE si page_object est NULL ou si le transfert d’ownership échoue) au lieu de void. Les appels existants de PDFiumVCL compilent toujours sans modification, Delphi / FPC permettant d’ignorer la valeur de retour d’une fonction.
- Correction de la chaîne TPdf.AboutInfo pour qu’elle indique la version actuelle du produit (elle était restée obsolète à v1.27.0 depuis la version 1.28.0 dédiée à la documentation).
Version 1.28.0
- Étendu de manière substantielle la documentation intégrée sur l’ensemble de la référence API : chaque entrée de propriété, méthode, événement et fonction globale comporte désormais une Description de 3 paragraphes, une liste Remarks, un Example Delphi multiligne et un bloc See Also plus riche — couvrant 200+ pages auparavant minces, dont tous les compteurs TPdf, les accesseurs de métadonnées, les accesseurs de polices et de caractères, les propriétés au niveau page, les enregistrements indexés, les méthodes au niveau document, et toute la surface d’état / affichage / événements de TPdfView.
- Affiné la mise en page de l’aide pour correspondre à la base visuelle losLab utilisée dans la référence HotXLS : tailles h1/h2 harmonisées, styles de grille de navigation API consolidés dans la StyleSheet partagée, et suppression des surcharges CSS inline par page sur Navigation.html.
- La documentation est désormais livrée avec un script utilitaire (Docs\Build-Expand-Entries.ps1) qui régénère l’enrichissement des pages d’entrée à partir d’une table de données unique, pour une maintenance reproductible.
Version 1.27.0
- Ajouté la prise en charge de la création PDF/A-1b : TPdf.SaveAsPdfA enregistre tout document ouvert en tant que fichier conforme PDF/A-1b en post-traitant le PDF de base par une mise à jour incrémentale qui injecte un flux de métadonnées XMP, un OutputIntent ICC sRGB et un catalogue de document mis à jour — le tout sans nécessiter d’API DLL supplémentaires. Fonctionne sur toutes les plates-formes prises en charge par PDFiumVCL.
- Ajouté TPdf.SaveAsPdfAToStream pour la sortie PDF/A en mémoire.
- Ajouté TPdf.ValidatePdfA : vérifie la conformité PDF/A d’un PDF ouvert (marqueurs XMP pdfaid, OutputIntent avec profil ICC intégré, chiffrement) et renvoie un résultat structuré indiquant le niveau de conformité détecté et l’ensemble des problèmes spécifiques trouvés.
- Ajouté la propriété TPdf.PdfAConformance : renvoie le niveau de conformité du document actuellement ouvert (pac1b, pac1a, pac2b, pac3b, pacNone ou pacUnknown) sans avoir besoin d’appeler explicitement ValidatePdfA.
- Nouveaux types exportés : TPdfAConformance, TPdfAValidationResult, TPdfAValidationIssue, TPdfASaveOptions (dans la nouvelle unité FPdfPdfa.pas).
- SaveAsPdfA prend en charge un profil ICC personnalisé via TPdfASaveOptions.IccProfileData ; lorsqu’il est laissé vide, le profil sRGB IEC61966-2.1 intégré (HP/Microsoft, 3144 bytes) est utilisé automatiquement.
- Remplacé la référence HTML monolithique par un système d’aide web restructuré : 302 pages d’entrée API individuelles (une par propriété, méthode, événement et fonction globale) couvrant TPdf et TPdfView, chacune avec une description complète, un tableau de paramètres, un exemple de code Delphi et des liens See Also.
- Ajouté Navigation.html : un index de navigation API complet sur une seule page organisé en six sections (propriétés / méthodes / événements TPdf, propriétés / méthodes / événements TPdfView, fonctions globales) avec une grille flex à 5 colonnes pour une consultation rapide.
- Reconstruit TPdf.html et TPdfView.html en tant que pages compactes de présentation des composants conservant les sections de référence de type (Types, Constants, Global Variables) et renvoyant aux pages d’entrée individuelles pour tous les membres.
- Ajouté la recherche en texte intégral, propulsée par Search.js, avec une correspondance incrémentale côté client sur l’ensemble des 312 pages indexées.
- Mis à jour toutes les barres de navigation du site pour pointer vers Navigation.html.
Version 1.26.0
- Ajouté Demo/Lazarus/BatchExport, le portage LCL de la démo Delphi BatchExport de la v1.14.0. Même ensemble de fonctionnalités : export PDF -> JPG multi-fichiers avec progression globale par fichier, progression actuelle par page, saisie DPI / qualité / mot de passe, et un lot annulable coopérativement basé sur IPdfCancellationToken. Le dossier de sortie est ouvert dans le gestionnaire de fichiers de la plate-forme lorsque l’extraction se termine avec succès.
Version 1.25.0
- Ajouté la réutilisation de pages via Form XObject à TPdf, permettant les flux de filigrane, de superposition de modèle et de “tamponner une page sur plusieurs” : CreateXObjectFromPage fabrique un handle réutilisable à partir de n’importe quelle page d’un autre document ; InsertFormObjectFromXObject insère UNE copie de la page encapsulée dans la page actuelle. Renvoie le FPDF_PAGEOBJECT inséré afin que l’appelant puisse le positionner / mettre à l’échelle / faire pivoter à l’aide de FPDFPageObj_SetMatrix et des assistants TPdfMatrix de la v1.9.0.
- La nouvelle classe Pascal TPdfXObject encapsule le handle FPDF_XOBJECT de PDFium et le ferme automatiquement dans son destructeur, éliminant la cérémonie manuelle FPDF_CloseXObject.
- Étendu les suites de régression Delphi et Lazarus à 147 cas chacune, et la suite C++Builder à 123 cas, couvrant les contrats de création de handle et d’insertion d’objet de page.
Version 1.24.0
- Ajouté TPdf.RenderPageProgressive — une variante annulable de RenderPage qui pilote la boucle de rendu progressif de PDFium et interroge un IPdfCancellationToken de la v1.7.0 entre les itérations, de sorte que les longs rendus haute DPI puissent être interrompus en plein milieu d’une page au lieu de bloquer l’appelant jusqu’à l’achèvement.
- Renvoie une valeur TPdfProgressiveStatus : prsDone, prsCancelled ou prsFailed. Passer AToken = nil pour effectuer le rendu jusqu’à la fin sans jamais marquer de pause (aucune possibilité de prsCancelled).
- Utilise le même chemin rapide zero-copy introduit dans la v1.21.0 — PDFium effectue le rendu directement dans le DIB du TBitmap de destination. Le même fallback hérité s’applique lorsque le DIB ne peut pas être encapsulé.
- Étendu les suites de régression Delphi et Lazarus à 145 cas chacune, et la suite C++Builder à 121 cas, couvrant le token nil (achevé), le token pré-annulé (prsCancelled) et l’équivalence pixel avec RenderPage synchrone sur un token actif.
Version 1.23.0
- Ajouté six nouvelles méthodes TPdfView qui exposent aux applications la sélection de texte dans les widgets de formulaire et l’Undo/Redo de PDFium : GetSelectedFormText renvoie le texte actuellement sélectionné dans le widget de formulaire focalisé ; SelectAllFormText sélectionne tous les caractères ; FormUndo / FormRedo / FormCanUndo / FormCanRedo pilotent l’historique d’édition du widget focalisé. Les API PDFium sous-jacentes étaient déjà liées mais n’avaient pas de point d’entrée de haut niveau. Les six méthodes court-circuitent de manière sûre lorsque la vue est inactive ou que le document n’a aucun widget AcroForm focalisé.
- Étendu les suites de régression Delphi et Lazarus à 142 cas chacune, et la suite C++Builder à 119 cas, couvrant le contrat “pas de formulaire / pas de focus” pour chaque nouvelle méthode.
Version 1.22.0
- Ajouté des enveloppes de composition de pages à TPdf : ImportPagesByIndex prend un tableau d’index basés sur zéro pour copier des pages spécifiques d’un document source ; ImportNPagesToOne renvoie un tout nouveau TPdf dont les pages sont des composites N-up de ce document ; MovePages réordonne les pages sur place. Les API PDFium sous-jacentes étaient déjà liées mais n’avaient pas de point d’entrée convivial pour Pascal.
- ImportPagesByIndex accepte un tableau vide pour importer toutes les pages source (équivalent à passer nil au niveau de l’ABI C).
- Étendu les suites de régression Delphi et Lazarus à 136 cas chacune, et la suite C++Builder à 115 cas, couvrant l’importation de sous-ensemble, l’importation de document entier, le réordonnancement de page et le composite N-up.
Version 1.21.0
- Amélioré les performances de rendu en faisant passer TPdf.RenderPage / TPdf.RenderTile (et les assistants TPdfView correspondants) sur un chemin de sortie zero-copy. PDFium écrit désormais directement dans le tampon DIB du TBitmap de destination au lieu d’un tampon interne qui était ensuite copié ligne par ligne, économisant une copie mémoire de width x height x 4 bytes par rendu. L’amélioration est la plus notable à haute DPI (panneaux de vignettes, export qualité impression, export par lots).
- L’ancien chemin par scanline est conservé comme fallback de sécurité pour le cas peu probable où le DIB de destination ne peut pas être encapsulé (dimensions extrêmes, stride inhabituel, OOM). Le comportement est identique au byte près entre les deux chemins, simplement plus lent dans le fallback.
- Étendu les suites de régression Delphi et Lazarus à 132 cas chacune, et la suite C++Builder à 112 cas, couvrant la mise à niveau pf32bit du bitmap appelant, le round-trip de dimensions et un test de cohérence stride pour grand bitmap.
Version 1.20.0
- Ajouté la mise en surbrillance des résultats de recherche à TPdfView : HighlightSearchText(Text, MatchCase, MatchWholeWord) parcourt la page de vue courante et renvoie le nombre de correspondances trouvées, peignant un masque HighlightColor sur chaque correspondance à chaque redessin. ClearHighlight supprime les surbrillances ; basculer la vue vers une autre page les efface automatiquement puisque les correspondances sont spécifiques à la page.
- HighlightColor a pour valeur par défaut clYellow et est publié pour que les applications puissent thématiser la surbrillance en accord avec leur palette d’interface.
- Étendu les suites de régression Delphi et Lazarus à 129 cas chacune, et la suite C++Builder à 109 cas, couvrant la couleur par défaut, le round-trip de couleur, les “vraies correspondances de mot dans un fixture” sur la chaîne sample.pdf, et le contrat “mot absent renvoie zéro correspondance”.
Version 1.19.0
- Ajouté la propriété FitMode à TPdfView avec quatre valeurs : pfmNone (zoom manuel), pfmActualSize (100%), pfmFitPage (la page entière tient dans la fenêtre d’affichage) et pfmFitWidth (la largeur de page correspond à celle de la fenêtre d’affichage). Le mode d’ajustement actif est réappliqué automatiquement lors de Resize et lorsque la page courante change, de sorte que les documents longs aux tailles de page mixtes restent parfaitement cadrés.
- Définir Zoom directement annule le mode d’ajustement actif (FitMode revient à pfmNone), conformément à la convention standard des visionneuses PDF où taper une valeur de zoom fait quitter Fit Page / Fit Width.
- La valeur par défaut est pfmNone afin que les applications existantes conservent leur comportement de zoom explicite.
- Étendu les suites de régression Delphi et Lazarus à 124 cas chacune, et la suite C++Builder à 106 cas, couvrant la valeur par défaut, le round-trip du mode, fit-page produisant un zoom réel sur un document chargé, et zoom manuel annulant le mode d’ajustement.
Version 1.18.0
- Ajouté la propriété PageColor à TPdfView, découplant l’arrière-plan de la page PDF rendue de la Color du contrôle environnant. La valeur par défaut est clWhite, donc les pages PDF s’affichent désormais en blanc papier indépendamment du thème de l’application hôte. Les visionneuses en mode sombre peuvent désormais conserver une zone de défilement sombre tout en laissant la page PDF effective en blanc (ou toute autre couleur choisie par l’application).
- Changement de comportement : les applications qui définissaient TPdfView.Color pour recolorer la page PDF doivent désormais définir PageColor à la place. L’expérience par défaut s’améliore pour le cas courant (pages blanches sur arrière-plan de contrôle thématisé) sans aucun changement de code.
- Étendu les suites de régression Delphi et Lazarus à 120 cas chacune, et la suite C++Builder à 103 cas, couvrant la valeur par défaut et le round-trip de couleur.
Version 1.17.0
- Ajouté des bascules de verrouillage d’entrée utilisateur à TPdfView afin que les applications intégrant la visionneuse dans des kiosques, des panneaux d’aperçu ou des contextes en lecture seule puissent désactiver les gestes de navigation sans sous-classement : AllowUserPageChange contrôle les nouveaux raccourcis clavier PgUp / PgDn / Ctrl+Home / Ctrl+End ; ChangePageOnMouseScrolling contrôle les nouveaux sauts de page molette haut / molette bas ; AllowUserTextSelection est réservée au futur chemin de sélection de texte par glisser-souris. Les trois ont par défaut la valeur True afin que les applications existantes soient mises à niveau sans changement de comportement.
- La navigation par molette saute Ctrl+molette pour que les applications puissent garder Ctrl+molette réservé au zoom.
- Étendu les suites de régression Delphi et Lazarus à 118 cas chacune, et la suite C++Builder à 101 cas, couvrant les valeurs par défaut et le round-trip des bascules.
Version 1.16.2
- Étendu la couverture de régression TPdfView pour les clics sur des liens d’annotation lorsque la page de la visionneuse diffère de la page TPdf associée, en utilisant un véritable chemin de clic souris en mode headless sur Delphi, Lazarus et C++Builder.
- Les suites Delphi et Lazarus exécutent désormais 114 cas chacune, et C++Builder en exécute désormais 99.
Version 1.16.1
- Corrigé la gestion des clics sur les liens dans TPdfView afin que les actions automatiques d’annotation et de lien web utilisent la page actuellement affichée par la visionneuse, même lorsque le composant TPdf associé est positionné sur une page différente.
- Renforcé TPdfThumbnailView contre les références Pdf pendantes lorsque le composant TPdf lié est détruit.
- Ajouté une couverture de régression sur la durée de vie de la référence des vignettes ; les suites Delphi et Lazarus exécutent désormais 113 cas chacune, et C++Builder en exécute désormais 98.
- Synchronisé README, la documentation des tests, le contenu de recherche / d’index de l’aide HTML et les sorties générées des packages C++ avec les mises à jour d’intégration v1.7.0 à v1.16.0.
Version 1.16.0
- Ajouté une nouvelle démo Delphi PrintDialog (Demo/Delphi/PrintDialog) qui se concentre sur l’impression N-up (1 / 2 / 4 / 9 pages par feuille) avec filtrage des pages paires / impaires, rendu en niveaux de gris et bordures de cellule optionnelles de 1 pixel. C’est un petit compagnon délibéré à la démo PrintPDF existante, qui couvre déjà l’aperçu, les fichiers récents, le zoom et la mise à l’échelle.
Version 1.15.0
- Ajouté un nouveau composant TPdfThumbnailView (unité FPdfThumbnail) qui restitue une vignette de page par ligne dans un panneau latéral défilant avec mise en surbrillance au survol et à la sélection, plus la navigation clic-pour-aller. Conçu pour être placé à côté d’un TPdfView pour que les utilisateurs finaux puissent parcourir un long document par page.
- Le composant est enregistré dans l’onglet de palette losLab aux côtés de TPdf et TPdfView ; propriétés clés : Pdf, CurrentPageIndex, ThumbnailWidth, ThumbnailHeight, TextColor, HoverColor, SelectionColor, BorderColor, et l’événement OnPageClick.
- Étendu les suites de régression Delphi et Lazarus à 112 cas chacune, et la suite C++Builder à 97 cas, couvrant les valeurs par défaut, le round-trip de la taille de vignette, le clamp des valeurs extrêmes, le round-trip de couleur et l’affectation du gestionnaire d’événement.
Version 1.14.0
- Ajouté une nouvelle démo Delphi BatchExport (Demo/Delphi/BatchExport) montrant comment convertir de nombreux fichiers PDF en JPG en une seule passe en utilisant TPdf.LoadCustomDocument pour un chargement en streaming, IPdfCancellationToken pour une annulation coopérative, et des barres de progression globale par fichier + actuelle par page. La démo utilise une instance TPdf par fichier (PDFium lui-même n’est pas thread-safe) et ouvre le dossier de sortie dans l’Explorateur lorsque l’extraction se termine avec succès.
Version 1.13.0
- Ajouté une superposition d’interface de rendu asynchrone à TPdfView via trois nouvelles propriétés : AsyncRendering, LoadingText et LoadingColor. Lorsque AsyncRendering est True, le chemin de peinture de page unique dessine un petit indicateur “Loading...” au-dessus de la page rendue afin que les applications utilisant leur propre worker pour les longs rendus partagent une affordance visuelle cohérente.
- Les valeurs par défaut préservent le comportement existant : AsyncRendering est False, donc les applications qui n’y participent pas ne voient aucun changement visuel.
- La documentation précise que PDFium lui-même n’est pas thread-safe — déporter réellement le rendu sur un worker exige que l’appelant conserve un TPdf par worker ; la prochaine démo d’export par lots montre ce schéma.
- Étendu les suites de régression Delphi et Lazarus à 106 cas chacune, et la suite C++Builder à 93 cas, couvrant les valeurs par défaut et le round-trip des trois propriétés.
Version 1.12.0
- Ajouté la gestion des liens pilotée par clic à TPdfView. La nouvelle propriété LinkOptions contrôle le comportement automatique pour les quatre types d’actions de lien PDF : goto (saut de page), URI (ShellExecute), launch (ShellExecute) et embedded GotoR (réservé). Les valeurs par défaut activent loAutoGoto et loAutoOpenURI ; loAutoLaunch et loAutoEmbeddedGoto restent désactivés afin qu’un clic accidentel ne puisse pas exécuter un programme arbitraire.
- Ajouté les événements OnAnnotationLinkClick et OnWebLinkClick qui se déclenchent avant toute action automatique et permettent aux applications d’inspecter le lien, de le marquer Handled ou de le rediriger (par exemple, vers une invite de sécurité).
- La détection de clic sur lien ne s’exécute que lorsque le geste est un clic plutôt qu’un glissement, en utilisant un nouvel ancrage MouseDown afin que les gestes de panoramique continuent à suivre le chemin de défilement existant sans changement.
- Étendu les suites de régression Delphi et Lazarus à 102 cas chacune, et la suite C++Builder à 91 cas, couvrant les LinkOptions par défaut, le round-trip d’ensemble et l’affectation du gestionnaire d’événement.
Version 1.11.0
- Ajouté un raffinement visuel à TPdfView : les propriétés PageShadowSize, PageShadowColor et PageBorderColor peignent une ombre portée optionnelle sous le rectangle de page et une bordure d’un pixel autour de celui-ci. Les valeurs par défaut préservent le rendu plat précédent (PageShadowSize = 0 ; la bordure est dessinée avec clBlack par défaut mais se fond dans l’arrière-plan blanc par défaut jusqu’à ce que les appelants modifient les couleurs).
- Ajouté une propriété SmoothScroll comme indicateur opt-in pour une future animation de défilement incrémentale ; la propriété fait un round-trip aujourd’hui et est câblée afin que les applications puissent persister la préférence, tandis que le côté rendu utilise toujours le comportement de défilement immédiat existant.
- Étendu les suites de régression Delphi et Lazarus à 98 cas chacune, et la suite C++Builder à 89 cas, couvrant les valeurs par défaut, le round-trip de propriété et le clamp de taille d’ombre négative.
Version 1.10.0
- Ajouté l’insertion directe d’image via de nouvelles surcharges TPdf.AddImage et TPdfView.AddImage qui prennent soit un chemin de fichier, soit un TBitmap, en plus du AddPicture existant basé sur TPicture. AddImage(FileName) reconnaît tout format enregistré auprès des unités graphiques VCL ou LCL (BMP, PNG via l’unité PngImage, JPG, etc.) et passe par le même pipeline qu’AddPicture afin que le comportement soit identique.
- AddImage(TBitmap) ignore l’intermédiaire TPicture, ce qui simplifie les appelants qui détiennent déjà un TBitmap issu d’un rendu ou d’un travail de génération par lots.
- Étendu les suites de régression Delphi et Lazarus à 92 cas chacune, et la suite C++Builder à 84 cas, couvrant l’insertion de bitmap, les bornes de l’objet de page, le rejet de bitmap nil et le chargement de fichier BMP.
Version 1.9.0
- Ajouté la prise en charge de matrices de transformation de haut niveau via la nouvelle classe TPdfMatrix dans l’unité FPdfMatrix. TPdfMatrix encapsule le FS_MATRIX de PDFium avec une API OO pour Translate, Scale, Rotate, HorizontalFlip, VerticalFlip, CentralFlip, Skew et Multiply, adaptée à la composition de transformations avant de les remettre à FPDFPageObj_SetMatrix et aux API PDFium similaires.
- TPdfMatrix.Multiply effectue correctement un instantané des six éléments de matrice avant de calculer les nouvelles valeurs de ligne, corrigeant un problème latent où les implémentations Pascal alternatives écrasent les éléments précédents pendant le même appel et produisent des résultats incorrects pour toute composition au-delà de la translation pure.
- Étendu les suites de régression Delphi et Lazarus à 88 cas chacune, et la suite C++Builder à 81 cas, couvrant identité, reset, translate / scale / flip, ordre de composition post-multiplicatif et le cas de régression Multiply.
Version 1.8.0
- Ajouté le chargement de flux à la demande via la nouvelle méthode TPdf.LoadCustomDocument(AStream, AOwnsStream) et la classe utilitaire TPdfStreamAdapter, adossées à FPDF_LoadCustomDocument de PDFium. PDFium lit désormais des blocs depuis le TStream fourni uniquement en cas de besoin, de sorte que les PDF très volumineux ou distants ne nécessitent plus de copie en mémoire préalable.
- Ajouté la propriété de flux optionnelle : passer AOwnsStream = True remet la durée de vie du TStream à TPdf, qui le libère lors de l’exécution d’UnloadDocument.
- Étendu les suites de régression Delphi et Lazarus à 79 cas chacune, et la suite C++Builder à 75 cas, couvrant le chargement en streaming via TFileStream, le nettoyage de flux possédé et le contrat “flux possédé en externe survit-décharge”.
Version 1.7.0
- Ajouté des primitives d’annulation asynchrone coopérative dans la nouvelle unité FPdfAsync, exposant IPdfCancellationToken / IPdfCancellationTokenSource et un singleton réutilisable PdfNoCancellationToken, afin que les longs flux de rendu et d’export puissent prendre en charge une sémantique propre d’annulation depuis l’interface utilisateur.
- Ajouté un assistant léger TPdfFuture<T> qui exécute un worker sur un thread d’arrière-plan et renvoie l’enveloppe TPdfFutureResult<T> vers le thread principal, distinguant les cas de succès, d’annulation et d’échec.
- Étendu les suites de régression Delphi et Lazarus à 76 cas chacune, et la suite C++Builder à 73 cas, avec une couverture partagée de l’état d’annulation, de l’annulation idempotente, du fan-out de callback et de l’enregistrement post-annulation.
Version 1.6.10
- Ajouté un accès TPdf.PrintPageRanges de haut niveau à la plage de pages d’impression définie dans les préférences de la visionneuse PDF, renvoyant des plages de pages basées sur 1 pour le code applicatif.
- Ajouté TPdf.SetFormFieldFlags / SetFormFieldFlagsAt et les assistants TPdfView correspondants afin que les applications puissent mettre à jour les flags des champs AcroForm via l’API publique, y compris la couverture des flags password et multi-select.
- Renforcé la couverture ABI de liaison PDFium pour FPDF_DWORD de taille Windows, les callbacks FPDF_FILEACCESS et les champs de slot embedder V8.
Version 1.6.9
- Ajouté des liaisons de rendu Skia de bas niveau pour les API FPDF_RenderPageSkia et FPDF_FFLDrawSkia nouvellement exportées dans les DLL PDFium standard et V8 livrées.
- Étendu les vérifications de couverture des liaisons publiques afin que le chargement de DLL standard et V8 vérifie désormais les points d’entrée de rendu Skia aux côtés des sondes de capacités V8/XFA existantes.
Version 1.6.8
- Ajouté TPdf.SetTextPositions et TPdfSingleArray pour définir les positions par caractère sur des objets texte existants via l’API FPDFText_SetPositions nouvellement exportée.
- Promu FPDFText_SetPositions au rang de liaison requise pour les DLL PDFium actuellement livrées, tout en confirmant que les points d’entrée de rendu Skia restent indisponibles parce que les DLL ne les exportent toujours pas.
- Étendu les suites de régression Delphi, C++Builder et Lazarus à 65 cas chacune avec la couverture des positions de texte.
Version 1.6.7
- Ajouté un accès TPdf de haut niveau aux actions JavaScript de name-tree du document, renvoyant les noms d’actions et les scripts via JavaScriptAction et JavaScriptActions.
- Ajouté TPdf.FileIdentifier pour lire les IDs de trailer permanents et changeants en tant que TBytes binaires sans le byte de terminaison de PDFium.
- Ajouté TPdf.PageBox, GetPageBox et SetPageBox pour MediaBox, CropBox, BleedBox, TrimBox et ArtBox sur la page courante.
- Confirmé que les DLL PDFium actuellement livrées ne laissent indisponibles à l’exécution que les points d’entrée de rendu Skia parce que ces exports ne sont pas présents.
- Étendu les suites de régression Delphi, C++Builder et Lazarus à 64 cas chacune avec la couverture des actions JavaScript de document, de l’ID de trailer et des page-box.
Version 1.6.6
- Ajouté la prise en charge à l’exécution de la DLL PDFium activée V8 livrée. Définir EnableV8Engine avant le chargement sélectionne désormais pdfium.v8.dll depuis l’arborescence DLLs\Win32 ou DLLs\Win64 et expose les liaisons réservées V8/XFA lorsque la DLL chargée les fournit.
- Ajouté V8FeaturesAvailable, XfaBStrHelpersAvailable, GetRecommendedV8Flags et des liaisons optionnelles de bas niveau pour FPDF_BStr_*, FPDF_GetRecommendedV8Flags et FPDF_GetArrayBufferAllocatorSharedInstance.
- Rendu FPDFText_SetPositions optionnel afin que PDFiumVCL continue de charger avec les DLL PDFium qui n’exportent pas ce setter de position de texte expérimental.
- Étendu les suites de régression Delphi, C++Builder et Lazarus à 61 cas chacune avec la couverture des capacités DLL standard et DLL V8.
Version 1.6.5
- Ajouté l’inspection de l’arbre de structure Tagged PDF via TPdf.StructureElements et TPdfView.StructureElements, incluant le type d’élément, le titre, le texte alternatif, le texte réel, le texte d’expansion, la langue, les IDs marked-content, le nombre d’enfants et le nombre d’attributs.
- Ajouté la sélection du mode d’impression PDFium Windows via TPdfPrintMode et SetPdfPrintMode, couvrant les modes d’impression EMF, texte seul, PostScript, pass-through, image-mask et Type 42.
- Ajouté des liaisons de bas niveau pour les exports publics PDFium restants de la DLL standard couvrant les actions JavaScript, les flags de formulaire / couleur de police d’annotation, l’état actif d’objet de page, l’insertion indexée, les valeurs flottantes de content-mark, les données de profil ICC d’image, la suppression d’objet de formulaire et les positions de texte.
- Étendu les suites de régression Delphi, C++Builder et Lazarus à 59 cas chacune avec la couverture de l’arbre de structure Tagged PDF, du mode d’impression et des liaisons d’exports publics.
Version 1.6.4
- Mis à jour les démos Delphi, C++Builder et Lazarus pour ouvrir automatiquement les PDF générés, les textes/images exportés et les dossiers de sortie par lots après une création réussie.
Version 1.6.3
- Étendu les suites de régression alignées Delphi, C++Builder et Lazarus à 56 cas chacune avec la couverture GUI TPdfView pour les assistants fit-zoom, les round-trips de coordonnées device/page, les tests de hit-test de caractères et le panoramique souris via des contrôles de visionneuse en fenêtre cachée.
- Les fixtures TPdfView utilisent désormais une taille de visionneuse explicite et des sous-classes uniquement de test qui exercent les gestionnaires de souris protégés tout en gardant les suites entièrement headless.
Version 1.6.2
- Corrigé TPdf.AddPage(0, ...) afin que la première page insérée devienne immédiatement la page active. Le code d’exemple existant continue de fonctionner, tandis que PageNumber rapporte désormais une page basée sur 1 valide après insertion.
- Synchronisé la version du package Lazarus et étendu les suites de régression alignées Delphi, C++Builder et Lazarus à 52 cas chacune.
Version 1.6.1
- Corrigé une exigence de version minimale incorrecte dans le validateur de conformité de version PDF de la v1.6.0 : l’action SetState a été reclassée de PDF 1.5 vers PDF 1.2, conformément à PDF 1.2 Reference 6.9.9. Les cibles SaveAs PDF 1.3 / 1.4 contenant des actions SetState s’enregistrent désormais correctement au lieu d’être rejetées.
- Ajouté des vérifications lexicales PDF 1.2 correspondantes selon la même section de spécification : les actions Sound, Movie et NOP ainsi que l’espace colorimétrique Separation sont désormais bloqués lorsque la version cible choisie est antérieure à PDF 1.2.
- Étendu les suites de régression Delphi, C++Builder et Lazarus à 50 cas chacune en ajoutant un test d’acceptation positif PDF 1.4 SetState qui verrouille la limite corrigée.
Version 1.6.0
- Renforcé les cibles SaveAs PDF 1.0 à PDF 1.7 explicites avec un validateur complet de fonctionnalités par version qui couvre toute la chronologie des fonctionnalités de PDF 1.1 à ISO 32000-1. Le validateur bloque désormais les enregistrements qui contiennent des entrées de dictionnaire, des noms de filtres, des sous-types d’annotation, des types d’action, des polices, des espaces colorimétriques ou des paramètres de chiffrement introduits après la version cible choisie. Exemples : JBIG2Decode (1.4+), MarkInfo / Tagged PDF (1.4+), OutputIntents (1.4+), ICCBased / DeviceN / BleedBox / TrimBox / ArtBox / StructTreeRoot (1.3+), annotations Polygon / PolyLine / Caret / Screen / Watermark / Redact, chiffrement AES et AES-256 (CFM AESV2 / AESV3), entrées de catalogue Perms / Legal / Requirements / NeedsRendering, ainsi que les actions liées à une version telles que JavaScript, Trans, SetState, Rendition, GoToE, GoTo3DView sont toutes rejetées lorsque la version PDF cible ne peut pas les représenter.
Version 1.5.13
- Étendu les suites de régression Delphi, C++Builder et Lazarus à 49 cas chacune, ajoutant une couverture directe pour le rejet des espaces colorimétriques ICCBased, du MarkInfo Tagged PDF, des annotations Polygon, du chiffrement AES (V2) et des annotations Redact pour des cibles PDF 1.2 / 1.3 / 1.4 / 1.5 / 1.6 respectivement.
Version 1.5.12
- Corrigé le post-traitement SaveAs pour les réécritures de catalogue incrémentales. PDFiumVCL valide désormais le dernier objet indirect répété, de sorte que les surcharges /Version de catalogue existantes sont remplacées correctement lors de l’enregistrement vers une version cible PDF plus ancienne explicite.
- Étendu les suites de régression Delphi, C++Builder et Lazarus à 44 cas chacune, ajoutant une couverture directe pour le remplacement /Version de catalogue obsolète, la normalisation de version de catalogue PDF 1.4 et le rejet des fonctionnalités de transparence et de collection portable lorsque la version cible PDF sélectionnée ne peut pas les représenter.
Version 1.5.11
- Renforcé la sortie SaveAs versionnée pour les cibles PDF 1.3, 1.4, 1.5, 1.6 et 1.7 explicites. PDFiumVCL normalise désormais les marqueurs de version de catalogue, conserve l’OpenAction Fit Height par défaut compatible avec la version, et rejette les fonctionnalités PDF plus récentes lorsque la version cible sélectionnée ne peut pas les représenter.
- Ajouté une couverture de régression Delphi, C++Builder et Lazarus qui enregistre et recharge les fichiers PDF 1.3 à PDF 1.7 explicites, vérifiant l’en-tête final, l’OpenAction Fit Height par défaut et la version PDF rapportée.
Version 1.5.10
- Passé de l’option B de la spécification à l’option C en ajoutant des smoke tests TPdfView dans les trois suites IDE (Tests.PdfView). Chaque suite construit un TForm parent caché (via TForm.CreateNew côté Pascal et
new TForm(NULL, 0)côté C++Builder), rattache un TPdfView, définit Active := True, puis vérifie la surface de round-trip pour PageCount, PageNumber par défaut, Zoom, Rotation, DisplayMode, et que View.Text correspond au TPdf.Text sous-jacent. Chaque suite IDE exécute désormais 39 cas.
Version 1.5.9
- Passé de l’option A de la spécification à l’option B en ajoutant des smoke tests de rendu dans les trois suites IDE. Chaque suite Tests.Render appelle TPdf.RenderPage sur sample.pdf et vérifie trois signaux robustes au lieu de sommes de contrôle byte par byte : le bitmap retourné correspond exactement à la taille de pixel demandée ; différentes tailles demandées (200x100, 64x256) produisent des bitmaps correspondants ; et la page rendue est blanche à au moins 95% en arrière-plan avec au moins 50 (Lazarus : 20) pixels non blancs marquant le texte anticrénelé. Chaque suite IDE exécute désormais 33 cas.
Version 1.5.8
- Clôturé les groupes initiaux du plan de tests A(2) en ajoutant sept régressions supplémentaires par IDE : TPdf.CreateAnnotation construisant une annotation anHighlight plus un round-trip SaveAs/LoadDocument, le chemin de lecture AcroForm sur Demo/Delphi/FormFill/cmp_fill_out_and_merge_forms.pdf (FormType est ftAcroForm, FormFieldCount > 0, FlattenAllPages ramène les champs à zéro), et une couverture silencieuse du chemin de lecture pour Bookmarks, LinkAnnotationCount et WebLinkCount sur un document qui ne possède aucune de ces fonctionnalités. Chaque suite IDE exécute désormais 30 cas.
Version 1.5.7
- Étendu les suites Delphi (DUnitX), Lazarus (FPCUnit) et C++Builder (GoogleTest) avec sept nouvelles régressions par IDE : PdfVersion, PageRotation, recherche de sous-chaîne TPdf.FindFirst / FindNext, concordance de CharacterOrigin / CharacterRectangle par rapport à l’origine d’AddText, enregistrement de CreateAttachment plus un round-trip SaveAs/LoadDocument, et un round-trip AddText de texte accentué qui vérifie que le chemin d’intégration TrueType européen de la v1.3.0 maintient intacts les points de code Latin-1 supplémentaires.
Version 1.5.6
- Les PDF enregistrés reçoivent désormais une action d’ouverture Fit Height par défaut sur la première page lorsqu’aucune OpenAction existante n’est présente, de sorte que les lecteurs PDF affichent initialement les documents générés au zoom hauteur de page.
- Ajouté une couverture de régression Delphi, Lazarus et C++Builder pour l’OpenAction générée et le réglage Fit Height.
Version 1.5.5
- Ajouté des tests de régression dans les suites Delphi (DUnitX), Lazarus (FPCUnit) et C++Builder (GoogleTest) pour la surface API indexée d’inspection de caractères et de polices (TPdf.FontBaseName, FontFamilyName, FontWeight, FontItalicAngle, FontData, FontIsEmbedded, CharacterFontWeight, CharacterAngle). La suite Lazarus saute intentionnellement FontData, qui provoque actuellement une violation d’accès à l’intérieur de FPDFFont_GetFontData sous FPC.
Version 1.5.4
- Ajouté une démo Attachment C++Builder portée depuis l’échantillon Delphi, couvrant la création de PDF, l’ajout, la liste, l’extraction, la suppression et l’enregistrement de pièces jointes intégrées avec affichage du sous-type MIME.
Version 1.5.3
- Exposé le calcul de pagination en double page qui sous-tend les modes deux pages de TPdfView en tant qu’assistant au niveau unité ComputeSpreadPages(DisplayMode, PageNumber, PageCount, out LeftPageNo, out RightPageNo). Le comportement est inchangé ; l’assistant rend la règle prenant en compte la couverture testable indépendamment sans instancier une visionneuse.
- Ajouté cinq tests de régression dans les suites Delphi (DUnitX), Lazarus (FPCUnit) et C++Builder (GoogleTest) couvrant les documents vides, l’appariement deux pages standard, la page de couverture autonome en dmTwoPageContinuousWithCover, les paires post-couverture, et le comportement de clamp dernière page / hors plage.
Version 1.5.2
- Ajouté la prise en charge de la langue de document via TPdf.Language, mappée sur l’entrée /Lang du catalogue PDF.
- Ajouté l’accès au sous-type MIME de pièce jointe avec TPdf.AttachmentType.
- Ajouté anRedact à TPdfAnnotationSubtype et ajouté des assistants de suppression d’objet de page pour TPdf et TPdfView.
- Mis à jour les démos viewer et attachment pour afficher les nouvelles informations de langue et de type de pièce jointe lorsqu’elles sont disponibles.
Version 1.5.1
- Ajouté dmTwoPageContinuousWithCover à TPdfView afin que les mises en page de visionneuse puissent afficher la première page seule puis continuer avec des doubles pages.
- Mis à jour les démos MultiPageViewer Delphi, C++Builder et Lazarus pour exposer le mode d’affichage deux pages prenant en compte la couverture.
Version 1.5.0
- Ajouté des suites de tests automatisés de niveau smoke pour Delphi (DUnitX), Lazarus (FPCUnit) et C++Builder (GoogleTest). Les trois suites partagent un seul PDF de fixture dans Tests\TestData et exécutent chacune les mêmes sept cas, couvrant le chargement de document, les infos de page, l’extraction de texte, les métadonnées, le round-trip d’enregistrement, la validation d’en-tête PDF et la propriété Compressed.
Version 1.4.3
- Amélioré la démo FontProperties pour montrer à la fois les API de métadonnées de police de TPdfView et de TPdf, y compris les handles de police, la taille des données de police et les métriques de caractère.
- Ajouté des propriétés indexées d’inspection de caractères et de polices à TPdfView et mis à jour la démo FontProperties pour interroger les métadonnées de police par objet texte.
Version 1.4.2
- Ajouté à TPdf des propriétés indexées d’inspection de caractères et de polices pour l’analyse de texte sans nécessiter de visionneuse. Les propriétés indexées par caractère (CharacterAngle, CharacterFontSize, CharacterFontWeight) interrogent les métriques par caractère depuis le flux de texte de la page courante. Les propriétés indexées par objet de page (FontAscent, FontBaseName, FontData, FontDescent, FontFamilyName, FontHandle, FontIsEmbedded, FontItalicAngle, FontWeight) interrogent les métadonnées de police de tout objet texte sur la page courante.
- Les objets de page non textuels renvoient des valeurs zéro ou vides sûres pour toutes les propriétés Font* plutôt que de lever une erreur, ce qui rend simple de parcourir chaque objet de page et d’inspecter uniquement ceux de type texte.
- FontBaseName lit directement le nom PostScript de police de base plutôt que de se rabattre sur le nom de famille de police, donnant un identifiant plus précis pour les polices intégrées.
Version 1.4.1
- Ajouté les versions C++Builder et Lazarus de la démo EuropeanText afin que toutes les familles d’IDE prises en charge puissent vérifier la génération de texte européen accentué avec des polices TrueType système.
- Ajouté les versions C++Builder et Lazarus de la démo FormFill, incluant des PDF de formulaire d’exemple, l’édition des champs, la régénération d’apparence, les flux d’enregistrement rempli et d’enregistrement aplati.
Version 1.4.0
- Ajouté la prise en charge de Lazarus / Free Pascal : le nouveau package PDFiumLaz fournit les mêmes composants TPdf, TPdfView et associés sous le widget set LCL, étendant la bibliothèque à l’IDE Lazarus et au compilateur Free Pascal aux côtés des packages Delphi et C++Builder existants.
- Ajouté des versions Lazarus des démos afin que les développeurs Lazarus puissent explorer toutes les fonctionnalités via des exemples exécutables.
- Corrigé un problème de compilation Lazarus où les définitions conditionnelles Free Pascal étaient évaluées avec les vérifications de version du compilateur Delphi, ce qui faisait que les builds FPC tentaient de résoudre des noms d’unités spécifiques à Delphi et échouaient.
Version 1.3.1
- Documenté le flux d’aplatissement de formulaire dans le jeu d’aide : GenerateFormAppearances, FlattenPage, FlattenAllPages et les constantes FLAT_* / FLATTEN_* associées sont désormais couvertes dans TPdf, TPdfView, la référence API, la matrice de fonctionnalités et les exemples de programmation.
- Corrigé la table d’architecture dans la page d’aperçu afin qu’elle liste les unités de liaison effectivement livrées dans le dossier Lib.
Version 1.3.0
- Amélioré la prise en charge des caractères européens lors de la création de PDF. TPdf.AddText charge désormais et met en cache la police TrueType système correspondante avant de créer un objet texte, préservant les caractères accentués du tchèque, du français, de l’allemand, de l’espagnol, du portugais, du polonais et du turc que les polices standard intégrées de PDFium ne peuvent pas représenter.
- Les applications qui produisaient auparavant des points d’interrogation ou des glyphes de remplacement pour le texte latin non-ASCII s’affichent désormais correctement sans changement de code. Ajouté la démo EuropeanText pour illustrer la fonctionnalité.
Version 1.2.0
- Ajouté le rafraîchissement d’apparence AcroForm à TPdf : appeler GenerateFormAppearances après modification des valeurs FormField[] met à jour l’apparence des widgets de sorte que les valeurs remplies soient visibles dans les lecteurs PDF standard sans nécessiter de session d’édition interactive.
- Ajouté des assistants d’aplatissement de formulaire à TPdf (FlattenPage / FlattenAllPages) et à TPdfView (FlattenPage pour la page de vue courante). L’aplatissement intègre de manière permanente les valeurs de champ remplies comme contenu de page ordinaire et supprime la couche de formulaire interactif, produisant un document statique qui s’affiche de manière cohérente dans toutes les visionneuses.
- Ajouté Demo\Delphi\FormFill pour démontrer les flux de remplir-et-enregistrer et remplir-et-aplatir avec un PDF AcroForm d’exemple.
Version 1.1.2
- Ajouté la compression de flux PDF au moment de l’enregistrement. La nouvelle propriété TPdf.Compressed (activée par défaut) réécrit les flux de contenu non compressés en tant que flux compressés FlateDecode à l’enregistrement, réduisant significativement la taille des fichiers pour les PDF générés par programme. Les applications qui nécessitent une sortie non compressée brute peuvent définir Compressed à False avant d’appeler SaveAs.
Version 1.1.1
- Les builds de package Win64 n’incluent plus les unités d’enregistrement de conception, évitant les échecs au moment du build lorsque le package Win64 est déployé dans un contexte runtime-only.
- Le chargeur de DLL PDFium recherche désormais d’abord le sous-répertoire d’application Win32 ou Win64, en utilisant les noms standard pdfium.dll et pdfium.v8.dll, et se rabat sur le répertoire plat de l’application et le répertoire système Windows. Ceci correspond à la disposition DLL livrée avec le package de composants, ce qui rend l’installation simple.
Version 1.1.0
- Corrigé un défaut de clipping visuel en mode deux pages de TPdfView : le contenu de page débordait à travers la gouttière parce que les tuiles de page gauche et droite partageaient un seul rectangle de clipping. Chaque tuile clippe désormais indépendamment afin que le contenu reste dans la limite de sa page.
- Amélioré le message d’erreur de la démo Delphi lorsque la DLL PDFium est introuvable, fournissant une invite plus claire avec le nom de DLL attendu et l’emplacement.