function InsertFormObjectFromXObject(XObject: TPdfXObject): FPDF_PAGEOBJECT;
InsertFormObjectFromXObject 是 v1.25.0 Form
XObject 重用 API 的后半部分。它接受一个 TPdfXObject 句柄(由
CreateXObjectFromPage 构建),并将一个引用该 XObject 的 FPDF_PAGEOBJECT
插入本文档的当前页面。每次
调用都会插入一个新的页面对象,因此同一个 XObject 可以在目标的多个页面上盖印
多次 —
每次盖印都共享底层页面内容缓存,即使水印 / 模板很密集也能
控制文件大小
返回的 FPDF_PAGEOBJECT 句柄允许调用方
调用 FPDFPageObj_SetMatrix 或
TPdfMatrix 辅助工具在页面上任意位置定位 / 缩放 / 旋转
图章。没有显式变换时,
插入的页面以 1:1 比例位于左下角,这
几乎从来不是你想要的;务必在调用
UpdatePage 之前设置矩阵
失败时返回 nil(XObject 为 nil、此 TPdf
未 Active、没有当前页)。插入后,页面对象
由页面拥有,而非 XObject — 释放 XObject
不会使插入的页面对象失效
PageNumber 标识。先设置 PageNumber,然后调用 InsertFormObjectFromXObjectUpdatePage,使 PDFium 重新渲染页面内容流
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;