PDFium Delphi Component Docs

InsertFormObjectFromXObject メソッド

コンポーネント: TPdf  ·  ユニット: PDFium
TPdfXObject で包まれた page の copy を 1 つだけこの document の current page へ挿入し、呼び出し側が position / scale / rotate できるように FPDF_PAGEOBJECT を返します

Syntax

function InsertFormObjectFromXObject(XObject: TPdfXObject): FPDF_PAGEOBJECT;

Description

InsertFormObjectFromXObject は v1.25.0 の Form XObject 再利用 API の後半です。CreateXObjectFromPage で作った TPdfXObject ハンドルを受け取り、その XObject を参照する FPDF_PAGEOBJECT を 1 つ、このドキュメントの現在ページへ挿入します。呼び出しごとに新しいページオブジェクトが挿入されるため、同じ XObject を destination の複数ページに何度でも stamp できます。stamp のすべてが基底のページコンテンツキャッシュを共有するため、watermark / テンプレートを多用してもファイルサイズは小さく保たれます

返される FPDF_PAGEOBJECT ハンドルにより、呼び出し側は FPDFPageObj_SetMatrix や TPdfMatrix ヘルパーで、ページ上の任意の位置への配置 / 拡大 / 回転を行えます。明示的な変換がない場合、挿入されたページは 1:1 の拡大率で左下の角に置かれますが、それで構わないことはまずありません。UpdatePage を呼ぶ前に必ずマトリックスを設定してください

失敗時は nil を返します(XObject が nil、この TPdf が Active でない、現在ページがない)。挿入後、ページオブジェクトの所有者は XObject ではなくページです。XObject を解放しても、挿入済みのページオブジェクトは無効になりません

Remarks

Example

uses FPdfMatrix;

var
  PageObj: FPDF_PAGEOBJECT;
  M: TPdfMatrix;
begin
  Pdf1.PageNumber := 3;
  PageObj := Pdf1.InsertFormObjectFromXObject(XObj);
  if PageObj <> nil then
  begin
    M := TPdfMatrix.Create;
    try
      M.Translate(100, 200);
      M.Scale(0.5, 0.5);
      M.Rotate(15);
      FPDFPageObj_SetMatrix(PageObj, M.AsMatrix);
    finally
      M.Free;
    end;
    Pdf1.UpdatePage;
  end;
end;

See Also

CreateXObjectFromPage, UpdatePage, PageNumber