function InsertFormObjectFromXObject(XObject: TPdfXObject): FPDF_PAGEOBJECT;
InsertFormObjectFromXObject är den andra halvan av Form-
XObject-återanvändnings-API:et från v1.25.0. Den tar ett
TPdfXObject-handtag (byggt av
CreateXObjectFromPage) och infogar EN FPDF_PAGEOBJECT
som refererar till det XObject:et i DETTA dokuments AKTUELLA sida.
Varje anrop infogar ett nytt sidobjekt, så samma XObject kan stämplas
flera gånger över flera sidor i målet — varje stämpel delar den
underliggande sidinnehållscachen, vilket håller nere filstorleken även
när vattenstämpeln / mallen är detaljrik
Det returnerade FPDF_PAGEOBJECT-handtaget låter anroparen
anropa FPDFPageObj_SetMatrix eller hjälpmedlen
TPdfMatrix för att positionera / skala / rotera stämpeln
var som helst på sidan. Utan en explicit transform placeras den
infogade sidan i nedre vänstra hörnet i skala 1:1, vilket nästan
aldrig är vad man vill; sätt alltid en matris innan
UpdatePage anropas
Returnerar nil vid misslyckande (XObject är nil, denna
TPdf är inte Active, ingen aktuell sida). Efter infogningen ägs
sidobjektet av sidan, inte av XObject:et — att frigöra XObject:et
ogiltigförklarar inte det infogade sidobjektet
PageNumber. Sätt PageNumber först och anropa sedan InsertFormObjectFromXObjectUpdatePage efter att stämpeln positionerats, så att PDFium renderar om sidans innehållsström
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;