PDFiumPas 文件

GetImageObjectRenderedBitmap 方法

元件: TPdf  ·  單元: PDFium
單獨渲染一個影像頁面物件,並將解碼後的像素以呼叫端持有的點陣圖傳回

Syntax

function GetImageObjectRenderedBitmap(Index: Integer): TBitmap;

IndexInteger。影像頁面物件的自零起算索引,範圍為 0 .. ObjectCount - 1。其他類型的物件會引發 EPdfErrorImage object required
ResultTBitmap。新建立的點陣圖,由呼叫端持有且必須釋放;原生呼叫未產生點陣圖時為 nil

Description

透過原生渲染器(FPDFImageObj_GetRenderedBitmap)只渲染該影像物件,並套用其目前的矩陣、色彩空間與遮罩 — 結果呈現的方式與頁面呈現影像的方式一致,包括軟遮罩、鏤空鍵與色彩轉換,而透過 Image 取得的原始取樣資料並不包含這些效果

原生呼叫期間會持有渲染鎖,因此對同一元件上的並行渲染是安全的。原生點陣圖會在傳回前完成轉換與銷毀;產生的 TBitmap 屬於呼叫端

此呼叫要求目前頁面處於作用中狀態、Index 位置的物件類型為 otImage(請檢查 ObjectType),且 PDFium 建置有匯出逐影像渲染進入點;否則會引發 EPdfErrorRendered image object bitmaps are not available

結果為 nil 並不是中止條件:當原生呼叫沒有產生點陣圖時,呼叫端可以退而求其次,用 ObjectBounds 提供的邊界裁切整頁渲染結果

Remarks

Example

var
  Bmp: TBitmap;
begin
  if Pdf1.ObjectType[7] = otImage then
  begin
    Bmp := Pdf1.GetImageObjectRenderedBitmap(7);
    if Bmp <> nil then
      try
        Image1.Picture.Bitmap.Assign(Bmp);
        // use Bmp for export, comparison or recognition
      finally
        Bmp.Free;
      end;
  end;
end;

See Also

GetTextObjectRenderedBitmap, ObjectBitmap, ObjectType, ObjectBounds, ImageInfo