function GetObjectRenderedStrokePattern(Index: Integer): TBitmap;
| Index | Integer. 0 .. ObjectCount - 1 の範囲にある 0 基準のページオブジェクトインデックスです |
| Result | TBitmap. 新しく生成された、呼び出し側が所有し解放すべきビットマップです。オブジェクトがタイリングパターンでストロークしていない場合、ネイティブエクスポートが欠けている場合、レンダリングに失敗した場合は nil を返します |
ストロークのカラースペースが /Pattern で PatternType 1(タイリング)パターンを持つパスオブジェクトは、単色ではなく繰り返しセルで輪郭を塗ります。このメソッドはネイティブの FPDFPageObj_GetRenderedStrokePattern エクスポート経由でそのセルを単独でレンダリングするので、ページ全体をレンダリングしなくてもパターンを調査、エクスポート、プレビューできます
ネイティブ呼び出しの間はレンダーロックが保持されるため、同じコンポーネント上での同時レンダリングに対しても安全です。ネイティブのビットマップは返却前に変換と破棄が行われ、結果の TBitmap の所有者は呼び出し側です
この呼び出しには現在のページがアクティブであることが必要です。パス以外のオブジェクト、単色やシェーディングパターンでストロークされたパス、塗り専用のパターンは、いずれも例外ではなく nil を返します。理由を知りたい場合は PageObjectInfo や PathInfo を使ってください
coloured タイリングパターン(PaintType 1)はパターン自身の色でレンダリングされ、uncoloured パターン(PaintType 2)はコンテンツストリームが選択したストローク色でレンダリングされます
nil が返ったとき「パターンがない」のか「エクスポートがない」のかは、StrokePatternRenderingFeaturesAvailable で判別できます
var
I: Integer;
Bmp: TBitmap;
begin
for I := 0 to Pdf1.ObjectCount - 1 do
begin
Bmp := Pdf1.GetObjectRenderedStrokePattern(I);
if Bmp <> nil then
try
Bmp.SaveToFile(Format('stroke-pattern-%d.bmp', [I]));
finally
Bmp.Free;
end;
end;
end;