function InsertFormObjectFromXObject(XObject: TPdfXObject): FPDF_PAGEOBJECT;
InsertFormObjectFromXObject è la seconda metà dell'API di riuso dei Form
XObject della v1.25.0. Prende un handle TPdfXObject (costruito
da CreateXObjectFromPage) e inserisce UN oggetto FPDF_PAGEOBJECT
che referenzia quell'XObject nella pagina CORRENTE di QUESTO documento. Ogni
chiamata inserisce un nuovo oggetto di pagina, quindi lo stesso XObject può essere timbrato
più volte su più pagine della destinazione —
ogni timbro condivide la cache di contenuto pagina sottostante, il che mantiene
la dimensione del file bassa anche quando il watermark / template è elaborato
L'handle FPDF_PAGEOBJECT restituito permette al chiamante
di chiamare FPDFPageObj_SetMatrix o gli helper
TPdfMatrix per posizionare / scalare / ruotare il
timbro in qualsiasi punto della pagina. Senza una trasformazione esplicita la
pagina inserita sta nell'angolo in basso a sinistra a scala 1:1, cosa che è
quasi mai quello che vuoi; imposta sempre una matrice prima di chiamare
UpdatePage
Restituisce nil in caso di fallimento (XObject nil, questo TPdf
non Active, nessuna pagina corrente). Dopo l'inserimento l'oggetto di pagina è
di proprietà della pagina, non dell'XObject — liberare l'XObject
non invalida l'oggetto di pagina inserito
PageNumber di QUESTO TPdf. Imposta prima PageNumber, poi chiama InsertFormObjectFromXObjectUpdatePage dopo aver posizionato il timbro così PDFium ri-renderizza il content stream della pagina
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;