property BitmapCount: Integer; // read only
BitmapCount возвращает количество объектов-изображений на текущей активной странице
(спецификация PDF 1.7, раздел 8.9). Оно дополняется индексатором Bitmap[Index],
который декодирует лежащий в основе поток изображения в полностью отрисованный Delphi
TBitmap (32-битный RGBA, готовый для Canvas.Draw, передачи
в буфер обмена или сохранения в PNG/BMP)
Значение равно 0, когда Active равно False, когда
PageNumber недействителен или когда страница не содержит объектов-изображений. Число
совпадает с ImageCount; два свойства различаются только типом возврата своих индексаторов — Image[Index] возвращает
запись TPdfImage, чьё Data содержит декодированный пиксельный буфер,
а RawData — всё ещё закодированный поток изображения, тогда как
Bitmap[Index] оборачивает этот буфер в управляемый VCL TBitmap,
принадлежащий вызывающей стороне
Типичный цикл — for I := 0 to Pdf.BitmapCount - 1 do с последующим обращением к
Pdf.Bitmap[I]. Каждое обращение выделяет новый TBitmap и копирует
пиксели — не вызывайте его в плотных циклах рендеринга; при повторном использовании кэшируйте
растровое изображение. Освобождайте каждый возвращённый bitmap по завершении, чтобы своевременно
освободить ресурсы GDI
TBitmapImageCount / Image[Index] избавляют от накладных расходов
на выделение GDI bitmap
var I: Integer;
var Bmp: TBitmap;
for I := 0 to Pdf1.BitmapCount - 1 do
begin
Bmp := Pdf1.Bitmap[I];
try
Bmp.SaveToFile(Format('image_%d.bmp', [I]));
finally
Bmp.Free;
end;
end;