THotPDF の高度なワークフローメソッド

このページでは、ロードされたドキュメントの修復、ファイルバック(file-backed)の書き換え、xref ストリームの解析、適合性出力、およびシェーピングワークフローをサポートする高度なパブリック THotPDF メソッドをまとめています

一般的なアプリケーションコードでは、ページ操作メソッド、ロードされたフォームフィールドメソッド、ユーティリティメソッド、ShapingFeatures など、タスクに焦点を当てたページを優先してください

ロードされたドキュメントの解決

メソッド 使用法
DoPageOperationProgress構成された進行状況イベントを介してページ操作の進行状況をディスパッチします
ResolveLoadedObjectロードされたオブジェクト参照を、ページ操作で検査またはコピーできるオブジェクトに解決します
ResolveLoadedDictionaryロードされたオブジェクト参照を解決し、可能な場合はディクショナリとして返します
ResolveLoadedArrayロードされたオブジェクト参照を解決し、可能な場合は配列として返します
EnsureLoadedRootIndexオブジェクトグラフの操作を続行する前に、ロードされたカタログのインデックスがわかっていることを確認します
MaterializeLazyStreams完全な書き換えまたはオブジェクトレベルのコピー操作の前に、遅延された(deferred)ストリームデータをロードします
FindLoadedFormFieldByIndexフィールドインデックスによってロードされた AcroForm フィールドディクショナリを返し、その有効な名前を報告します
FindLoadedFormFieldBy名前完全修飾フィールド名によってロードされた AcroForm フィールドディクショナリを返します
ConfigurePDFVersion現在選択されている PDF バージョンの機能をドキュメント出力設定に適用します
RecoverReloadFEKFromBytes指定されたパスワードが一致する場合に、リロードされた暗号化ドキュメントのファイル暗号化キーを回復します
LoadedEncryptVersion現在ロードされているドキュメントの暗号化リビジョンを報告します
IsObjStmMemberObjectオブジェクトがオブジェクトストリームメンバーから来ており、オブジェクトストリームに対応した処理が必要かどうかを報告します
SyncMaxObjNumFromLoadedObjects新しく割り当てられたオブジェクト番号が既存の番号と衝突しないように、ロードされたオブジェクトを再スキャンします

ダイレクトファイルの状態と書き換え

メソッド 使用法
ClearDirectFileStateハンドルが再利用または解放される前に、ダイレクトファイルの状態レコードをクリアします
GetDirectFileIndexダイレクトファイルハンドルを、Direct File API によって使用される状態スロットにマッピングします
DAFindReplacementIndexダイレクトファイル状態レコード内のオブジェクト番号に対する置換エントリを検索します
DAReadObjectSource格納されたオブジェクトのソースバイトと生成(generation)データをダイレクトファイルの状態から読み取ります
DAStoreObjectSource後で書き換えるために、オブジェクトのソースバイトをダイレクトファイルの状態に格納します
DAAppendObjectSourceInternal新しいオブジェクトのボディをダイレクトファイルの状態に追加し、割り当てられたオブジェクト番号を返します
DATryBuildCompressedFileState圧縮オブジェクトストリームを使用するファイルのダイレクトファイル状態を(サポートされている場合に)構築します
DADirectLoadObjectFromBodyダイレクトファイルオブジェクトのボディを解析して、ロードされたオブジェクトインスタンスにします
DARecoverAES256FileKey暗号化ディクショナリとパスワードから AES-256 ファイルキーを回復します
DADirectPrepareObjectForAES256EncryptAES-256 ダイレクトファイル暗号化の前に、オブジェクトディクショナリとストリームを準備します
DADirectDecryptObjectAES256アクティブな AES-256 ファイルキーを使用して、解析されたダイレクトファイルオブジェクトを復号化します
DAWriteDirectAES256Rewriteダイレクトファイルの AES-256 暗号化または復号化の書き換えをターゲットファイルに書き込みます
DADirectEncryptFileAES256ダイレクトファイルの書き換えパスを通じて、既存のファイルを AES-256 で暗号化します
DADirectDecryptFileAES256ダイレクトファイルの書き換えパスを通じて、既存の AES-256 ファイルを復号化します
DAWriteFullRewrite現在の状態テーブルを使用して、完全なダイレクトファイルの書き換えを書き込みます

XRef ストリームとオブジェクトの解析

メソッド 使用法
LoadXRefStreamDocumentstartxref が xref ストリームを指しているドキュメントをロードします
LoadXRefStreamDocumentFromFileファイルから xref ストリームドキュメントをロードし、主要なオブジェクトの場所の診断結果を返します
LoadXRefStreamDocumentEncFromFileファイルからパスワードで保護された xref ストリームドキュメントをロードします
XRefProbeObjCountxref ストリームローダーが登録したオブジェクトの数を報告します
XRefProbeObjNumゼロベースの診断インデックスにあるオブジェクト番号を返します
XRefProbeCompactCountオブジェクトストリームから実体化された圧縮オブジェクトの数を報告します
XRefProbeタイプ2Mismatchesタイプ2 の xref エントリのロード中に見つかったオブジェクトストリームヘッダーの不一致を報告します
XRefProbeObjHasKeyロードされた診断オブジェクトディクショナリに指定されたキーが含まれているかどうかを確認します
XRefProbeObj名前Valロードされた診断オブジェクトディクショナリから名前の値を返します
XRefProbeCompactObjNumコンパクトオブジェクト診断エントリのオブジェクト番号を返します
XRefProbeタイプ2EncryptedSkippedタイプ2 オブジェクトストリームローダーによってスキップされた暗号化されたオブジェクトストリームを報告します
XRefProbeCountReplacementCharsロードされた文字列診断に含まれる Unicode 置換文字(replacement characters)をカウントします
XRefProbeObjStringValロードされた診断オブジェクトディクショナリから文字列値を返します
XRefProbeDecryptObjStmSkips二重の復号化を回避するために使用された、オブジェクトストリームメンバーの復号化スキップを報告します
TryParseModernPDFxref ストリームおよびオブジェクトストリームドキュメントのモダン PDF 解析パスを試行します
CreateBasicPageContentロードされた、または合成されたページの最小限のページコンテンツオブジェクトを作成します
CreatePDF16PageReferenceロードされたオブジェクトグラフを使用して PDF 1.6 のページ参照を作成します
CreateBasicResourcesページ再構築のための最小限のリソースディクショナリを作成します
CreatePDF16Resourcesページ再構築のための PDF 1.6 リソースディクショナリを作成します
ParseSimplePageObject単純なページオブジェクトをロードされたページ表現に解析します
ParseRealPageContentロードされたページの元のページコンテンツストリームを解析します
ProcessObjectStreamsForDecompression解凍されたオブジェクトが検査またはコピーされる前に、オブジェクトストリームを処理します
ScanAndLoadReferencedObjectsページとリソースのディクショナリをスキャンし、参照されているオブジェクトをロードします
ForceLoadMissingReferencedObjects最初の解析パス中に実体化されなかった参照をロードします
FindAllObjectStreamsロードされたドキュメントグラフ内のオブジェクトストリームを特定します
ExtractStreamパラメーターオブジェクトストリームの長さ、カウント、および最初のオブジェクトのオフセット値を抽出します
ProcessFlateDecodeFlateDecode 圧縮されたオブジェクトストリームのバイトを処理します
AnalyzePageObjectページオブジェクトのボディを分析し、ロードされたページのブックキーピングを更新します
ExtendPageArrロードされたページ配列にページの間接オブジェクトを追加します
ParseSimpleDictionaryディクショナリのボディを THPDFDictionaryObject に解析します
ParseSimpleArray配列のボディを THPDFArrayObject に解析します
ParseSimpleStreamストリームのボディを THPDFStreamObject に解析します
FindAndProcessObjectStreamオブジェクト番号によってオブジェクトストリームを見つけ、そのメンバーを処理します
ExtractObjectFromStreamオブジェクトストリームメンバーから解析されたディクショナリオブジェクトを抽出します
ExtractRawObjectFromStreamオブジェクトストリームメンバーから生のオブジェクトバイトを抽出します
IsObjectInStreamオブジェクト番号がオブジェクトストリームに属しているかどうかを報告します
GetObjectFromStream解析されたオブジェクトストリームメンバーをディクショナリオブジェクトとして返します
ParseModernPageObjectモダンなオブジェクトストリームパスを通じて見つかったページオブジェクトを解析します
IntelligentDecompressフォーマットを認識するフォールバックロジックを使用して解凍を試みます
DecompressFlateDecodeFlateDecode ストリームのバイトを解凍します
ParseObjectStreamオブジェクトストリームヘッダーとメンバーテーブルを解析します
ReorderPageArrByPagesTreeページツリーに従って、ロードされたページを並べ替えます
GetCorrectPageOrderFromPagesTreeロードされたページツリーからページの順序を構築します
GetPageObjectIdロードされたページインデックスに対するオブジェクト番号を返します
GetPageArrIndexForObjectNumberページオブジェクト番号に対応する、ロードされたページ配列のインデックスを返します
ExtractNumericValue生のオブジェクトコンテンツ内で指定されたキーの後の整数値を抽出します
ParseDecompressedObjects解凍されたオブジェクトストリームメンバーを解析し、主要なオブジェクト番号を返します
LoadCompressedXrefStreamモダンなドキュメント解析のために圧縮された xref ストリームデータをロードします
LoadObjectStreamsDirectly現在のソースドキュメントからオブジェクトストリームを直接ロードします
ParseXrefStreamDataデコードされた xref ストリームのテーブルデータを解析します
ProcessObjectStreamObjectsストリームのオブジェクト番号から、解凍されたオブジェクトストリームのオブジェクトを処理します

適合性(Conformance)とフォント出力

メソッド 使用法
BuildAndApplyUnicodeFontSubsetアクティブな Unicode フォントサブセットを構築し、結果として得られたフォントストリームとマッピングデータを適用します
EnsurePDFUATabsOnAnnotatedPages注釈付きの PDF/UA ページで、必要なタブ順序(tab order)が確実に宣言されるようにします
EnsurePDFAOutputIntent選択された PDF/A プロファイルで必要な場合に、PDF/A 出力インテントが存在することを確認します
EnsurePDFAColorSpaceConsistencyデバイスのカラースペースの使用状況を、PDF/A の出力インテントおよびデフォルトのカラースペース設定と照らし合わせて確認します
EmitDocumentデフォルトColorSpacesPDF/A ワークフローで使用されるドキュメントのデフォルトカラースペースマッピングを書き込みます
EnsurePDFXOutputIntent出力が確定される前に、PDF/X 出力インテントが存在することを確認します
EnsurePDFXPageBoxesPDF/X 出力プロファイルで必要なページボックスを確認します
_FindPAdESDSSStreamByDERPAdES VRI 参照の構築中に、DER バイトが証明書、OCSP 応答、または CRL と一致する既存の DSS ストリームを検索します

高度なシェーピングヘルパー

メソッド 使用法
ApplyArabicGSUBPositionalアラビア語の位置的な(positional)GSUB 置換を適用し、シェーピングされたグリフ ID を合成コードポイント(synthetic codepoints)を通じてマッピングします
ArabicGSUBShapeToGIDsテキストを出力せずに、アラビア語の GSUB シェーピングされたグリフ ID シーケンスを返します
ApplyArabicGSUBNativeShaping位置的なグリフ置換を提供するフォントに対して、ネイティブのアラビア語 GSUB シェーピングを適用します
ApplyLatinLigatureFeatureliga や clig などの名前付きラテン合字(ligature)機能を Unicode ラン(run)に適用します
ApplyLatinSingleSubstitutionFeature名前付きのラテン単一置換(single-substitution)機能を Unicode ランに適用します
ApplyLatinFractionFeatureフォントが必要な置換を提供する場合に、数値の分数(fraction)ランに frac 機能を適用します
ApplyArabicGSUBRefinement基本のアラビア語シェーピングパスの後に、アラビア語 GSUB 合字の絞り込み(refinement)を適用します
_ApplyGSUBLookupAtグリフランの位置で 1 つの解決された GSUB ルックアップを適用し、更新されたスパンを報告します
_ApplyGSUBFeatureToRunルックアップリストの順序で、グリフラン全体に 1 つの GSUB 機能のすべてのルックアップを適用します
_ApplyGSUBFeatureAtRunPosition位置に依存するシェーピングパスのために、1 つのグリフランの位置に GSUB 機能を適用します
_TibetanShapeSpanToGIDs合成コードポイント出力の前に、1 つのチベット語スパンをグリフ ID にシェーピングします
_GSUBResolveIndicScriptフォントで利用可能な Openタイプ のインド系(Indic)スクリプトタグを選択します。存在する場合は v2 スクリプトタグを優先します
_IndicShapeSyllableToGIDs並べ替えられた 1 つの音節(syllable)にインド系の GSUB 機能チェーンを適用し、グリフ ID を返します

関連項目