function InsertFormObjectFromXObject(XObject: TPdfXObject): FPDF_PAGEOBJECT;
InsertFormObjectFromXObject é a segunda metade da API de reutilização de Form
XObject da v1.25.0. Ele recebe um handle TPdfXObject (construído
por CreateXObjectFromPage) e insere UM FPDF_PAGEOBJECT
que referencia esse XObject na página ATUAL deste documento. Cada
chamada insere um novo objeto de página, de modo que o mesmo XObject pode ser carimbado
várias vezes em várias páginas do destino —
cada carimbo compartilha o cache de conteúdo de página subjacente, o que mantém
o tamanho do arquivo baixo mesmo quando a marca d'água / o template é complexo.
O handle FPDF_PAGEOBJECT retornado permite ao chamador
chamar FPDFPageObj_SetMatrix ou os auxiliares de
TPdfMatrix para posicionar / escalar / girar o
carimbo em qualquer lugar da página. Sem uma transformação explícita, a
página inserida fica no canto inferior esquerdo em escala 1:1, o que quase
nunca é o desejado; sempre defina uma matriz antes de chamar
UpdatePage.
Retorna nil em caso de falha (XObject é nil, este TPdf
não está Active, não há página atual). Após a inserção, o objeto de página é
de propriedade da página, não do XObject — liberar o XObject
não invalida o objeto de página inserido.
PageNumber DESTE TPdf. Defina PageNumber primeiro e então chame InsertFormObjectFromXObject.UpdatePage após posicionar o carimbo para que o PDFium renderize novamente o fluxo de conteúdo da 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;