function InsertFormObjectFromXObject(XObject: TPdfXObject): FPDF_PAGEOBJECT;
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 を解放しても、挿入済みのページオブジェクトは無効になりません
PageNumber で決まります。先に PageNumber を設定してから InsertFormObjectFromXObject を呼んでくださいUpdatePage を呼び、PDFium にページの content stream を再描画させてください
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;