function InsertFormObjectFromXObject(XObject: TPdfXObject): FPDF_PAGEOBJECT;
InsertFormObjectFromXObject is de tweede helft van de v1.25.0 Form XObject reuse API. Het neemt een TPdfXObject-handle (gemaakt door CreateXObjectFromPage) en voegt ÉÉN FPDF_PAGEOBJECT in die naar dat XObject verwijst op de HUIDIGE pagina van DIT document. Elke call voegt een nieuw page object in, zodat hetzelfde XObject meerdere keren over meerdere pagina's van de bestemming kan worden gestempeld — elke stamp deelt de onderliggende page-content cache, wat de file size klein houdt, zelfs wanneer de watermark / template druk is
De teruggegeven FPDF_PAGEOBJECT-handle laat de caller FPDFPageObj_SetMatrix of de TPdfMatrix-helpers aanroepen om de stamp overal op de pagina te positioneren / schalen / roteren. Zonder expliciete transform staat de ingevoegde pagina linksonder op 1:1 schaal, wat bijna nooit is wat je wilt; stel altijd een matrix in vóór je UpdatePage aanroept
Geeft nil terug bij falen (XObject is nil, deze TPdf is niet Active, geen huidige pagina). Na invoegen is het page object eigendom van de pagina, niet van het XObject — het freeen van het XObject maakt het ingevoegde page object niet ongeldig
PageNumber van DIT TPdf. Stel eerst PageNumber in en roep daarna InsertFormObjectFromXObject aanUpdatePage aan nadat je de stamp hebt gepositioneerd zodat PDFium de page content stream opnieuw rendertFPDF_PAGEOBJECT-referenties in N page content streams, allemaal wijzend naar één XObject-definitie — veel goedkoper dan de onderliggende content N keer kopiëren
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;