Composants principaux
- TPdf - Composant principal de gestion de documents PDF pour l'ouverture, la navigation, l'extraction de texte et la modification des documents PDF
- TPdfView - Composant visuel pour afficher et interagir avec les pages PDF
- TPdfReadingSession - Composant d'orchestration de lecture à voix haute pour les moteurs TTS hôtes et le suivi des mots de TPdfView
- TPdfThumbnailView - Panneau latéral défilant de miniatures pour la navigation entre pages
- Plateformes LCL natives - Linux Qt6 et macOS Cocoa utilisent PDFium natif, des liaisons LP64 correctes, les services plateforme de polices et fichiers et les dispositions réelles des canaux bitmap ; consultez la configuration native pour les configurations Free Pascal/LCL validées et leurs limites
Opérations sur les documents
- Chargement de documents - Charger des fichiers PDF depuis le disque, des flux mémoire, des tableaux d'octets complets, des fenêtres de tableaux d'octets
Index/Countbase zéro ou des adaptateurs TStream à la demande viaLoadCustomDocument. Les politiques compatible, strict et recovery ajoutent des diagnostics classiques, hybrides et xref-stream bornés sans remplacer l'analyseur sémantique de PDFium- Sortie réparée vérifiée -
SaveAsRepairedcrée une copie complète à révision unique et charge strictement et de manière indépendante sa structure xref et ses pages avant de renvoyer les octets ou de remplacer atomiquement un fichier- Graphe d'objets typé -
ExportObjectGraphémet un JSON typé borné pour les valeurs directes et les valeurs d'objets-stream, tandis queSaveAsObjectGraphPatchedapplique des modifications validées de dictionnaire de premier niveau comme une révision incrémentielle préparée et charge strictement le résultat avant livraison- Protection par mot de passe - Ouvrir des documents PDF protégés par mot de passe et signaler les
UserPermissionseffectifs de la session authentifiée- Création de documents - Construire de nouveaux documents PDF de zéro avec
CreateDocument,AddPage,AddText,AddImage,AddPicture,AddJpegImageetCreatePath- Enregistrement de documents - Sauvegarder les documents modifiés avec diverses options (incrémentiel, suppression de la sécurité) et cibles explicites de version PDF, de PDF 1.0 à PDF 1.7
- Sortie PDF/A-1b -
SaveAsPdfA/SaveAsPdfAToStreampost-traitent l'enregistrement de base avec une mise à jour incrémentielle qui injecte un flux de métadonnées XMP, un OutputIntent ICC sRGB et un catalogue de document mis à jour, de sorte que le résultat soit conforme PDF/A-1b. Les profils ICC personnalisés sont pris en charge viaTPdfASaveOptions.IccProfileData- Validation PDF/A -
ValidatePdfAet la propriété en lecture seulePdfAConformanceanalysent un document ouvert pour les marqueurs XMPpdfaid, OutputIntent avec ICC intégré, présence de chiffrement, et signalent le niveau de conformité (pac1a,pac1b,pac2b,pac3b,pacNoneoupacUnknown) ainsi qu'une liste d'entréesTPdfAValidationIssuedécrivant chaque problème détecté- Validateur de conformité de version PDF - Lorsque SaveAs cible PDF 1.0 à PDF 1.7, le writer rejette toute entrée de dictionnaire, filtre, sous-type d'annotation, type d'action, police, espace colorimétrique ou paramètre de chiffrement introduit après la version cible (par exemple JBIG2Decode, MarkInfo, OutputIntents, AES / AES-256, annotations Polygon / Caret / Watermark / Redact, actions JavaScript / Trans / SetState)
- Compression de flux - La compression FlateDecode automatique garantit que tous les flux PDF sont compressés de manière optimale lors de l'enregistrement ; définissez
Compressed := Falsepour désactiver dans les pipelines de débogage- Fusion par lot évolutive -
MergeFilesimporte des sources adossées à des fichiers avec plages de pages et mots de passe par source, garde au plus un document source ouvert et expose progression, annulation, gestion arrêter ou ignorer, restauration, et politiques de formulaires, de signets, de ressources et de préférences de visionneuse- Import de sous-ensembles de pages -
ImportPagesByIndexcopie un tableau d'index explicite base zéro depuis un document source, avec InsertAt = 0 pour insérer avant la page 1 ou InsertAt = PageCount pour ajouter à la fin. Passez un tableau d'index vide pour importer toutes les pages source- Composition N-up -
ImportNPagesToOnerenvoie un nouveauTPdfdont les pages sont des composites NumX×NumY des pages du document source, dimensionnés en unités utilisateur PDF (1 unité = 1/72 in)- Réordonnancement de pages -
MovePagesréorganise les pages sur place en utilisant un tableau d'index base zéro et un index de destination pour la première page déplacée- Validation de plan de pages -
ValidatePagePlanprévisualise les mappages de suppression, déplacement, insertion, scission et fusion, inventorie les effets sur la navigation, les étiquettes, les formulaires, l'arbre de structure, les fonctionnalités importées et les signatures, et rejette les plans qui laisseraient des cibles pendantes ou modifieraient du contenu signé sans autorisation explicite- Génération de mise en page en deux passes -
GenerateLayoutmesure et pagine le texte habillé, les règles, les images, les XObjects de page, les en-têtes et les pieds de page avant d'émettre atomiquement des objets de page natifs, tandis que des espaces réservés stables{page}et{pages}préservent le nombre de pages mesuré- Mise en page paginée adossée au disque -
GeneratePagedLayoutécrit les commandes dans un stockage positionnable choisi par l'appelant, restaure chaque page depuis des segments compacts non contigus, borne les tableaux de pages retenus avec un cache LRU et ajoute les pages PDFium séquentiellement- Mise en page de tableaux multi-pages -
TPdfLayoutTablerésout une seule fois les colonnes fixes, fractionnaires et dimensionnées par contenu, répète les lignes d'en-tête contiguës, scinde les lignes de corps éligibles, préserve intacts les groupes avec fusion de lignes et émet des légendes, des bordures de cellules, des liens et une hiérarchie sémantique Table / TR / TH / TD continue sur les pages- Nœuds de mise en page en cache - Les plans de mise en page sont mis en cache par identités complètes de contraintes, contenu, police, style, source et mesureur, tandis que
TPdfLayoutCachedNodeconstruit paresseusement les modèles répétés et émet chaque placement depuis un Form XObject natif réutilisable- Mise en page Tagged PDF automatique -
GenerateTaggedLayoutémet des MCIDs natifs, des artifacts, un arbre de structure Document, des mappages ParentTree et IDTree, des titres, des listes, des figures avec texte de remplacement, des en-têtes de tableaux et des annotations de lien avec appartenance OBJR à partir du même plan de mise en page mesuré ; les contraintes d'éléments gardent blocs et titres ensemble, imposent des minima veuves / orphelines et forcent des sauts de page physiques- Édition de contenu marqué -
PageObjectMarks,AddPageObjectMark,SetPageObjectMarkParam,RemovePageObjectMarkParametRemovePageObjectMarkinspectent et modifient les listes de propriétés BDC via des marques natives stables- Texte bidirectionnel et écritures complexes -
AddShapedTextconvertit les segments directionnels, les formes contextuelles, les ligatures, les avances et les décalages en glyphes CID Type 2 positionnés, tandis que des mappages ToUnicode générés etActualTextpréservent la sémantique Unicode logique- Création de polices CID Type 2 -
AddCidType2Textintègre des données TrueType fournies par l'appelant avec des mappages explicites CID vers GID et ToUnicode, un sous-ensemble facultatif sûr, un repli contrôlé sur la police complète et des contrôles d'intégrité d'extraction- Budget d'octets de cache unifié -
TPdf.CacheBudgetBytescoordonne les scènes de pages analysées, les miniatures, les données de structure, les instantanés de texte et les instantanés d'objets de page via un LRU global mesurable unique, tandis queTPdfTileCacheet le cache de polices système peuvent rejoindre un gouverneur choisi par l'appelant- Fournisseur de polices système hôte -
ConfigureSystemFontProviderachemine les demandes natives de polices manquantes vers un fournisseur applicatif avec validation d'octets, cache LRU borné, gouvernance d'octets partagée facultative, repli natif, extraction de tables et statistiques de cycle de vie- Réutilisation de page Form XObject -
CreateXObjectFromPagefabrique un handleTPdfXObjectréutilisable à partir de n'importe quelle page d'un autre document ;InsertFormObjectFromXObjectinsère UNE copie de la page encapsulée dans la page courante. Idéal pour les filigranes, superpositions de modèles et workflows « tamponner une page sur plusieurs ». L'objet de page de destination peut être positionné, mis à l'échelle et tourné viaFPDFPageObj_SetMatrixet les helpersTPdfMatrix- Gestion des pages - Ajouter, supprimer et manipuler des pages individuelles ;
AddPage(0, ...)insère la toute première page et l'active immédiatement- Boîtes de page - Lire et écrire MediaBox, CropBox, BleedBox, TrimBox et ArtBox sur la page courante
- Langue du catalogue - Lire et écrire la langue du document stockée dans l'entrée /Lang du catalogue
- ID de fichier du trailer - Lire les entrées permanentes et variables /ID du trailer sous forme d'octets binaires
- Actions JavaScript du document - Énumérer les noms et scripts des actions JavaScript de niveau document dans l'arbre de noms
- Arbre de structure Tagged PDF - Inspecter les éléments de structure logique, le texte d'accessibilité, la langue, les ID de contenu balisé et la hiérarchie pour les pages PDF balisées
- Préférences de la visionneuse - Lire
PrintCopies,PrintPageRanges,PrintScalingetPrintPaperHandlingdepuis le dictionnaire de préférences de visionneuse du document ; les PDF enregistrés ont par défaut une action d'ouverture première page Fit Height
Opérations sur le texte
- Extraction de texte - Extraire le texte de pages PDF avec une précision au niveau du caractère via les propriétés
Text,TextInRectangle,Characterindexé,CharacterRectangleetCharacterOrigin- Modèle de texte structuré -
GetStructuredTextconstruit une hiérarchie bornée page, bloc, ligne et segment stylé à partir de la géométrie native des caractères, des métadonnées de police, de l'identité des objets texte, de la sémantique Tagged PDF et d'un ordre de repli par disposition physique- Détection et extraction de tableaux -
ExtractTablesetExtractDocumentTablescombinent les boîtes de mots natives avec les filets de tracés transformés pour détecter les tableaux à bordures ou alignés sur les espaces, préserver les cellules fusionnées, attribuer un score de confiance, marquer les continuations de page et produire du CSV ou du JSON- Reflux sémantique et HTML réactif -
BuildReflowDocumentcombine la sémantique Tagged PDF, l'inférence de disposition physique et l'extraction de tableaux en un arbre de nœuds réutilisable borné dont la sortie HTML sûre préserve titres, paragraphes, listes, figures, sections de page et étendues de tableaux- Couche OCR interrogeable -
ApplyOcrSearchLayertransmet des rendus BGRA bornés de haut en bas des pages à un fournisseur applicatif, mappe les quads de confiance via la géométrie native de page et ajoute du texte interrogeable invisible sans réencoder les images numérisées- Unités de lecture par phrase - TPdf.ReadingUnits, TPdf.DocumentReadingUnits, TPdfView.ReadingUnits et BuildReadingUnits exposent des enregistrements TPdfReadingUnit de taille phrase pour une écoute TTS synchronisée
- Sélection de ligne visuelle -
TPdfView.SelectLineAtsélectionne la ligne de texte visuelle contenant une page en base un et un index de caractère en base zéro via le même modèle de limites de ligne que la sélection par triple-clic etShift+HomeouShift+End- Surbrillance de lecture mot à mot -
TPdf.PageWordBoxes,TPdfView.PageWordBoxes,BuildWordBoxes,WordBoxIndexAtCharIndex,TPdfView.SelectWordBox,TPdfView.SelectWordSpan,TPdfView.TrackReadingWordAt,TPdfView.SetReadingWord,TPdfView.ClearReadingWord,ReadingWordColor,ReadingWordFollowAssocie un décalage de caractère de page au TPdfWordBox qui le contient, le met en évidence et renvoie l index du mot; Met en évidence un TPdfWordBox comme mot parlé courant dans TPdfView; Efface la superposition du curseur de lecture mot à mot courant dans TPdfView; Contrôle la couleur de superposition utilisée pour le curseur de lecture mot à mot courant; Contrôle si TPdfView fait défiler le mot parlé courant dans la vue pendant le suivi de lecture- Orchestration de session de lecture à voix haute -
TPdfReadingSession,TPdfSpokenText,SpokenTextAppend,BuildSpokenTextFromWords,SpokenToPageCharetEstimateSpokenWordIndexcoordonnent les moteurs TTS hôtes, les fragments parlés, les rappels de position des mots, l'estimation du rythme, la gestion pause / reprise et les mises à jour du curseur de mots de TPdfView- Recherche de texte - Trouver du texte avec options sensible à la casse, mot entier et recherche consécutive en utilisant
FindFirst,FindNextetFindPrevious, ou parcourir en flux les correspondances avant et arrière sur tout le document avecTPdf.CreateDocumentSearch, rectangles de résultats dans l'espace page, annulation coopérative et mémoire constante de handles de page- Superposition de surbrillance de recherche -
TPdfView.HighlightSearchTextremplace la superposition de correspondances de la page courante, tandis queAddSearchTextHighlightajoute des plages uniques pour des termes supplémentaires afin que plusieurs requêtes puissent rester visibles ensemble.ClearHighlightsupprime l'ensemble complet ; naviguer vers une autre page l'efface automatiquement car les plages de caractères sont spécifiques à la page.HighlightColorvaut par défautclYellowet est publiée pour que les applications puissent thématiser la superposition- Propriétés des caractères - Accéder à la taille de police, au poids, à l'angle et au positionnement de caractères individuels avec les propriétés indexées
CharacterAngle,CharacterFontSize,CharacterFontWeight,CharacterGenerated,CharacterIsHyphenetCharacterMapError- Prise en charge des caractères européens -
AddTextcharge et met en cache automatiquement la police TrueType système correspondante avant de créer un objet texte, de sorte que les caractères accentués tchèques, français, allemands, espagnols, portugais, polonais et turcs que les polices standard intégrées de PDFium ne peuvent pas représenter sont désormais rendus correctement sans changement de code- Ajout de texte - Ajouter de nouveaux textes aux pages PDF avec polices, couleurs, transparence et rotation personnalisées
- Positionnement d'objets texte - Définir les positions par caractère pour des objets texte existants via
SetTextPositionsetTPdfSingleArray- Informations sur les polices - Récupérer les propriétés de police, notamment nom de famille, statut d'incorporation, angle italique, ascent / descent et données brutes de police, par objet de page
Prise en charge des annotations
- Types d'annotations - Prise en charge des annotations texte, lien, surbrillance, soulignement, barré et bien d'autres
- Création d'annotations - Créer de nouvelles annotations par programmation
- Édition d'annotations - Modifier les propriétés des annotations existantes, notamment couleur, transparence et contenu
- Annotations de lien - Gérer les liens internes et externes avec prise en charge des actions
Prise en charge des formulaires
- Accesseurs de remplissage vocal des formulaires - FocusedFormFieldValue, FocusedFormFieldName et FocusedFormFieldDetails sur TPdf et TPdfView exposent la valeur, le nom et TPdfFormFieldInfo du champ logique courant pour le remplissage de formulaire au clavier ou à la voix
- Types de formulaires - Prise en charge des formulaires AcroForm et XFA
- Remplissage de formulaires - Remplissage interactif des formulaires avec prise en charge JavaScript
- Sélection de la DLL V8 - Définir
EnableV8Engineavant le chargement pour utiliserpdfium.v8.dlldu dossierDLLs\Win32ouDLLs\Win64correspondant et interroger la disponibilité des helpers V8/XFA viaV8FeaturesAvailable,XfaBStrHelpersAvailableetGetRecommendedV8Flags- Accès aux champs - Lire et écrire les valeurs des champs de formulaire par index ou position
- Informations sur les champs - Accéder au type de champ, aux drapeaux, au nom et autres propriétés
- Drapeaux de champ - Mettre à jour les drapeaux de champs AcroForm par index ou position via
SetFormFieldFlags/SetFormFieldFlagsAt, notamment les drapeaux lecture seule, requis, mot de passe et multi-sélection- Aplatissement de formulaires -
GenerateFormAppearancesrégénère le flux d'apparence /AP pour chaque widget de formulaire sur chaque page, etFlattenPage/FlattenAllPagesintègrent annotations et champs de formulaire dans le contenu statique des pages (non modifiable)- Sélection de texte de widget de formulaire, presse-papiers et Annuler / Rétablir - Sur le widget AcroForm actif, la vue expose
GetSelectedFormText,CopySelectedFormTextToClipboard,CutSelectedFormTextToClipboard,PasteFormTextFromClipboard,SelectAllFormTextetFormUndo/FormRedo/FormCanUndo/FormCanRedo. L'éditeur gèreCtrl+A,Ctrl+C,Ctrl+Insert,Ctrl+X,Shift+Delete,Ctrl+VetShift+Insert; couper et coller rejettent les champs en lecture seule ou les sessions sans permission de remplissage ou de modification- Transactions d'édition de document et Annuler / Rétablir -
BeginEditTransaction,CommitEditTransactionetRollbackEditTransactionregroupent des modifications arbitraires de pages, d'objets, d'annotations, de pièces jointes et de métadonnées, tandis queUndoEdit,RedoEditet des journaux d'édition portables utilisent des deltas bidirectionnels bornés vérifiés par SHA-256- Récupération après plantage et sauvegarde automatique pilotée par les validations - des paquets de récupération avec sommes de contrôle lient les empreintes source et récupérée à un journal d'édition borné, tandis que la sauvegarde automatique atomique actualise un fichier annexe explicite après validation, annulation ou rétablissement sans réécrire le PDF source
Opérations sur les images
- Extraction d'images - Extraire des bitmaps de pages PDF avec la propriété indexée
Bitmap; itérerBitmapCountpour enregistrer chaque image sur le disque- Insertion JPEG -
AddJpegImageprend un TStream d'octets JPEG bruts et intègre l'image en tant que XObject /DCTDecode sans réencodage- Prise en charge des images -
AddPictureaccepte un objetTPictureavec conversion automatique de format via les classes graphiques VCL/LCL enregistrées- Insertion directe d'image -
AddImage(FileName)reconnaît tout format enregistré avec les unités graphiques VCL ou LCL (BMP, PNG via PngImage, JPG, ...) et partage le pipeline AddPicture.AddImage(TBitmap)évite l'intermédiaire TPicture, ce qui simplifie l'appel pour ceux qui disposent déjà d'un TBitmap issu d'un rendu ou de la génération par lot- Profil ICC d'image - Les objets de page image exposent leurs données de profil ICC intégré lorsqu'elles sont présentes (binding pour
FPDFImageObj_GetIccProfileDataDecoded)- Génération de miniatures - Générer des bitmaps de miniature de la page courante via la propriété
Thumbnailou rendre n'importe quelle page en base un viaTPdf.RenderPageThumbnailsans modifierPageNumber, avec un LRU sensible aux révisions borné par des plafonds d'entrées et d'octets de pixels- Cache de scènes de pages analysées -
TPdf.RenderPageByIndex,RenderPageThumbnailetExtractThumbnailréutilisent des scènes de pages PDFium bornées en cache LRU tandis que les modifications de pages, les changements d'arbre de pages, l'état des formulaires et la fermeture du document invalident les entrées périmées
Unités d'aide
- Infrastructure asynchrone -
FPdfAsynccombine l'annulation coopérative structurée avec des callbacks amovibles et des sources d'échéance, une répartition configurable des résultatsTPdfFuture<T>et unTPdfAsyncExecutorréutilisable avec workers fixes, quatre files de priorité FIFO, contre-pression de file bornée, handles par tâche, diagnostics de temporisation, statistiques agrégées et arrêt gracieux- Adaptateur de flux -
TPdfStreamAdapterfait le pont entre unTStreamPascal et les callbacksFPDF_FILEACCESSde PDFium afin queLoadCustomDocumentlise les blocs à la demande au lieu de mettre en tampon l'intégralité du PDF en mémoire- Sessions de téléchargement progressif -
TPdfProgressiveDocumentmaintient actif le fournisseur natif de disponibilité de PDFium, alimente les indications de document, de formulaire et de page dansTPdfRangeRequestScheduler, fusionne les plages manquantes, préempte les transferts d'arrière-plan pour les octets critiques de la page, borne la taille des demandes et les tentatives, annule les transports redondants et ouvre une page linéarisée avant l'arrivée du PDF complet- Inspection bornée des flux -
TPdfStreamInspectorinventorie les objets de flux physiques, expose des fenêtres brutes sûres et un décodage ordonné des filtres généraux, signale les chemins d'accès natifs aux images et pièces jointes et applique des budgets de source, de sortie, de dictionnaire, de nombre et de ratio d'expansion- Normalisation des flux de contenu -
TPdf.SaveAsNormalizedContenttokenise le contenu logique des pages, supprime les commentaires, valide l'état et l'équilibre des conteneurs, préserve les opérateurs non pris en charge et les données d'images en ligne et fusionne les tableaux/Contentssûrs- Sortie Fast Web View -
TPdf.SaveAsLinearizedécrit les objets de la première page avant les pages suivantes, émet deux sections de références croisées et construit les tables d'indications de décalages de pages et d'objets partagés afin qu'un client HTTP Range puisse ouvrir la page demandée sans télécharger le fichier complet- Sortie en objets-stream -
TPdf.SaveAsObjectStreamregroupe les valeurs éligibles dans des groupes ObjStm bornés PDF 1.5+, garde directs les objets critiques à l'ouverture et écrit des entrées xref de type 2 adaptatives pour des fichiers plus petits sans sacrifier l'accès aléatoire- Enregistrement incrémentiel d'objets modifiés -
TPdf.BeginIncrementalSaveetCommitIncrementalSavecomparent des instantanés sémantiques stables, préservent chaque octet précédent chiffré ou non, héritent des paramètres de sécurité R5, R6 ou R7, n'ajoutent que les objets modifiés, rouvrent strictement chaque résultat et utilisent un fichier annexe durable plus un remplacement atomique pour les validations de fichiers- Contrôle du contenu facultatif -
TPdf.InspectOptionalContentinventorie couches, configurations, métadonnées d'usage, groupes radio, ordre, verrous, politiques OCMD et expressions de visibilité, tandis queSaveAsOptionalContentConfiguredécrit des états de couches déterministes que PDFium applique via son contexte de rendu natif- Stockage de travail borné -
TPdfRandomAccessStoreconserve les petites données en mémoire, déborde une seule fois vers un fichier temporaire privé supprimé à la fermeture à un plafond choisi par l'appelant et fournit des lectures positionnées sans modifier le curseur partagé ;TPdf.SaveMemoryLimitapplique la même politique au post-traitement de l'enregistrement principal, tandis que les mises à jour par défaut du catalogue d'open-action et d'étiquettes de page utilisent des fenêtres de taille fixe et un index d'objets épars paresseux- Interrogation native de version -
TPdf.PdfVersionréutilise l'état de l'analyseurFPDF_GetFileVersionpour la sémantique d'en-tête et de catalogue, avec une seule garde d'en-tête de huit octets pour rejeter les rétrogradations de catalogue mal formées- Boîte à outils de géométrie matricielle -
FPdfMatrixencapsule leFS_MATRIXde PDFium avec composition avant et arrière, transformations conscientes du pivot, ajustement de rectangles stretch / contain / cover, diagnostics d'inversibilité selon l'échelle, décomposition, helpers d'inversion sans mutation, mappage de vecteurs et de quadrilatères, lots de points ou de rectangles en une allocation, variantes sur place et bornes transformées en une passe- Rendu progressif annulable -
TPdf.RenderPageProgressivepilote la boucleFPDF_RenderPageBitmap_Start+RenderPage_Continuede PDFium et interroge unIPdfCancellationTokenentre les itérations via le callbackIFSDK_PAUSE, de sorte que de longs rendus haute résolution puissent être interrompus à mi-page au lieu de bloquer jusqu'à la fin. Renvoie unTPdfProgressiveStatusde typeprsDone,prsCancelledouprsFailed- Chemin de rendu sans copie -
RenderPage/RenderTile/RenderPageProgressiveécrivent la sortie PDFium directement dans le tampon DIB duTBitmapde destination au lieu de transiter par un tampon interne, économisant une copie mémoire de largeur × hauteur × 4 octets par rendu - le plus perceptible à haute résolution (panneaux de miniatures, export de qualité d'impression, export par lot). Un chemin de repli par ligne de balayage est conservé lorsque le DIB de destination ne peut pas être encapsulé en toute sécurité- Transformations bitmap basse vision - InvertPdfBitmap, GrayscalePdfBitmap et DuotonePdfBitmap transforment sur place les pixels TBitmap 32 bits rendus pour des vues inversées, grises ou bicolores basse vision
- Affichage basse vision en direct -
TPdfView.Optionsprend en chargereInvertetreNightDuotone, avecNightDuotoneInketNightDuotonePaperqui contrôlent la palette nocturne active avant le dessin des superpositions
Opérations de dessin
- Tracé de chemins - Créer des chemins avec des lignes, courbes de Bézier et formes fermées
- Suppression d'objets - Supprimer des objets de page et régénérer le contenu de la page depuis TPdf ou TPdfView
- Remplissage et contour - Configurer mode de remplissage, couleurs, transparence et propriétés de contour
- Modes de fusion - Prise en charge des divers modes de fusion PDF
- Styles de ligne - Configurer line cap, line join et largeur du contour
Signatures numériques
- Détection de signatures - Détecter et énumérer les signatures numériques dans les documents PDF
- Informations sur la signature - Accéder au contenu de la signature, à la plage d'octets, au sous-filtre, à la raison et à l'horodatage
- Permissions MDP - Interroger les permissions de détection et de prévention des modifications du document
- Analyse des révisions post-signature -
AnalyzeSignatureRevisionsclasse les modifications incrémentielles des octets d'origine par rapport à DocMDP et FieldMDP, identifie les mises à jour de matériel de validation et signale les définitions fantômes ou les objets compressés non résolus sans réenregistrer le document- Profils de courbes elliptiques PDF 2.0 - la validation PAdES identifie les signatures NIST, Brainpool, Ed25519 et Ed448, vérifie la congruence courbe-digest et les paramètres AlgorithmIdentifier, et signale la cryptographie native non prise en charge indépendamment des combinaisons invalides
Prise en charge des pièces jointes
- Accès aux pièces jointes - Lire, créer, modifier et supprimer des fichiers attachés intégrés
- Extraction par lot bornée -
ReadAttachmentMetadatainventorie les pièces jointes une seule fois etExtractAttachmentsToStreamsécrit une charge utile décodée à la fois sous des contrôles par fichier, agrégés, par bloc et d'annulation- Noms de pièces jointes - Accéder aux noms de fichiers des pièces jointes
- Types de pièces jointes - Lire les valeurs de sous-type MIME des fichiers intégrés lorsqu'elles sont présentes
- Signets - Naviguer dans les signets du document avec prise en charge hiérarchique via le tableau
Bookmarks,BookmarkChildren,HasBookmarkChildrenet les helpers de parcoursBookmarkFrom- Destinations nommées - Accéder aux destinations nommées par index ou nom via
Destination,DestinationByNameetDestinationCount- Étiquettes de page - Récupérer les étiquettes de chaque page via
PageLabel; utile lorsque les documents utilisent des chiffres romains pour les pages liminaires- Liens Web - Détecter et naviguer dans les liens Web sur les pages avec
WebLink,WebLinkCountetTPdfView.WebLinkAtPos- Annotations de lien - Accéder aux annotations de lien avec informations d'action et de destination via
LinkAnnotation,LinkAnnotationCountetTPdfView.LinkAnnotationAtPos- Gestion sécurisée des clics sur les liens - TPdfView déclenche les événements
OnAnnotationLinkClick/OnWebLinkClickavant le traitement automatique goto / URI, avec les actions launch désactivées par défaut. 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 une nouvelle ancre MouseDown afin que les gestes de panoramique passent par le chemin de défilement existant sans changement
Rendu
- Rendu de haute qualité - Rendre les pages vers un contexte de périphérique, un bitmap ou une tuile via
RenderPage/RenderTile, avec écritures directes sans copie dans le tampon DIB de destination- Rendu progressif annulable -
RenderPageProgressivepilote la boucle progressive de PDFium et interroge unIPdfCancellationTokenentre les itérations, renvoyantprsDone,prsCancelledouprsFailed. Le bitmap conserve le travail partiel effectué jusque-là en cas d'annulation- Rendu parallèle des pages -
RenderPagesParallelcapture le document courant une seule fois, donne à chaque worker un module PDFium et un document chargés indépendamment, préserve l'ordre des demandes et borne la mémoire de sortie retenue par page et agrégée- Censure sécurisée du contenu -
SaveAsRedactedapplique les rectangles/Redactà un instantané isolé, supprime prudemment les objets de page de premier niveau intersectants et les annotations qui se chevauchent, peint des remplacements opaques, supprime les pièces jointes intégrées et écrit un résultat assaini à révision unique sans modifier le document chargé- Options de rendu - Optimisation de texte LCD (
reLcd), annotations (reAnnotations), niveaux de gris et drapeaux de mode d'impression- Hooks Skia - Les bindings bas niveau
FPDF_RenderPageSkiaetFPDF_FFLDrawSkiasont disponibles lorsque les appelants fournissent un SkCanvas externe (dépend des exports DLL fournis)- Sélection du mode d'impression - Définir les modes d'impression PDFium EMF, texte seul, PostScript, pass-through, masque d'image et Type 42 via
SetPdfPrintModeavecTPdfPrintMode- Superposition asynchrone - TPdfView peut afficher une superposition de chargement facultative pendant que les workers détenus par l'application effectuent le rendu avec des instances TPdf séparées
- Rotation de page - Prise en charge des rotations de 0, 90, 180 et 270 degrés (
ro0,ro90,ro180,ro270)- Détection de transparence - La propriété
Transparentindique si un objet de la page courante présente de la transparence, y compris les modes de fusion et l'alpha partiel
Visualisation (TPdfView)
- Modes d'affichage -
dmSingleContinuous,dmTwoPageContinuousetdmTwoPageContinuousWithCover(la page de couverture est seule, puis le défilement continue avec des doubles pages). Le helper de niveau unitéComputeSpreadPagesexpose le calcul des doubles pages sans instancier de visionneuse- Mode d'ajustement -
FitModechoisit comment la page se positionne dans la fenêtre :pfmNone(zoom manuel),pfmActualSize(100 %),pfmFitPage(la page entière tient dans la fenêtre),pfmFitWidth(la largeur de la page correspond à la largeur de la fenêtre) etpfmFitHeight(la hauteur de la page correspond à la hauteur de la fenêtre). Le mode d'ajustement actif est réappliqué automatiquement lors d'un Resize et lorsque la page courante change ; définir Zoom directement annule le mode d'ajustement actif (FitMode revient àpfmNone), conformément à la convention standard des visionneuses PDF- Contrôle du zoom - Zoom variable avec les helpers par page
PageZoom,PageWidthZoom,PageHeightZoometActualSizeZoom- Couleur de page -
PageColordissocie l'arrière-plan de la page PDF rendue duColordu contrôle environnant. La valeur par défaut estclWhite, de sorte que les pages PDF se rendent désormais en blanc papier quel que soit le thème de l'application hôte. Les visionneuses en mode sombre peuvent conserver la zone de défilement sombre tout en laissant la page PDF effective blanche (ou de toute couleur choisie par l'application)- Sélection de texte interactive - Sélection de texte par glissement utilisateur sur les pages PDF, avec basculement automatique de hit-test entre sélection et panoramique : cliquer sur un caractère démarre une sélection par glissement, cliquer sur un espace vide effectue un panoramique. Double-clic sélectionne le mot, triple-clic sélectionne la ligne,
Ctrl+Asélectionne la page (les deux pages en mode double page),Ctrl+Ccopie commeCF_UNICODETEXT,Shift+arrowsétend la sélection, le survol sur du texte fait passer le curseur àcrIBeamet glisser jusqu'au bord de la visionneuse fait défiler automatiquement la page. Nouvelles propriétés publiéesSelectionColoretOnSelectionChange; nouvelles propriétés publiquesHasSelection,SelectedText,SelectionCharCount,ClearSelection,SelectAll,CopySelectionToClipboard. Les modes d'affichage double page sélectionnent à travers les deux pages visibles avec jonction CR/LF. Un menu contextuel Copier par défaut est attaché automatiquement par clic droit lorsque l'hôte n'a pas affecté son proprePopupMenu. Verrouillé par le drapeauAllowUserTextSelectionde v1.17.0 pour les hôtes de bornes interactives- Mappage des coordonnées - Convertir entre les coordonnées de périphérique de la visionneuse et les coordonnées de page PDF avec
DeviceToPage/PageToDevice, y compris des surcharges qui prennent unTRectet renvoient unTPdfRectangle- Sélection de texte et hit-test - Résoudre les caractères sous les points de la visionneuse avec
CharacterIndexAtPoset peindre les surbrillances de sélection de texte viaPaintSelection- Souris et clavier - Prise en charge complète des périphériques d'entrée avec défilement par glissement de souris, raccourcis PgUp / PgDn / Ctrl+Home / Ctrl+End et navigation par molette vers le haut / vers le bas. Ctrl+molette est réservé au zoom applicatif et ignoré par le gestionnaire de navigation
- Verrouillage des entrées utilisateur -
AllowUserPageChangecontrôle les raccourcis clavier de page,ChangePageOnMouseScrollingcontrôle les sauts de page à la molette, etAllowUserTextSelectioncontrôle l'entrée de sélection de texte à la souris / clavier. Les trois ont pour valeur par défaut True ; passez-les à False pour verrouiller bornes interactives, panneaux de prévisualisation ou intégrations en lecture seule sans sous-classement- Superposition de rendu asynchrone -
AsyncRendering,LoadingTextetLoadingColordessinent un petit indicateur « Loading... » par-dessus la page rendue, afin que les applications utilisant leur propre worker pour de longs rendus partagent une affordance visuelle cohérente. Les valeurs par défaut préservent le comportement existant.TPdfsérialise désormais les appels de rendu et de déchargement de page par instance ; les applications restent responsables de la répartition des workers et doivent éviter de muter un document pendant qu'un rendu est en cours- Gestion sécurisée des clics sur les liens -
LinkOptionsest un ensemble publié qui contrôle le comportement automatique pour les quatre types d'actions de lien PDF :loAutoGoto(saut de page),loAutoOpenURI(ShellExecute),loAutoLaunch(ShellExecute) etloAutoEmbeddedGoto(réservé). Les valeurs par défaut activent uniquementloAutoGotoetloAutoOpenURI;loAutoLaunchetloAutoEmbeddedGotorestent désactivés afin qu'un clic intempestif ne puisse pas lancer un programme arbitraire.OnAnnotationLinkClicketOnWebLinkClickse déclenchent avant toute action automatique et permettent à l'application de marquer l'événement Handled ou de le rediriger- Interaction avec les formulaires - Édition interactive de formulaires dans la visionneuse, plus les helpers de sélection / Annuler / Rétablir de la v1.23.0
- Stylisation visuelle -
PageShadowSize,PageShadowColoretPageBorderColorpeignent une ombre portée facultative sous le rectangle de la page et une bordure d'un pixel autour de celle-ci ;SmoothScrollanime désormais les commandes de barre de défilement ligne/page par segments pilotés par minuterie, tandis que le suivi du curseur reste immédiat- Navigation par miniatures -
TPdfThumbnailView(unitéFPdfThumbnail) rend une miniature de page par ligne dans un panneau latéral défilant avec surbrillance de survol et de sélection, plus une navigation par clic. Conçu pour se placer à côté d'un TPdfView. Propriétés :CurrentPageIndex,ThumbnailWidth,ThumbnailHeight,TextColor,HoverColor,SelectionColor,BorderColor; événement :OnPageClick
Compression
- Compression automatique - Lorsque la propriété
Compressedest True (valeur par défaut), tous les flux PDF sont garantis compressés FlateDecode lors de l'enregistrement- Post-traitement - Le moteur de compression analyse les données PDF enregistrées et compresse tout flux non compressé en utilisant la compression maximale zlib
- Reconstruction de référence croisée - Reconstruit automatiquement la table xref lorsque la compression des flux modifie les décalages d'octets
- Surcoût nul - Si tous les flux sont déjà compressés, les données passent sans modification
Sécurité
- Prise en charge des mots de passe - Ouvrir des documents PDF protégés par mot de passe
- Permissions - Lire les permissions de document et utilisateur ; la démo
SecurityAuditcombine permissions, pièces jointes, JavaScript de document, liens URI / Launch, signatures, XFA et disponibilité V8 en une surface de risque en lecture seule avec actions d'enregistrement de rapport TXT / JSON et de copie TXT- Boîte à outils DER bornée -
FPdfAsn1encode les numéros de balises bas et hauts, les valeurs typées, les collections SET OF triées et les formes canoniques de temps ou de chaîne ; ses lecteurs à fenêtres sans copie, décodeurs typés et validateur à ressources limitées prennent en charge les flux CMS, PAdES, certificats et horodatages- Validation à long terme spécifique aux signatures -
TPadesDssOptions.Vrisécrit des dictionnaires VRI indirects indexés par hachage tandis que les flux partagés de certificats, OCSP et CRL sont dédupliqués par hachage de contenu et que la signature PAdES B-LT ou B-LTA crée automatiquement le VRI de la nouvelle signature- Signature à distance et interrompue -
PreparePadesRemoteSignaturepersiste le digest SHA-256 du document, le ByteRange exact, les coordonnées de l'espace réservé et l'empreinte du PDF préparé pour la signature HSM ou cloud, tandis queCompletePadesRemoteSignaturerejette les sessions modifiées, réutilisées, surdimensionnées ou à digest non concordant avant d'écrire la sortie- Analyse de politique de révisions de signatures -
AnalyzeSignatureRevisionsreconstruit les chaînes de révisions classiques, hybrides et xref-stream, applique DocMDP et FieldMDP par signature et échoue de manière fermée sur les modifications mal formées, fantômes, compressées ou hors budget- Profils de signature résistants à l'ambiguïté - la validation PAdES compte les clés requises uniquement au niveau du dictionnaire de signature supérieur, rejette les doublons et les profils Sig ou DocTimeStamp incohérents, et exige que ByteRange exclue exactement le jeton Contents hexadécimal direct
- Export de preuves multi-signatures -
BuildPadesEvidenceReportcroise les faits PDFium, la politique CMS, l'état de confiance et d'horodatage, les hachages de chemins de certificats, la couverture DSS/VRI et les décisions de révisions avec une sortie JSON et CSV bornée- Renouvellement d'horodatage d'archivage -
RenewPadesArchiveTimestampajoute un Document Time-stamp RFC 3161 par-dessus l'historique de signatures existant exact, actualise d'abord facultativement le DSS complet et valide la chaîne B-LTA résultante avant la sortie- Validation de confiance asynchrone -
ValidatePadesTrustetValidatePadesTrustAsyncvérifient les signatures détachées des octets d'origine, les chaînes du signataire et de la TSA, les preuves de révocation en ligne facultatives et les jetons d'horodatage RFC 3161 avec progression par étapes, récupération bornée et annulation coopérative- Confiance qualifiée -
TPdfEuropeanTrustedListn'analyse que les listes de confiance ETSI authentifiées par l'appelant, réauthentique le XML en cache, accepte des sources de mise à jour détenues par l'appelant et fournit l'évaluation hors ligne des services qualifiés viaQualifiedTrustEvaluator- Suppression de la sécurité - Enregistrer des documents avec la sécurité supprimée (lorsque autorisé)
Impression
- Modes d'impression - Choisir entre les modes d'impression EMF, texte seul, PostScript Level 2 / 3, PostScript pass-through, EMF masque d'image et Type 42 via la fonction globale
SetPdfPrintMode- Préférences de visionneuse - Faire émerger l'intention de l'auteur du document via
PrintCopies,PrintPageRanges(plages de pages base un),PrintScalingetPrintPaperHandling;SetPdfPrintPaperHandlingDevModemappe l'indication recto-verso versDEVMODE.dmDuplexde Windows- Impression N-up - Les démos
PrintPreferencesDelphi, C++Builder et Lazarus montrent la composition de feuilles N-up (1 / 2 / 4 / 9 pages par feuille) avec filtrage pages paires / impaires, rendu en niveaux de gris, bordures de cellules de 1 pixel facultatives, préférences d'impression de l'auteur PDF et mappage de l'intention recto-verso viaSetPdfPrintPaperHandlingDevMode
Démos fournies
Les arborescences
Demo\Delphi,Demo\CBuilderetDemo\Lazarusfournissent des projets d'exemple exécutables qui exercent la surface d'API en direct dans les trois familles d'IDE. Points forts :
- PDFViewer / MultiPageViewer / SplitView - Utilisation TPdfView de bout en bout : chargement, navigation, zoom, rotation, double page, dispositions tenant compte de la couverture, et comparaison côte à côte de PDF Delphi / C++Builder / Lazarus avec commandes synchronisées ; les démos de visionneuse constituent également des tests de vitesse pratiques pour les PDF multi-gigaoctets, où des documents de 2,x Go peuvent atteindre un premier rendu utilisable presque immédiatement tandis que le rendu des pages reste réactif
- ViewerInteractionLab - Exemples Delphi, C++Builder et Lazarus axés sur l'interaction TPdfView pour les modes d'affichage, modes d'ajustement, couleurs de page, rotation, surbrillance de recherche, sélection de texte, prévisualisation du texte sélectionné, actions presse-papiers et retour de coordonnées DeviceToPage
- SearchAndSelect - Exemples de workflow Delphi, Lazarus et C++Builder axés sur la liste des résultats de recherche multi-pages, la navigation précédent / suivant, le saut aux résultats par double-clic,
HighlightSearchText, recherche sensible à la casse / mot entier,AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelectionet modes d'affichage double page- PreflightReport - Des objets
FPdfPreflightReportréutilisables collectent les résultats PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R et PDF/VT avec statut, sévérité Info / Warning / Error, recherche, filtrage, agrégation déterministe, empreintes SHA-256 stables, sorties TXT / HTML / Markdown / JSON / CSV et formats d'automatisation SARIF 2.1.0 / JUnit XML / NDJSON / XML ; les démos Delphi, Lazarus et C++Builder plus des flux console fournissent des prévisualisations, un routage par lots, des synthèses, des pièces jointes de rapport et un blocage par code de sortie CI- ContentExtractionLab - Workflow unifié d'inventaire de contenu Delphi, Lazarus et C++Builder pour métadonnées du document, texte de page, objets de page, images, pièces jointes, liens, annotations, signets et métriques de police / caractère avec export TXT / JSON, sélection toutes / aucune catégorie, enregistrement du PDF source et actions de copie de rapport
- WatermarkStamp - Workflow Form XObject réutilisable Delphi, Lazarus et C++Builder pour filigranes centrés, tampons d'angle et étiquettes de numéro de page sur un PDF cible multi-pages
- CreatePDF - Construire un PDF multi-pages à partir de zéro avec texte, images, chemins, tableaux et composition de filigrane ; inclut une option « Texte européen » pour écrire du texte accentué tchèque / français / allemand / espagnol / portugais / polonais / turc afin de vérifier la sélection des polices et la gestion Unicode
- ExtractText / ExtractImages / ContentExtractionLab - Enregistrer le texte extrait (y compris une sortie séparée par page) ou les images intégrées sur disque, ou générer un rapport d'inventaire de contenu multi-catégorie en une passe
- FormFill - Lire les métadonnées des champs AcroForm, écrire les valeurs, régénérer les apparences /AP et enregistrer le résultat éditable ou aplati
- FontProperties - Inspecter les métadonnées de caractère / police indexées à travers TPdf et TPdfView dans Delphi, C++Builder et Lazarus
- MergePDF / SplitPDF - Combiner plusieurs PDF sources (avec sélection de plage de pages par fichier, chemin de sortie optionnel, journal d'exécution, bouton d'annulation et récapitulatif de fusion) ou diviser un PDF en fichiers de sortie par page
- PDFtoJpg / BatchExport - Conversion PDF vers JPG Delphi, C++Builder et Lazarus en une fois ou par lots multi-fichiers avec progression globale par fichier, progression courante par page, entrées DPI / qualité / mot de passe, et un lot annulable de manière coopérative soutenu par
IPdfCancellationToken- StandardsLab - Exemples de workflow Delphi, C++Builder et Lazarus pour validation PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R et PDF/VT, rapport de problèmes et sorties d'enregistrement orientées normes
- PrintPDF / PrintPreferences - Impression PDF standard Delphi, C++Builder et Lazarus avec prévisualisation, plages de pages, copies, assemblage, progression et annulation (PrintPDF), plus composition de feuilles N-up Delphi, C++Builder et Lazarus avec filtrage paires / impaires et préférences d'impression de l'auteur PDF (PrintPreferences)
- SecurityAudit - Exemples de surface de risque en lecture seule Delphi, C++Builder et Lazarus pour permissions, pièces jointes, actions JavaScript, liens URI / Launch, liens Web, signatures, état XFA, disponibilité des helpers V8 / XFA, et rapports d'audit TXT / JSON
- Attachment - Créer des PDF, ajouter / lister / extraire / supprimer / enregistrer des pièces jointes intégrées avec affichage de sous-type MIME
- ImageToPDF - Conversion par lot d'images en un PDF, une image par page, avec prévisualisation et progression par image (Delphi, C++Builder et Lazarus)
Les suites de régression Delphi, C++Builder et Lazarus couvrent 147 (Pas) / 123 (C++) cas partageant les mêmes PDF de fixture, de sorte que le comportement reste aligné au niveau octet dans les trois familles d'IDE
Plateformes prises en charge
- Delphi - Delphi XE5 (RAD Studio XE5) jusqu'à Delphi 13.1 Florence (RAD Studio 13.1)
- C++Builder - C++Builder XE5 (RAD Studio XE5) jusqu'à C++Builder 13.1 Florence
- Lazarus - Prise en charge Free Pascal / Lazarus
- Win32 / Win64 - Plateformes Windows 32 bits et 64 bits
La comparaison alignée détecte les pages ajoutées, supprimées et déplacées, avec différences Unicode bornées et plusieurs régions visuelles ; les superpositions rendent ces changements exportables
La fusion transactionnelle de navigation conserve hiérarchie des signets, styles, actions URI et destinations réassociées lors de l’importation de pages sélectionnées ou réordonnées
L’OCR Tesseract facultatif ajoute du texte recherchable aux pages numérisées, avec diagnostics explicites des dépendances, annulation et budgets de ressources
La fusion transactionnelle AcroForm de pages sélectionnées accepte des politiques de noms explicites et l’isolation des ressources ; le fournisseur facultatif de codes-barres génère Code128, QR, DataMatrix et PDF417 et reconnaît les images en niveaux de gris