PDFium Delphi Component は、Delphi および C++Builder アプリケーションに強力な PDF 処理および表示機能をもたらす、包括的でプロフェッショナルグレードのコンポーネントライブラリです。ページレンダリングとドキュメント読み取りには PDFium レンダリングエンジンを使用し、そのエンジンが提供しないすべての機能を Object Pascal で実装しています。
この違いは、ライブラリを評価する際に重要です。PDFium はページを描画し、テキストを抽出し、既存の構造を読み取ります。しかし、ドキュメントへの署名、暗号化の書き込み、PDF 規格の検証、線形化またはインクリメンタルリビジョンの出力はできません。PDFium Delphi Component は 55 ユニットにわたる約 115,000 行の Object Pascal を同梱しており、そのうち 62,000 行以上は PDFium API にまったく対応物がない 36 ユニットに含まれます — 暗号、署名、暗号化、規格適合、PDF シリアライズ、フォームデータ交換、レイアウト、テキストシャーピングです。そのすべてがソースコードで提供されます。
本ライブラリは、475 の public メンバーを持つドキュメント処理および操作用の TPdf、152 の public メンバーを持つインタラクティブな視覚表示用の TPdfView、ページナビゲーション用の TPdfThumbnailView の 3 つの登録コンポーネントで構成されています。シンプルな PDF ビューア、署名ドキュメントワークフロー、アーカイブ変換パイプライン、完全なドキュメント管理システムのいずれを構築する場合でも、PDFium Delphi Component は必要なツールと柔軟性を提供します。
以下の機能は、PDFium C API に対応物がありません。それぞれ PDFium Delphi Component によって Object Pascal で実装され、公開されている ISO、ETSI、IETF、FIPS の各条項に対して検証され、ソースコードとして提供されます。
署名の読み取りではなく、完全な署名です。PDFium は署名辞書の存在を報告できますが、PDFium Delphi Component は署名を作成します。
SignPades、SignPadesToStream、SignPadesBytes で提供/Certs、/OCSPs、/CRLs を備えた Document Security Store の注入、署名ごとの VRI 辞書、/Extensions /ESIC マーカー/SubFilter /ETSI.RFC3161 の Document Time-stamp 辞書ICmsSigner インターフェースの背後に配置PreparePadesRemoteSignature と CompletePadesRemoteSignature が操作を分割するため、秘密鍵をリモートサービスやハードウェアモジュール内に留めておけますValidatePades はドキュメントが到達する最高のベースラインと条項レベルの問題コードを報告し、ValidatePadesTrust と ValidatePadesTrustAsync が証明書チェーンのトラストチェックを追加しますSignPadesWithPdfA は EN 319 142-1 附属書 A.7 に従い、1 回の呼び出しで PDF/A-4 への変換と署名を行いますPDFium は暗号化されたファイルを開けますが、暗号化を書き込むことはできません。PDFium Delphi Component は ISO 32000-2 とその技術仕様に基づいて書き込み側を実装しています。
/O /U /OE /UE /Perms 辞書エントリを備えた SaveAsEncrypted/Length 修正と再構築された相互参照テーブルを伴うストリームおよびリテラル文字列の暗号化/AuthCode トークン — HKDF 鍵導出、鍵ラッピング、HMAC 検証を備えた CMS AuthenticatedData6 つの ISO 規格ファミリー。それぞれが条項レベルの結果コードを返すバリデータと、対応する保存またはマーカー注入パスを備えます。
エンジンが提供するのは 1 回の逐次 Whole ファイル保存だけです。アプリケーションではそれ以上が求められることが多いため、PDFium Delphi Component はエンジンのセマンティック出力の上に独自のリビジョンを書き込みます。
SaveAsLinearized は、最初のページのグループ化、2 つの相互参照セクション、附属書 F のページオフセットおよび共有オブジェクトヒントテーブルを備えた Fast Web View ファイルを生成しますSaveAsObjectStream は対象のオブジェクトを、ページローカルな順序と完全な type-2 相互参照カバレッジを備えた /ObjStm にグループ化しますBeginIncrementalSave と CommitIncrementalSave は、暗号化 / 非暗号化のソースに対して変更および新規の間接オブジェクトのみを追記し、/Prev、/Encrypt、/Info、永続的な /ID とともに以前の出力をバイト単位で保持します。変更のないコミットはファイルを成長させませんSaveAsRepaired は単一リビジョンのコピーを書き出し、提供前に独立した厳格ロードで再検証しますTPdf.PdfVersion は PDFium のパーサー状態を再利用し、ソースドキュメントを再解析する代わりに 8 バイトのヘッダーガードのみを実行しますTPdfRandomAccessStore は SaveMemoryLimit まで中間データをメモリに保持し、その後クローズ時に削除される専用一時ファイルへ移行します。コア保存後処理は 3 つの作業領域すべてに同じポリシーを使用し、デフォルトのオープンアクションとページラベルのカタログ更新は上限付きウィンドウと疎なインデックスを使用します/AF 配列を Catalog またはターゲットページに添付。Table 45 の 8 つの関係値に対応IPdfOcrProvider は任意の認識エンジンを受け入れます。コンポーネントがページビットマップを提供し、ページごとのステータスと既存テキストのスキップ付きで、結果の検索可能テキストレイヤーを書き込みますGetStructuredText は文字ジオメトリとタグ付き PDF セマンティクスからページ / ブロック / 行 / スタイル付きスパンの階層を構築し、ExtractTables と ExtractDocumentTables は枠付きおよび空白整列のテーブルを検出し、結合セルを保持し、信頼度をスコア化し、CSV または JSON を出力しますBuildReflowDocument は固定レイアウトの PDF をノードツリーに変換します。その安全な HTML 出力は見出し、段落、リスト、図、ページセクション、テーブルスパンを保持しますMeasureText と WrapText はページに何も追加せずにワードラップを提供しますTPdfStreamInspector は、明示的なソース、生データ、デコード済み、展開率、ストリーム数の各予算の下で任意のストリームオブジェクトをデコードし、細工されたファイルでメモリを枯渇させる代わりに構造化されたステータスを返しますPDF 処理システムの中核を担う TPdf は、読み込み、保存、テキスト抽出、フォーム処理、メタデータ管理を含むすべてのドキュメントレベルの操作を扱います。
豊富なユーザーインタラクション機能を備えた、洗練された PDF 表示体験を提供する高度なビジュアルコントロールです。
TStream アダプタから LoadCustomDocument 経由で PDF ドキュメントを読み込み。互換、厳格、リカバリの各ポリシーと構造化された xref 診断を備えますSaveAsRepaired による独立して厳格検証された単一リビジョン修復コピーの作成SaveAsPdfA / SaveAsPdfAToStream での PDF/A-1b 作成ValidatePdfA および読み取り専用の PdfAConformance プロパティによる PDF/A 検証MergeFiles(ソース数を抑えたバッチマージ)、ImportPagesByIndex(サブセットインポート)、ImportNPagesToOne(N-up グリッド)、MovePages(インプレース並べ替え)CreateXObjectFromPage および InsertFormObjectFromXObject による 1 ページの複数ページへのスタンプRenderPageProgressive および IPdfCancellationToken によるキャンセル可能なプログレッシブレンダリングTPdfProgressiveDocument によるネイティブなプログレッシブダウンロード。疎なバイト範囲ヒント、優先度付き範囲スケジューリング、上限付き再試行、キャンセル、ドキュメント / フォーム / ページの可用性ゲートを含みますSaveAsLinearized による Fast Web View 出力。最初のページのグループ化、2 つの相互参照セクション、附属書 F のページオフセットおよび共有オブジェクトヒントテーブルを含みますSaveAsObjectStream によるモダンな PDF 1.5+ オブジェクトパッキング。上限付き ObjStm グループ、ページローカルな順序、完全な type-2 xref カバレッジを含みますBeginIncrementalSave と CommitIncrementalSave による変更オブジェクトのリビジョンセッション。暗号化済みプレフィックスの保持、セキュリティパラメータの継承、変更なしコミット、厳格な再オープン検証、永続的なサイドファイル、アトミック置換、ロールバック、コミットごとの統計を含みますTPdfRandomAccessStore と SaveMemoryLimit による上限付きランダムアクセス作業ストレージ。安全な一時ファイルスピル、位置指定 I/O、保存ごとのピーク診断を含みますFitMode はページのビューポート内での配置方法を選択(手動ズーム、実サイズ、ページ全体表示、幅に合わせる)。Resize / ページ変更時に自動再適用PageColor はレンダリングされた PDF ページの背景を周囲のコントロールの Color から分離し、ダークモードビューアに対応HighlightSearchText および ClearHighlight による検索結果のハイライトPageShadowSize / PageShadowColor)およびページ境界線(PageBorderColor)LinkOptions)および OnAnnotationLinkClick / OnWebLinkClick イベントを備えた安全なリンククリック処理AllowUserPageChange、ChangePageOnMouseScrolling、AllowUserTextSelection)TPdfThumbnailView サイドパネルコンポーネントによるサムネイルナビゲーション| 項目 | 詳細 |
|---|---|
| レンダリングエンジン | Google PDFium - 業界標準で実績のある PDF エンジン |
| PDF サポート | PDF バージョン 1.0 から 1.7、暗号化およびパスワード保護されたファイル |
| プラットフォーム互換性 | Windows 32-bit および 64-bit アプリケーション |
| IDE サポート | Delphi XE5 / C++Builder XE5 (RAD Studio XE5) から Delphi/C++Builder 13.1 Florence (RAD Studio 13.1) まで、Lazarus 3.8+ |
| 文字エンコーディング | 完全な Unicode サポート、多言語テキスト処理 |
| メモリ管理 | 大規模ドキュメント向けに最適化、効率的なリソース使用 |
| スレッドセーフティ | シングルスレッド設計(PDFium の要件に準拠) |
PDFium Delphi Component は、関心事を明確に分離し、コードの再利用性を最大化する階層型アーキテクチャパターンを採用しています。
| レイヤー | ファイル | 責務 |
|---|---|---|
| VCL コンポーネント | PDFium.pas, FPdfThumbnail.pas | デザインタイムサポート付きの Delphi VCL コンポーネント(TPdf、TPdfView、TPdfThumbnailView) |
| 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 | PDFium DLL 呼び出し用の関数ポインタ宣言 |
| PDF/A パイプライン | FPdfPdfa.pas | PDF/A-1b 作成(XMP 注入、sRGB ICC OutputIntent、Catalog 更新)および検証(準拠検出、問題の列挙) |
| 非同期インフラ | FPdfAsync.pas | IPdfCancellationToken / IPdfCancellationTokenSource、PdfNoCancellationToken シングルトン、長時間実行されるレンダリングおよびエクスポート作業のための TPdfFuture<T> ヘルパー |
| ジオメトリヘルパー | FPdfMatrix.pas | Translate、Scale、Rotate、Flip、Skew、Multiply ヘルパーを備えた FS_MATRIX のオブジェクト指向ラッパー |
| ページ操作 | FPdfPageOps.pas | FPDF_ImportPagesByIndex、FPDF_ImportPages、FPDF_ImportNPagesToOne、FPDF_MovePages のラッパー、スケーラブルなファイルバックのバッチスケジューリング、および Form XObject ヘルパー(CreateXObjectFromPage / InsertFormObjectFromXObject) |
| サムネイルサイドパネル | FPdfThumbnail.pas | TPdfThumbnailView — ホバー、選択、OnPageClick ナビゲーションを備えたスクロール可能なページ毎サムネイルパネル |
| ネイティブエンジン | DLLs\Win32|Win64\pdfium.dll および pdfium.v8.dll | Google PDFium ネイティブレンダリングエンジン、オプションで V8 有効ビルド |
TPdf メンバーと 36 のすぐに実行できるプロジェクトが開発時間を短縮しますPDFium Delphi Component は即時の生産性を念頭に設計されています。本コンポーネントライブラリには以下が含まれます:
シンプルな PDF ビューアでも複雑なドキュメント処理システムでも、PDFium Delphi Component は Delphi および C++Builder アプリケーションにおけるプロフェッショナルな PDF 機能の基盤を提供します。