function GetObjectRenderedStrokePattern(Index: Integer): TBitmap;
| Index | Integer. Индекс объекта страницы с отсчётом от нуля в диапазоне 0 .. ObjectCount - 1 |
| Result | TBitmap. Созданный bitmap, которым владеет вызывающий код и который нужно освободить, или nil, когда объект не обводится tiling pattern, нативный экспорт отсутствует или рендеринг не удался |
Объект-путь, у которого цветовое пространство обводки — /Pattern с шаблоном PatternType 1 (tiling), рисует свой контур повторяющейся ячейкой, а не сплошным цветом. Этот метод отрисовывает такую ячейку отдельно через нативный экспорт FPDFPageObj_GetRenderedStrokePattern, поэтому вызывающий код может изучить, экспортировать или показать узор, не рендеря всю страницу
На время нативного вызова удерживается блокировка рендеринга, так что вызов безопасен при конкурентной отрисовке на том же компоненте. Нативный bitmap конвертируется и уничтожается до возврата; полученный TBitmap принадлежит вызывающему коду
Для вызова текущая страница должна быть активна. Объекты, не являющиеся путями, пути с обводкой сплошным цветом или shading-шаблоном, а также шаблоны только для заливки возвращают nil вместо исключения; разобраться, почему так, помогут PageObjectInfo или PathInfo
Цветные tiling pattern (PaintType 1) отрисовываются собственными цветами; бесцветные (PaintType 2) — цветом обводки, который выбрал поток содержимого
nil «нет узора» или «нет экспорта»
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;