function GetObjectRenderedStrokePattern(Index: Integer): TBitmap;
| Index | Integer。范围 0 .. ObjectCount - 1 内基于 0 的页面对象索引 |
| Result | TBitmap。新建的位图,由调用方持有并负责释放;对象没有用平铺图案描边、缺少原生导出或渲染失败时返回 nil |
描边色彩空间为 /Pattern 且图案为 PatternType 1(tiling)的路径对象,其轮廓不是用单一颜色、而是用重复的图案单元绘制的。本方法通过原生 FPDFPageObj_GetRenderedStrokePattern 导出单独渲染这个单元,调用方无需渲染整页即可检查、导出或预览该图案
原生调用期间会持有渲染锁,因此在同一组件上并发渲染是安全的。原生位图在返回前完成转换并销毁;得到的 TBitmap 归调用方所有
调用要求当前页处于激活状态。非路径对象、用普通颜色或 shading 图案描边的路径,以及仅用于填充的图案,都返回 nil 而不是抛出异常;具体原因可通过 PageObjectInfo 或 PathInfo 查明
彩色平铺图案(PaintType 1)用它自身的颜色渲染;无色图案(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;