読み込み済みドキュメントツールキット
HotPDF は既存の PDF を開いてページ操作やフォーム操作を適用し、型付きドキュメント状態を検査し、ページをレンダリング / 検索し、デバイス機能を使って印刷し、ワークフローを別のライブラリへ移すことなく結果を保存できます
ページ操作とマージ
THotPDF.DeletePagesは標準的な 1 始まりのページ範囲構文を受け付け、重複する選択を 1 回だけ除去し、有効なページツリーを維持します- 読み込み済みページの削除では、削除したページだけに属していた widget 注釈と空の AcroForm フィールド分岐が切り離されます
THotPDF.InsertPagesFromDocumentとTHotPDF.AppendPagesFromDocumentはTHPDFMergeOptionsを受け付けます- 自動リネームが無効な場合は、ページ挿入の前にフォーム名の競合がチェックされるため、拒否されたマージでは宛先ページ数が変わりません
THPDFMergeOptionの値はmoIncludeOutlines、moIncludeFormFields、moRenameConflictingFormFieldsです- outline の destination は選択されたソース→宛先ページマップを通して再マップされ、インポートされたフォームルートは宛先の AcroForm に登録されます
THotPDF.InsertLoadedBlankPageは、呼び出し側指定サイズの白紙ページを正確な 0 始まり位置に挿入しますTHPDFWatermarkTemplate.MakeCurveは、順序付きの複合読み込みページ透かしに 3 次 Bezier 曲線を追加しますTHPDFPage.AddCurveWatermarkは、新規ドキュメントの作成時に同じ 3 次 Bezier プリミティブを提供します- 読み込み済みドキュメントのメタデータ setter は Info ディクショナリを dirty にマークするため、増分保存でも編集済みフィールドが保持されます
BeginIncrementalUpdateは、ファイル全体をメモリに保持する代わりに、有界のテールプローブでソースファイルの書き込みロックと file-backed 状態を維持しますSaveIncrementalUpdateは追跡済みの変更だけを処理し、ソースのプレフィックスを新しいターゲットへストリーミングし、同一ターゲットには検証済みのロールバック保護付き直接追記を使いますOpenLoadedPageContentStreamは、単一および配列の/Contents値を 1 つのシーク可能な論理ストリームとして公開し、未フィルターのセグメントをソースバックのストレージに保持し、フィルター済みセグメントは同時に最大 1 つだけデコードします/Contents値が配列のページを編集すると、元のストリームを統合やクリアすることなく新しい間接セグメントを追記します。レンダリングと互換性のための実体化では、幾何的に成長するトークン / バイトバッファを使用します- 読み込み済み注釈の setter は、既存の注釈オブジェクト上で contents、title、一意な名前、変更日時、矩形、フラグ、色、ボーダースタイルを直接更新します
- 注釈矩形の端点は正規化され、破線ボーダーは正の破線長だけを保持し、視覚的な変更は影響を受けるページのキャッシュ済みレンダリングだけを無効化します
ActivateLoadedLinksは、配置済み glyph ランから bare な Web / メールアドレスを検出してボーダーなしの URI 注釈を作成し、候補ごとに注釈リストを再スキャンすることなく既存の一致リンクをスキップしますExtractLoadedPagesTextToStreamは、範囲・セパレーター・BOM 制御付きで UTF-8 のページテキストを呼び出し側所有のストリームへ直接書き込みますTHPDFViewerModelは、ウィンドウを作成せずに、ページフォームフィールドのヒットテストと決定論的な上から下へのキーボードナビゲーションを提供します- 読み込み済み署名の検証は、RSA PKCS#1 v1.5、パラメータ検証済み RSA-PSS、ECDSA、RFC 3161 のドキュメント / 署名タイムスタンプに対応します。strict なバイト範囲チェックは、呼び出し側のストリーム位置を保ったまま署名済みリビジョン長と未署名の末尾バイトを報告します
THPDFSignatureInfo.CertificateTimeValidityは、暗号学的なsvValidのセマンティクスを変えずに、証明書の有効期間境界と署名時刻の整合性を分類しますVerifyLoadedSignatureWithTrustは、署名者のパスを呼び出し側指定のトラストアンカーまで構築し、オフラインの OCSP / CRL 証拠を検証します。document-level の DSS や呼び出し側の証拠より先に、署名ごとの VRI データを優先しますAnalyzeLoadedSignatureRevisionsは、従来型・ストリーム・ハイブリッド・compressed-object の各 xref 履歴をたどり、後続の変更を長期検証、フォーム記入と署名、注釈、その他の変更に分類し、DocMDP と FieldMDP を独立に評価しますSanitiseLoadedDocumentは、JavaScript のみ、アクティブコンテンツ、strict な未信頼ドキュメントという各ポリシーをオブジェクトグラフ全体に適用し、到達不能な payload オブジェクトを除去し、有界なコンパクトリライトを準備しますScrubLoadedRedactionRemnantsは、コンパクトな全文リライトの前に、メタデータ、添付ファイル、Redact 注釈、到達不能なリソース、保持された増分ソースバイトを除去します- 有界な cross-reference 復旧 は、壊れた
startxrefと xref データの後で、無傷の xref セクションを再配置するか、検証済みの direct-object オフセットを再構築します。スキャン予算は呼び出し側が制御でき、構造化された診断情報を返します - スケーラブルローディング は、変更されるまでファイルストリーム本体をソースバックで保持し、圧縮オブジェクトを遅延解決し、カスタム
THPDFRandomAccessSource実装を受け付けます DecodeLoadedStreamToStreamは、ドキュメント全体のバイトアカウンティング、フィルター数上限、間接参照のサイクルチェック、パイプライン深度ガードで敵対的な入力を保護しながら、有界のフィルターチェーンを呼び出し側所有のストリームへ実行しますExtractLoadedImageToStreamは、フルサイズのバイト配列を実体化せずに、ネイティブ画像 payload や汎用のデコード済みフィルター出力を呼び出し側所有のストリームへ直接コピーしますExportLoadedPagesStructuredは、意味的な読み順、テーブル、ジオメトリ、スタイル、有界な画像出現を HTML、XHTML、XML、JSON としてシリアライズしますExtractLoadedTypedTablesは、結合セル、繰り返しヘッダー、ページ横断の継続、型付き値、アトミックな CSV / JSON エクスポートを備えた、信頼度スコア付きの正規グリッドを構築しますOptimizeLoadedStreamsは unfiltered、Flate、LZW、ASCII85、ASCIIHex、RunLength の候補を選択し、大きな作業バッファを一時ファイルへスピルし、4 戦略の zlib ベースラインの後に予算付き Zopfli を実行でき、正の節約しきい値を満たす置き換えだけを採用しますSubsetLoadedFontsは、ページ、Form XObject、注釈 appearance のコンテンツをトレースした後、対応している埋め込み TrueType / CFF フォントから到達不能な glyph プログラムを除去します。既存の文字・CID・glyph・幅・ToUnicode マッピングは保持されますSetDocumentAttachmentMetadataは、ドキュメント保存の前に埋め込みファイルの名前を変更し、説明を更新しますTHPDFLoadedFormFieldは、プロパティインスペクタ向けにフラグ、MaxLen、ページインデックス、境界、共通テキストフィールドの操作を公開しますTHPDFViewerModelは、読み込み済みレンダリングキャッシュを再利用しながら、呼び出し側所有のページスナップショットを作成し、現在のページを BMP、JPEG、PNG としてファイル / ストリームへ書き出しますTHPDFViewerModelは、読み込み済み PDF ページを変更することなく、現在のビューと生成されたスナップショットを 90 度刻みで回転しますTHPDFViewerModelは、スケーラブルなテキストとベクター描画レコードを保持したまま、回転対応の拡張メタファイルを作成しますTHPDFViewer.DrawCurrentViewとPrintCurrentViewは、アクティブなベクタービューを呼び出し側キャンバス / プリンターページにフィットさせて中央へ配置しますTHPDFViewerModel.ProcessKeyInputはテスト可能なページ / ズームコマンドを提供し、Viewer が矢印キーによるスクロールを処理しますTHPDFViewerModel.ProcessMouseWheelはテスト可能な Ctrl+ホイールズームを提供し、Viewer が縦横のスクロールを直接処理しますTHPDFViewerModel.GetNextZoomLevelとGetPreviousZoomLevelは、5% から 6400% までの決定論的な標準ズームナビゲーションを公開しますTHPDFViewerModel.PagePointToViewとViewPointToPageは、ページ回転、ビュー回転、MediaBox オフセット、DPI を横断して可逆な座標を提供しますTHPDFViewerModel.CreatePageRegionSnapshotは、有界メモリの選択スナップショットのために、要求された PDF 矩形だけをレンダリングしますTHPDFViewer.ResetViewは、ドキュメントをアンロードしたり現在のページを変えたりすることなく、表示の既定値を復元します
フォームと検索
THotPDF.AddLoadedRadioButtonは、子 widget、共有エクスポート値、有効な on / off appearance 状態を持つ親ラジオフィールドを作成します- 読み込み済みフォームフィールドは、フラグ、最大長、justification、ツールチップ、widget ごとの矩形、回転、可視性、印刷、ボーダー幅と色、背景色を、増分保存の dirty 追跡付きで更新できます
GetLoadedFormFieldNameValuePairsとSetLoadedFormFieldNameValuePairsは、軽量なname=valueバッチをTStringsを通してやり取りしますExtractLoadedPagesTextは、1 始まりのページ範囲を呼び出し側選択のセパレーターで集約しますCMapResourcePathは、標準コレクションフォルダを含む呼び出し側指定のルートで、自動 CMap 探索を上書きしますCMapResourcePathの代入は、パスが変わらなくても読み込み済みフォントデコーダーをクリアします。差し替えた外部リソースも再読み込みする必要があるときは、先にHPDFClearCMapCachesを呼び出してください- 標準 CMap マッピングは解決済みリソースルートごとにキャッシュされ、同時実行のテーブルアクセスをサポートし、文字テーブルと範囲テーブルが整列しているときは対数探索を使います
- UniJIS、UniGB、UniCNS、UniKS の UCS2 / UTF16 マッピング一式が、横書き / 縦書きテキスト向けに埋め込まれています。
/DW2が無い場合の標準的な縦書き既定値や補助スカラーも含まれます - 読み込み済みフォントデコーダーは、テキスト抽出、SVG エクスポート、テキスト置換、明示的なデコーダー要求で共有する、ドキュメントスコープの 32 MiB 加重 LRU キャッシュを使います
GetLoadedFontDecoderは独立したディープコピーを返し、内部の読み取り専用コンシューマーはキャッシュされたパース済みコアを再利用しますLoadedFontDecoderCacheMaxBytes、GetLoadedFontDecoderCacheInfo、ResetLoadedFontDecoderCacheStatisticsがキャッシュの再利用を制御 / 計測します- 低解像度のグレースケール / RGB JPEG 領域は、フル解像度のラスターを実体化せずに、縮小逆 DCT スケーリングと直接スキャンラインリサンプリングを使います
GetLastJPEGReducedDecodeInfoは、直近の互換要求についてソース / スケール済み / 出力 / スキャンライン / 作業メモリの各ジオメトリを報告しますAcquireLoadedImageStreamとAcquireLoadedImageRegionAtResolutionは、ウォームヒット時のピクセルコピーなしで不変の共有ハンドルを返します。キャッシュされるTBitmapメソッドは呼び出し側所有の互換性を維持しますGetImageDecodeConcurrencyInfoは、実行中の処理、並列オーナーデコードのピーク、重複待ち、完了、失敗を報告しますTHotPDF.SearchLoadedNextは、前回のTHPDFTextMatchから前進する、ステートレスなページローカル検索プリミティブですTHPDFLoadedDocumentFacadeは、読み込み済みのフォーム、注釈、アウトライン、フォント、画像を型付きコレクションオブジェクトにまとめますTHPDFLoadedFormInfoは、現在値と既定値、フィールドタイプ、説明、読み取り専用フラグ、選択肢オプションを含みます
アウトラインとリソース
THotPDF.GetLoadedOutlineEntriesは、完全な先行順スナップショットをTHPDFLoadedOutlineEntryArrayとして返します- 各
THPDFLoadedOutlineEntryには、インデックス、親インデックス、レベル、タイトル、解決済み宛先ページインデックスがあります THPDFLoadedOutlineInfoは、同じ階層をTHPDFLoadedOutlineCollection経由で公開しますTHPDFLoadedResourceCollectionはフォントと読み込み済み画像を列挙し、対応している画像を呼び出し側所有のビットマップとして抽出できます
システム証明書による署名
THotPDF.SignPDFWithSystemCertificateは、Windows 証明書ストアの秘密鍵を通してファイル / ストリーム入力に署名しますTHotPDF.GetLoadedSignaturePermissionsは、DocMDP、Catalog の権限リンク、SigFieldLock、FieldMDP 構造をTHPDFSignaturePermissionInfoへ読み込みます。構造的なポリシーを暗号学的有効性としては扱いませんTHPDFCertificateStoreSelectorは、current-user / local-machine のスコープ、ストア名、SHA-1 サムプリント、キープロバイダー UI の許可可否を選択しますTHPDFCMSSignDigestCallbackとHPDFCMSSignPDFStreamWithExternalSignerが、外部ダイジェスト署名フックの土台を提供します- CNG キーは RSA PKCS#1 SHA-256 署名を使い、レガシー CSP キーは同等の CryptoAPI パスを使います
印刷
THPDFPrintOptionsは、部単位印刷、用紙コード、カスタム用紙幅 / 長さ、向き、両面印刷、ビン、品質に対応しますTHPDFPrinterCapabilitiesは、ビン、解像度、両面印刷、カラー、最大部数に加えて、並行した用紙コード / 名前 / 物理サイズを報告しますHPDFBuildPrintPageSequenceは、部単位 / 非部単位ジョブで使われる決定論的な物理ページ順を公開します
VCL ビューアコンポーネント
THPDFViewerModelは、ウィンドウを作成せずにナビゲーション、ズーム状態、テキスト検索結果、ラッピング、変更通知を所有しますTHPDFViewerは選択されたページをスクロール可能なキャッシュ済みビットマップへレンダリングし、等倍、ページ全体表示、幅に合わせる表示、カスタムズーム、ビュー回転に対応し、レンダリング済みページの上に現在の検索ヒットを描画しますTHPDFSearchPanelは、検索テキスト、大文字小文字の区別、単語単位一致、次 / 前ナビゲーションをビューアに接続しますTHPDFOutlineViewerは完全な再帰ブックマークツリーを表示し、リンクされたビューアのドキュメント変更に追従し、リンクされたビューアをナビゲートしますTHPDFViewerActionの派生は、先頭、前、次、末尾、ズーム、フィット、回転、リセット、次を検索、検索クリアの各アクションを提供します
最小限のビューアセットアップ
PDF.LoadFromFile('input.pdf');
PDFViewer.PDFDocument := PDF;
OutlineViewer.Viewer := PDFViewer;
SearchPanel.Viewer := PDFViewer;
PDFViewer.ZoomMode := vzmFitWidth;
所有権とインデックス
- 読み込み済みページインデックスと宛先ページインデックスは 0 始まりです
- ページ範囲文字列は 1 始まりで、抽出と印刷と同じパーサーを使います
- facade レコードはスナップショットであり、コレクション変更メソッドは現在読み込まれているドキュメントに対して動作します
- 抽出されたビットマップの所有者は呼び出し側です
関連する型付き検査レコードと配置レコード
THPDFPageElementKind、THPDFPageElement、THPDFBaselineRoleは、読み込み済みページ要素検査が返すテキスト、画像、パス、baseline の結果を記述しますTHPDFWatermarkKind、THPDFWatermarkHorizPos、THPDFWatermarkVertPosは、読み込み済みドキュメント透かしのコンテンツと配置を選択します