property ObjectType[Index: Integer]: TObjectType; // read only
| Index | 0 基準の page-object インデックス。範囲は 0 から ObjectCount - 1 |
ObjectType は、Index の page object の種類を表す TObjectType 列挙値を返します:
otText — テキスト表示オペレーター(Tj、TJ、'、")。同じフォントと text matrix を共有するグリフの run ですotPath — ベクターパス: 線、曲線、矩形、塗り。ObjectBounds でページ上の rectangle を取得しますotImage — ラスター画像。ピクセルを取り出すには ObjectBitmap と組み合わせますotShading — グラデーションや関数ベースの shading パターン(PDF の axial/radial/coon shading)otForm — form XObject: テキスト、パス、画像を自分自身に含み得る再利用可能なサブストリームです分類は安定していて安価です。ObjectCount を密なループで回すのは、より高コストなアクセサー(ObjectBitmap、ObjectBounds、文字プロパティ)をどれで呼ぶか決める前の、ページコンテンツのトリアージの定石です
このプロパティは form XObject を再帰的に展開しません。タイプは otForm を報告するだけなので、リーフレベルのコンテンツが必要なら、呼び出し側で form 自身のオブジェクトリストへ降りてください
// Histogram of object types on the current page
var
I: Integer;
Counts: array[TObjectType] of Integer;
T: TObjectType;
begin
FillChar(Counts, SizeOf(Counts), 0);
for I := 0 to Pdf.ObjectCount - 1 do
Inc(Counts[Pdf.ObjectType[I]]);
for T := Low(TObjectType) to High(TObjectType) do
Memo1.Lines.Add(Format('%s: %d', [GetEnumName(TypeInfo(TObjectType), Ord(T)), Counts[T]]));
end;