function InsertFormObjectFromXObject(XObject: TPdfXObject): FPDF_PAGEOBJECT;
InsertFormObjectFromXObject est la seconde moitié de l’API de réutilisation des Form XObjects de la v1.25.0. Elle prend un handle TPdfXObject (construit par CreateXObjectFromPage) et insère un FPDF_PAGEOBJECT qui référence cet XObject dans la PAGE COURANTE de CE document. Chaque appel insère un nouvel objet de page, de sorte que le même XObject peut être tamponné plusieurs fois sur plusieurs pages de la destination — chaque tampon partage le cache de contenu de page sous-jacent, ce qui réduit la taille du fichier même lorsque le filigrane / modèle est chargé
Le handle FPDF_PAGEOBJECT renvoyé permet à l’appelant d’appeler FPDFPageObj_SetMatrix ou les aides TPdfMatrix pour positionner / mettre à l’échelle / faire pivoter le tampon n’importe où sur la page. Sans transformation explicite, la page insérée se trouve dans le coin inférieur gauche à l’échelle 1:1, ce qui n’est presque jamais ce que vous voulez ; définissez toujours une matrice avant d’appeler UpdatePage
Returns nil en cas d’échec (XObject nil, ce TPdf n’est pas Active, aucune page courante). Après insertion, l’objet page appartient à la page, et non à l’XObject — libérer l’XObject n’invalide pas l’objet page inséré
PageNumber de CE TPdf. Définissez d’abord PageNumber, puis appelez InsertFormObjectFromXObjectUpdatePage après le positionnement de l’estampille afin que PDFium re-rende le flux de contenu de page
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;