function InsertFormObjectFromXObject(XObject: TPdfXObject): FPDF_PAGEOBJECT;
Az InsertFormObjectFromXObject a v1.25.0-s Form XObject újrahasznosító
API második fele. Egy TPdfXObject leírót vesz át (amelyet a
CreateXObjectFromPage épít fel), és egy olyan FPDF_PAGEOBJECT
oldalobjektumot szúr be, amely erre az XObject objektumra hivatkozik, az
ADOTT dokumentum AKTUÁLIS oldalára. Minden hívás új oldalobjektumot
szúr be, így ugyanaz az XObject többször is bélyegezhető a cél
több oldalára — minden bélyeg megosztja az alapul szolgáló
oldaltartalom-gyorsítótárat, ami még forgalmas vízjel vagy sablon
esetén is kicsiben tartja a fájlméretet
A visszaadott FPDF_PAGEOBJECT leíróval a hívó
meghívhatja az FPDFPageObj_SetMatrix hívást vagy a
TPdfMatrix segédeit, hogy a bélyeget az oldal bármely
pontjára pozicionálja / skálázza / elforgassa. Explicit transzformáció nélkül
a beillesztett oldal az 1:1 skálájú bal alsó sarokba kerül, ami
szinte soha nem az, amit szeretne; mindig állítson be mátrixot, mielőtt
meghívja az UpdatePage metódust
Hiba esetén nil értéket ad vissza (az XObject nil, ez a TPdf
nem aktív, nincs aktuális oldal). A beillesztés után az oldalobjektum
tulajdonosa az oldal, nem az XObject — az XObject felszabadítása
nem érvényteleníti a beillesztett oldalobjektumot
PageNumber tulajdonsága alapján azonosul. Először állítsa be a PageNumber értékét, majd hívja az InsertFormObjectFromXObject metódustUpdatePage metódust, hogy a PDFium újrarenderelje az oldal tartalomstreamjét
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;