PDFium Delphi Component ist eine umfassende Komponentenbibliothek im professionellen Umfang, die leistungsstarke Funktionen für PDF-Verarbeitung und -Anzeige in Delphi- und C++Builder-Anwendungen bereitstellt. Sie nutzt die PDFium-Rendering-Engine für das Seiten-Rendering und das Lesen von Dokumenten und implementiert in Object Pascal alles, was diese Engine nicht bietet
Dieser Unterschied ist entscheidend, wenn Sie die Bibliothek bewerten. PDFium zeichnet Seiten, extrahiert Text und liest vorhandene Strukturen. Es kann kein Dokument signieren, keine Verschlüsselung schreiben, keinen PDF-Standard validieren und keine linearisierte oder inkrementelle Revision erzeugen. PDFium Delphi Component umfasst rund 115.000 Zeilen Object Pascal in 55 Units, davon liegen mehr als 62.000 Zeilen in 36 Units, die im PDFium-API keinerlei Entsprechung besitzen – Kryptografie, Signaturen, Verschlüsselung, Normkonformität, PDF-Serialisierung, Formulardatenaustausch, Layout und Textshaping. Alles wird als Quellcode ausgeliefert
Die Bibliothek besteht aus drei registrierten Komponenten: TPdf für Dokumentverarbeitung und -manipulation mit 475 öffentlichen Membern, TPdfView für die interaktive visuelle Darstellung mit 152 und TPdfThumbnailView für die Seitennavigation. Ob Sie einen einfachen PDF-Viewer, einen Workflow für signierte Dokumente, eine Archivierungs- und Konvertierungspipeline oder ein vollständiges Dokumentenmanagementsystem entwickeln möchten – PDFium Delphi Component bietet die Werkzeuge und die Flexibilität, die Sie benötigen
Die folgenden Fähigkeiten haben keine Entsprechung in der PDFium-C-API. Jede davon wird von PDFium Delphi Component in Object Pascal implementiert, gegen die veröffentlichten ISO-, ETSI-, IETF- oder FIPS-Klauseln verifiziert und als Quellcode geliefert
Vollständiges Signieren statt nur Lesen von Signaturen. PDFium kann melden, dass ein Signature-Dictionary existiert; PDFium Delphi Component erstellt eines
SignPades, SignPadesToStream und SignPadesBytes/Certs, /OCSPs und /CRLs, VRI-Dictionarys pro Signatur sowie dem /Extensions /ESIC-Marker/SubFilter /ETSI.RFC3161, die die gesamte Datei abdecken – für B-LTAICmsSigner-Schnittstelle, die jedes andere Backend implementieren kannPreparePadesRemoteSignature und CompletePadesRemoteSignature teilen den Vorgang, sodass der private Schlüssel in einem Remote-Dienst oder Hardwaremodul bleiben kannValidatePades meldet die höchste erreichte Baseline-Stufe zusätzlich zu Problemmeldungen auf Klausel-Ebene; ValidatePadesTrust und ValidatePadesTrustAsync ergänzen die Prüfung der Zertifikatsketten-VertrauenswürdigkeitSignPadesWithPdfA konvertiert zu PDF/A-4 und signiert in einem einzigen Aufruf, gemäß EN 319 142-1 Anhang A.7PDFium öffnet verschlüsselte Dateien. Verschlüsselung schreibt es nicht. PDFium Delphi Component implementiert die schreibende Seite gemäß ISO 32000-2 und den zugehörigen technischen Spezifikationen
SaveAsEncrypted mit V=5 / R=5 / R=6-Schlüsselableitung, einschließlich des Hash-Iterationslaufs nach Algorithmus 2.B, und den Dictionary-Einträgen /O /U /OE /UE /Perms/Length-Korrektur und einer neu aufgebauten Cross-Reference-Tabelle/AuthCode-Tokens nach ISO/TS 32004 – CMS AuthenticatedData mit HKDF-Schlüsselableitung, Key Wrapping und HMAC-VerifikationSechs ISO-Normfamilien, jeweils mit einem Validator, der Ergebniscodes auf Klausel-Ebene zurückgibt, und einem passenden Speicher- bzw. Marker-Injektionspfad
Die Engine bietet genau ein sequentielles Speichern der Gesamtdatei. Anwendungen benötigen häufig mehr, deshalb schreibt PDFium Delphi Component eigene Revisionen auf die semantische Ausgabe der Engine
SaveAsLinearized erzeugt Fast-Web-View-Dateien mit First-Page-Gruppierung, zwei Cross-Reference-Abschnitten sowie Hint-Tables für Seiten-Offsets und Shared Objects gemäß Anhang FSaveAsObjectStream gruppiert geeignete Objekte in /ObjStm mit seitenlokaler Ordnung und vollständiger Type-2-Cross-Reference-AbdeckungBeginIncrementalSave und CommitIncrementalSave hängen nur geänderte und neue indirekte Objekte an verschlüsselte oder unverschlüsselte Quellen an, erhalten die vorherige Ausgabe byte-genau zusammen mit /Prev, /Encrypt, /Info und der permanenten /ID; ein Commit ohne Änderungen vergrößert die Datei nichtSaveAsRepaired schreibt eine Kopie mit einzelner Revision und verifiziert sie vor der Auslieferung über einen unabhängigen strikten Ladevorgang erneutTPdf.PdfVersion nutzt den Parser-Zustand von PDFium erneut und führt lediglich eine Acht-Byte-Header-Prüfung durch, statt das Quelldokument neu zu parsenTPdfRandomAccessStore hält Zwischendaten im Speicher bis SaveMemoryLimit und migriert dann in eine exklusive temporäre Datei mit Delete-on-Close; die Nachbearbeitung des Kern-Speicherns nutzt dieselbe Richtlinie für alle drei Arbeitsbereiche, während Standard-Updates für Open-Action und Seitenbeschriftungen im Catalog mit begrenzten Fenstern und einem Sparse-Index arbeiten/AF-Arrays gemäß ISO 32000-2 §7.11.4, angehängt an den Catalog oder eine Zielseite, mit den acht Relationship-Werten aus Tabelle 45IPdfOcrProvider akzeptiert jede Erkennungs-Engine – die Komponente liefert Seiten-Bitmaps und schreibt die resultierende durchsuchbare Textschicht, mit Status pro Seite und Überspringen vorhandener TexteGetStructuredText baut aus Zeichengeometrie und Tagged-PDF-Semantik eine Hierarchie aus Seite / Block / Zeile / formatiertem Span auf; ExtractTables und ExtractDocumentTables erkennen Tabellen mit Rahmen- oder Whitespace-Ausrichtung, erhalten verbundene Zellen, bewerten die Konfidenz und geben CSV oder JSON ausBuildReflowDocument verwandelt ein layoutfestes PDF in einen Knotenbaum, dessen sichere HTML-Ausgabe Überschriften, Absätze, Listen, Abbildungen, Seitenabschnitte und Tabellen-Spans erhältMeasureText und WrapText bieten Wortumbruch, ohne der Seite etwas hinzuzufügenTPdfStreamInspector dekodiert beliebige Stream-Objekte unter expliziten Budgets für Quelle, Rohdaten, dekodierte Daten, Expansionsratio und Stream-Anzahl und liefert einen strukturierten Status, statt bei einer konstruierten Datei den Speicher zu erschöpfenAls Herzstück des PDF-Verarbeitungssystems übernimmt TPdf sämtliche Operationen auf Dokumentebene, einschließlich Laden, Speichern, Textextraktion, Formularverarbeitung und Metadatenverwaltung
Ein anspruchsvolles visuelles Steuerelement, das eine umfassende PDF-Anzeigeerfahrung mit vollständigen Benutzerinteraktionsmöglichkeiten bietet
TStream-Adaptern über LoadCustomDocument, mit den Richtlinien compatible, strict und recovery sowie strukturierten xref-DiagnosenSaveAsRepairedSaveAsPdfA / SaveAsPdfAToStream mit mitgeliefertem sRGB-ICC-Profil und Unterstützung benutzerdefinierter ProfileValidatePdfA und die schreibgeschützte Eigenschaft PdfAConformanceMergeFiles (Stapelmerge mit begrenzten Quellen), ImportPagesByIndex (Teilmengen-Import), ImportNPagesToOne (N-up-Raster), MovePages (Umsortierung an Ort und Stelle)CreateXObjectFromPage und InsertFormObjectFromXObjectRenderPageProgressive und IPdfCancellationTokenTPdfProgressiveDocument, einschließlich sparsamer Byte-Range-Hinweise, priorisierter Range-Planung, begrenzter Wiederholungen, Abbruch sowie Verfügbarkeitsgates für Dokument, Formular und SeiteSaveAsLinearized, einschließlich First-Page-Gruppierung, zwei Cross-Reference-Abschnitten sowie Hint-Tables für Seiten-Offsets und Shared Objects gemäß Anhang FSaveAsObjectStream, einschließlich begrenzter ObjStm-Gruppen, seitenlokaler Ordnung und vollständiger Type-2-xref-AbdeckungBeginIncrementalSave und CommitIncrementalSave, einschließlich Erhalt des verschlüsselten Präfix, geerbter Sicherheitsparameter, No-op-Commits, strikter erneuter Öffnung, dauerhafter Seitendateien, atomarem Austausch, Rollback und Statistiken pro CommitTPdfRandomAccessStore und SaveMemoryLimit, einschließlich sicheren Auslagerns in eine temporäre Datei, positionierter E/A und Peak-Diagnosen pro SpeichervorgangFitMode bestimmt, wie die Seite im Ansichtsbereich sitzt (manueller Zoom, Originalgröße, Seite anpassen, Breite anpassen); wird bei Resize / Seitenwechsel automatisch erneut angewendetPageColor trennt den gerenderten PDF-Seitenhintergrund von der Color-Eigenschaft des umgebenden Steuerelements – ideal für Dark-Mode-ViewerHighlightSearchText und ClearHighlightPageShadowSize / PageShadowColor) und Seitenrahmen (PageBorderColor)LinkOptions) sowie den Ereignissen OnAnnotationLinkClick / OnWebLinkClickAllowUserPageChange, ChangePageOnMouseScrolling, AllowUserTextSelection) für Kioske und schreibgeschützte EinbettungenTPdfThumbnailView| Aspekt | Details |
|---|---|
| Rendering-Engine | Google PDFium – industrieweit etablierte, praxiserprobte PDF-Engine |
| PDF-Unterstützung | PDF-Versionen 1.0 bis 1.7, verschlüsselte und passwortgeschützte Dateien |
| Plattformkompatibilität | Windows-Anwendungen in 32-Bit und 64-Bit |
| IDE-Unterstützung | Delphi XE5 / C++Builder XE5 (RAD Studio XE5) bis Delphi/C++Builder 13.1 Florence (RAD Studio 13.1), Lazarus 3.8+ |
| Zeichenkodierung | Vollständige Unicode-Unterstützung, mehrsprachige Textverarbeitung |
| Speicherverwaltung | Optimiert für große Dokumente, effiziente Ressourcennutzung |
| Thread-Sicherheit | Single-Threaded-Design (entsprechend den PDFium-Anforderungen) |
PDFium Delphi Component folgt einem geschichteten Architekturmuster, das die Zuständigkeiten sauber trennt und die Wiederverwendbarkeit des Codes maximiert:
| Schicht | Dateien | Verantwortung |
|---|---|---|
| VCL-Komponenten | PDFium.pas, FPdfThumbnail.pas | Delphi-VCL-Komponenten (TPdf, TPdfView, TPdfThumbnailView) mit Designzeit-Unterstützung |
| API-Bindings | 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 | Funktionszeiger-Deklarationen für PDFium-DLL-Aufrufe |
| PDF/A-Pipeline | FPdfPdfa.pas | PDF/A-1b-Erstellung (XMP-Einfügung, sRGB-ICC-OutputIntent, Catalog-Update) und Validierung (Konformitätserkennung, Problemauflistung) |
| Async-Infrastruktur | FPdfAsync.pas | IPdfCancellationToken / IPdfCancellationTokenSource, PdfNoCancellationToken-Singleton und TPdfFuture<T>-Helfer für lang laufende Rendering- und Exportarbeiten |
| Geometrie-Helfer | FPdfMatrix.pas | OO-Wrapper um FS_MATRIX mit Helfern für Translate, Scale, Rotate, Flip, Skew und Multiply |
| Seitenoperationen | FPdfPageOps.pas | Wrapper für FPDF_ImportPagesByIndex, FPDF_ImportPages, FPDF_ImportNPagesToOne und FPDF_MovePages, skalierbare dateibasierte Stapelplanung sowie Form-XObject-Helfer (CreateXObjectFromPage / InsertFormObjectFromXObject) |
| Miniaturansicht-Seitenpanel | FPdfThumbnail.pas | TPdfThumbnailView – scrollbares Miniaturansichts-Panel pro Seite mit Hover, Auswahl und OnPageClick-Navigation |
| Native Engine | DLLs\Win32|Win64\pdfium.dll und pdfium.v8.dll | Native Rendering-Engine Google PDFium, mit optionalen V8-aktivierten Builds |
TPdf-Member und 36 sofort lauffähige Projekte verkürzen die EntwicklungszeitPDFium Delphi Component ist auf sofortige Produktivität ausgelegt. Die Komponentenbibliothek enthält:
Egal, ob Sie einen einfachen PDF-Viewer oder ein komplexes Dokumentverarbeitungssystem entwickeln – PDFium Delphi Component bildet das Fundament für professionelle PDF-Funktionalität in Ihren Delphi- und C++Builder-Anwendungen