PDFium Delphi Component est une bibliothèque de composants complète et de niveau professionnel qui apporte de puissantes capacités de traitement et de visualisation PDF aux applications Delphi et C++Builder. Elle utilise le moteur de rendu PDFium pour le rendu des pages et la lecture des documents, et implémente en Object Pascal tout ce que ce moteur ne fournit pas
Cette distinction a son importance lorsque vous évaluez la bibliothèque. PDFium dessine des pages, extrait du texte et lit les structures existantes. Il ne sait ni signer un document, ni écrire du chiffrement, ni valider une norme PDF, ni produire une révision linéarisée ou incrémentielle. PDFium Delphi Component est livré avec environ 115 000 lignes d'Object Pascal réparties dans 55 unités, dont plus de 62 000 lignes se trouvent dans 36 unités qui n'ont aucun équivalent dans l'API PDFium — cryptographie, signatures, chiffrement, conformité aux normes, sérialisation PDF, échange de données de formulaires, mise en page et façonnage du texte. Le tout est livré sous forme de code source
La bibliothèque se compose de trois composants enregistrés : TPdf pour le traitement et la manipulation des documents avec 475 membres publics, TPdfView pour la présentation visuelle interactive avec 152 membres, et TPdfThumbnailView pour la navigation entre les pages. Que vous souhaitiez créer une simple visionneuse PDF, un flux de travaux de documents signés, un pipeline de conversion d'archivage ou un système complet de gestion documentaire, PDFium Delphi Component fournit les outils et la flexibilité nécessaires
Les capacités suivantes n'ont aucun équivalent dans l'API C de PDFium. Chacune est implémentée par PDFium Delphi Component en Object Pascal, vérifiée par rapport aux clauses publiées ISO, ETSI, IETF ou FIPS, et disponible sous forme de code source
Une signature complète, pas une simple lecture de signature. PDFium peut signaler qu'un dictionnaire de signature existe ; PDFium Delphi Component en crée un
SignPades, SignPadesToStream et SignPadesBytes/Certs, /OCSPs et /CRLs, dictionnaires VRI par signature et marqueur /Extensions /ESIC/SubFilter /ETSI.RFC3161 couvrant l'ensemble du fichier, pour B-LTAICmsSigner que tout autre backend peut implémenterPreparePadesRemoteSignature et CompletePadesRemoteSignature scindent l'opération afin que la clé privée puisse rester dans un service distant ou un module matérielValidatePades indique le niveau de base le plus élevé atteint par le document ainsi que des codes d'incident au niveau des clauses ; ValidatePadesTrust et ValidatePadesTrustAsync ajoutent la vérification de confiance de la chaîne de certificatsSignPadesWithPdfA convertit en PDF/A-4 et signe en un seul appel, conformément à l'annexe A.7 de EN 319 142-1PDFium ouvre les fichiers chiffrés. Il n'écrit pas de chiffrement. PDFium Delphi Component implémente le côté écriture selon ISO 32000-2 et ses spécifications techniques
SaveAsEncrypted avec dérivation de clé V=5 / R=5 / R=6, y compris l'itération de hachage de l'algorithme 2.B, et les entrées de dictionnaire /O /U /OE /UE /Perms/Length et reconstruction de la table de références croisées/AuthCode autonomes ISO/TS 32004 — AuthenticatedData CMS avec dérivation de clé HKDF, enveloppement de clés et vérification HMACSix familles de normes ISO, chacune avec un validateur renvoyant des codes de résultat au niveau des clauses, et un chemin d'enregistrement ou d'injection de marqueurs correspondant
Le moteur n'offre qu'un enregistrement séquentiel du fichier entier. Les applications ont fréquemment besoin de davantage, si bien que PDFium Delphi Component écrit ses propres révisions au-dessus de la sortie sémantique du moteur
SaveAsLinearized produit des fichiers Fast Web View avec groupement de la première page, deux sections de références croisées et tables d'indications de décalages de pages et d'objets partagés de l'annexe FSaveAsObjectStream regroupe les objets éligibles dans /ObjStm avec un ordre local par page et une couverture complète des références croisées de type 2BeginIncrementalSave et CommitIncrementalSave ajoutent uniquement les objets indirects modifiés et nouveaux aux sources chiffrées ou non, en préservant octet par octet la sortie précédente ainsi que /Prev, /Encrypt, /Info et le /ID permanent ; une validation sans modification ne fait pas croître le fichierSaveAsRepaired écrit une copie à révision unique et la revérifie par un chargement strict indépendant avant sa livraisonTPdf.PdfVersion réutilise l'état de l'analyseur PDFium et n'effectue qu'une garde d'en-tête de huit octets au lieu de réanalyser le document sourceTPdfRandomAccessStore conserve les données intermédiaires en mémoire jusqu'à SaveMemoryLimit, puis migre vers un fichier temporaire exclusif supprimé à la fermeture ; le post-traitement de l'enregistrement principal applique la même politique aux trois espaces de travail, tandis que les mises à jour par défaut du catalogue d'open-action et d'étiquettes de page utilisent des fenêtres bornées et un index épars/AF ISO 32000-2 §7.11.4 attachés au catalogue ou à une page cible, avec les huit valeurs de relation du tableau 45IPdfOcrProvider accepte n'importe quel moteur de reconnaissance — le composant fournit les bitmaps de pages et écrit la couche de texte interrogeable résultante, avec statut par page et ignorance du texte existantGetStructuredText construit une hiérarchie page / bloc / ligne / segment stylé à partir de la géométrie des caractères et de la sémantique Tagged PDF ; ExtractTables et ExtractDocumentTables détectent les tableaux à bordures et alignés sur les espaces, préservent les cellules fusionnées, attribuent un score de confiance et produisent du CSV ou du JSONBuildReflowDocument transforme un PDF à mise en page fixe en arbre de nœuds dont la sortie HTML sûre préserve titres, paragraphes, listes, figures, sections de page et étendues de tableauxMeasureText et WrapText assurent la césure par mots sans rien ajouter à la pageTPdfStreamInspector décode des objets de flux arbitraires sous des budgets explicites de source, de brut, de décodé, de ratio d'expansion et de nombre de flux, en retournant un statut structuré plutôt que d'épuiser la mémoire sur un fichier forgéCœur du système de traitement PDF, TPdf gère toutes les opérations au niveau du document, notamment le chargement, l'enregistrement, l'extraction de texte, le traitement des formulaires et la gestion des métadonnées
Un contrôle visuel sophistiqué qui offre une expérience riche de visualisation PDF avec des capacités complètes d'interaction utilisateur
TStream à la demande via LoadCustomDocument, avec des politiques compatible, strict et recovery ainsi que des diagnostics xref structurésSaveAsRepairedSaveAsPdfA / SaveAsPdfAToStream avec profil ICC sRGB intégré et prise en charge des profils personnalisésValidatePdfA et propriété PdfAConformance en lecture seuleMergeFiles (fusion par lot à sources bornées), ImportPagesByIndex (import de sous-ensembles), ImportNPagesToOne (grille N-up), MovePages (réorganisation sur place)CreateXObjectFromPage et InsertFormObjectFromXObjectRenderPageProgressive et IPdfCancellationTokenTPdfProgressiveDocument, avec indications d'étendues d'octets éparses, ordonnancement priorisé des étendues, tentatives bornées, annulation et verrous de disponibilité du document, du formulaire et de la pageSaveAsLinearized, avec groupement de la première page, deux sections de références croisées et tables d'indications de décalages de pages et d'objets partagés de l'annexe FSaveAsObjectStream, avec groupes ObjStm bornés, ordre local par page et couverture xref de type 2 complèteBeginIncrementalSave et CommitIncrementalSave, avec préservation du préfixe chiffré, paramètres de sécurité hérités, validations sans effet, reprise stricte à la réouverture, fichiers annexes durables, remplacement atomique, restauration et statistiques par validationTPdfRandomAccessStore et SaveMemoryLimit, avec débordement sécurisé vers un fichier temporaire, E/S positionnées et diagnostics de pic par enregistrementFitMode choisit comment la page se positionne dans la fenêtre (zoom manuel, taille réelle, ajuster à la page, ajuster à la largeur) ; réappliqué automatiquement lors d'un Resize ou d'un changement de pagePageColor dissocie l'arrière-plan de la page PDF rendue du Color du contrôle environnant pour les visionneuses en mode sombreHighlightSearchText et ClearHighlightPageShadowSize / PageShadowColor) et bordure de page (PageBorderColor)LinkOptions) et événements OnAnnotationLinkClick / OnWebLinkClickAllowUserPageChange, ChangePageOnMouseScrolling, AllowUserTextSelection) pour bornes interactives et intégrations en lecture seuleTPdfThumbnailView| Aspect | Détails |
|---|---|
| Moteur de rendu | Google PDFium - Moteur PDF standard de l'industrie, éprouvé en conditions réelles |
| Prise en charge PDF | Versions PDF 1.0 à 1.7, fichiers chiffrés et protégés par mot de passe |
| Compatibilité plateforme | Applications Windows 32 bits et 64 bits |
| Prise en charge IDE | Delphi XE5 / C++Builder XE5 (RAD Studio XE5) jusqu'à Delphi/C++Builder 13.1 Florence (RAD Studio 13.1), Lazarus 3.8+ |
| Encodage de caractères | Prise en charge Unicode complète, traitement de texte multilingue |
| Gestion mémoire | Optimisée pour les documents volumineux, utilisation efficace des ressources |
| Sécurité des threads | Conception mono-thread (selon les exigences de PDFium) |
PDFium Delphi Component suit un modèle d'architecture en couches qui sépare proprement les responsabilités et maximise la réutilisabilité du code :
| Couche | Fichiers | Responsabilité |
|---|---|---|
| Composants VCL | PDFium.pas, FPdfThumbnail.pas | Composants Delphi VCL (TPdf, TPdfView, TPdfThumbnailView) avec prise en charge à la conception |
| Bindings d'API | FPdfView.pas, FPdfDoc.pas, FPdfText.pas, FPdfEdit.pas, FPdfAnnot.pas, FPdfFormFill.pas, FPdfPageOps.pas, FPdfAttachment.pas, FPdfSignature.pas, FPdfStructTree.pas, FPdfDataAvail.pas, FPdfExtensions.pas, FPdfFWLEvent.pas, FPdfCompress.pas, FPdfUtils.pas | Déclarations de pointeurs de fonction pour les appels DLL PDFium |
| Pipeline PDF/A | FPdfPdfa.pas | Création PDF/A-1b (injection XMP, OutputIntent ICC sRGB, mise à jour du catalogue) et validation (détection de conformité, énumération des problèmes) |
| Infrastructure asynchrone | FPdfAsync.pas | IPdfCancellationToken / IPdfCancellationTokenSource, singleton PdfNoCancellationToken et helper TPdfFuture<T> pour les travaux de rendu et d'export de longue durée |
| Helpers de géométrie | FPdfMatrix.pas | Wrapper OO autour de FS_MATRIX avec helpers Translate, Scale, Rotate, Flip, Skew et Multiply |
| Opérations sur les pages | FPdfPageOps.pas | Wrappers pour FPDF_ImportPagesByIndex, FPDF_ImportPages, FPDF_ImportNPagesToOne et FPDF_MovePages, ordonnancement par lot évolutif adossé aux fichiers, plus helpers Form XObject (CreateXObjectFromPage / InsertFormObjectFromXObject) |
| Panneau latéral de miniatures | FPdfThumbnail.pas | TPdfThumbnailView — panneau défilant de miniatures par page avec survol, sélection et navigation OnPageClick |
| Moteur natif | DLLs\Win32|Win64\pdfium.dll et pdfium.v8.dll | Moteur de rendu natif Google PDFium, avec versions activées V8 en option |
TPdf et 36 projets prêts à l'emploi réduisent le temps de développementPDFium Delphi Component est conçue pour une productivité immédiate. La bibliothèque de composants inclut :
Que vous construisiez une simple visionneuse PDF ou un système complexe de traitement de documents, PDFium Delphi Component fournit la base pour des fonctionnalités PDF professionnelles dans vos applications Delphi et C++Builder