function InsertFormObjectFromXObject(XObject: TPdfXObject): FPDF_PAGEOBJECT;
InsertFormObjectFromXObject es la segunda mitad de la API de reutilización de Form XObject de la v1.25.0. Toma un manejador TPdfXObject (construido por CreateXObjectFromPage) e inserta UN FPDF_PAGEOBJECT que referencia ese XObject en la página ACTUAL de ESTE documento. Cada llamada inserta un objeto de página nuevo, así que el mismo XObject puede estamparse múltiples veces en múltiples páginas del destino — cada estampa comparte la caché subyacente de contenido de página, lo que mantiene pequeño el tamaño del archivo incluso cuando la marca de agua / plantilla es compleja
El manejador FPDF_PAGEOBJECT devuelto permite al llamador invocar FPDFPageObj_SetMatrix o los ayudantes de TPdfMatrix para posicionar / escalar / rotar la estampa en cualquier lugar de la página. Sin una transformación explícita, la página insertada queda en la esquina inferior izquierda a escala 1:1, que casi nunca es lo que se quiere; establezca siempre una matriz antes de llamar a UpdatePage
Devuelve nil en caso de fallo (XObject es nil, este TPdf no está Active, no hay página actual). Tras la inserción, el objeto de página pertenece a la página, no al XObject — liberar el XObject no invalida el objeto de página insertado
PageNumber de ESTE TPdf. Establezca primero PageNumber y luego llame a InsertFormObjectFromXObjectUpdatePage después de posicionar la estampa para que PDFium vuelva a renderizar el flujo de contenido de la página
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;