PDFium Delphi Component Docs

高度なページコンテンツ API

コンポーネント: TPdf  ·  ユニット: PDFium
アプリケーションに PDFium ハンドルやビットマップバッファの管理を求めることなく、ネイティブなページコンテンツを検査・編集します

ページオブジェクト検査

PageObjectInfo は、ハンドル、オブジェクト型、通常および回転後の境界、実効マトリックス、アクティブ状態、透過性、塗りと線の色、アルファ値、線幅、線接合、線端、破線配列、破線位相を含む 1 つの TPdfPageObjectInfo スナップショットを返します

HasRotatedBounds、HasActiveState、その他の Has* フィールドは、利用できないネイティブ値と有効なゼロ値を区別します

RotatedBounds は回転後の四角形を保持し、HasLineJoin と HasLineCap は接合と端点のスタイルの有無を示し、DashPhase は破線パターンの開始位置をオフセットします

ページオブジェクトの一括編集

Info := Pdf1.PageObjectInfo(0);
Info.StrokeWidth := 4;
SetLength(Info.DashArray, 2);
Info.DashArray[0] := 8;
Info.DashArray[1] := 4;
Pdf1.UpdatePageObject(0, Info, [pocStrokeWidth, pocDashPattern]);

UpdatePageObject は選択されたすべてのフィールドを同じネイティブオブジェクトに適用し、ページコンテンツを 1 回だけ再生成します

TransformPageObject はアフィン FS_MATRIX を選択されたオブジェクトと合成します

パス、クリップパス、Form XObject

コンテンツマーク、グリフ、ネイティブオブジェクトヘルパ

文字検査とインデックスマッピング

CharacterInfo は塗りと線の色、フォント名、PDF フォントフラグ、ルーズなグリフ境界、実効マトリックス、および関連するテキストオブジェクトのハンドルを返します

CharacterIndexToTextIndex と TextIndexToCharacterIndex は、PDFium の文字インデックスと生成されたテキストストリームのインデックスの間を相互変換します

注釈境界線とアピアランスストリーム

TPdfAnnotation は HasBorder、BorderHorizontalRadius、BorderVerticalRadius、BorderWidth を通じて境界線の半径と幅を公開します

色の対応範囲は ColorAlpha、InteriorColor、InteriorColorAlpha に及びます。マークアップメタデータは HasAuthor、HasName、HasSubject、HasModificationDate、HasCreationDate、HasIcon で判定され、インクジェスチャ、四分点ジオメトリ、リンクターゲットは InkList、HasAttachmentPoints、HasLinkUri、LinkUri で公開されます

通常、ロールオーバー、押下の各アピアランスストリームは、HasAppearanceNormal、HasAppearanceRollover、HasAppearanceDown のセンチネルと、それに対応する AppearanceNormal、AppearanceRollover、AppearanceDown の各文字列を通じて利用できます

注釈の読み込み時、これらのセンチネルは空でないアピアランスコンテンツを識別します。ネイティブ API はストリームが存在しない場合と空の場合に同じ空文字列を返すため、どちらも False と報告され、レコードの書き戻し時には変更されずに残ります。空のアピアランスを書き込みたいときは、センチネルに明示的に True を設定できます

更新した注釈レコードを Annotation[Index] に代入し直すと、選択した境界またはアピアランスの値が書き込まれます

ネイティブライブラリ、注釈、フォームの診断

サムネイルとアフィンページ変換

マトリックスレンダリング

Matrix.a := 0.5;
Matrix.b := 0;
Matrix.c := 0;
Matrix.d := -0.5;
Matrix.e := 0;
Matrix.f := 421;
Clip.Left := 0;
Clip.Top := 0;
Clip.Right := 300;
Clip.Bottom := 421;
Bitmap := Pdf1.RenderPageWithMatrix(300, 421, Matrix, Clip);

RenderPageWithMatrix は可逆な FS_MATRIX とデバイス座標でのクリッピング矩形を受け取ります

呼び出し側所有の TBitmap を受け取るオーバーロードは、互換性のある 32 ビット DIB へ直接レンダリングし、外部 PDFium ビットマップを作成できない場合にのみ 1 回のコピーへフォールバックします

マトリックスレンダリングは、レンダリングフラグで選択されたページコンテンツと非対話の注釈を描画しますが、フォームフィルオーバーレイレンダラーは呼び出しません