function InsertFormObjectFromXObject(XObject: TPdfXObject): FPDF_PAGEOBJECT;
InsertFormObjectFromXObject는 v1.25.0 Form XObject 재사용 API의 나머지 절반입니다. CreateXObjectFromPage로 만든 TPdfXObject 핸들을 받아, 그 XObject를 참조하는 FPDF_PAGEOBJECT 하나를 이 문서의 현재 page에 삽입합니다. 호출할 때마다 새 page object가 추가되므로 같은 XObject를 대상의 여러 page에 여러 번 찍을 수 있으며, 각 찍힌 개체는 같은 page-content cache를 공유하므로 watermark / template가 복잡해도 file size가 줄어듭니다
반환된 FPDF_PAGEOBJECT 핸들을 사용하면 caller가 FPDFPageObj_SetMatrix 또는 TPdfMatrix helper로 stamp의 위치 / 크기 / 회전을 page 어디에나 맞출 수 있습니다. 명시적 transform이 없으면 삽입된 page는 왼쪽 아래 모서리에 1:1 scale로 놓이는데, 보통 원하는 결과는 아니므로 UpdatePage를 호출하기 전에 항상 matrix를 설정하세요
실패하면 nil을 반환합니다(XObject가 nil이거나, 이 TPdf가 Active가 아니거나, current page가 없을 때). 삽입 후에는 page object의 소유권이 XObject가 아니라 page에 있으므로, XObject를 free해도 삽입된 page object는 무효화되지 않습니다
PageNumber로 식별됩니다. 먼저 PageNumber를 설정한 다음 InsertFormObjectFromXObject를 호출하세요UpdatePage를 호출해 PDFium이 page 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;