function InsertFormObjectFromXObject(XObject: TPdfXObject): FPDF_PAGEOBJECT;
InsertFormObjectFromXObject to druga połowa API ponownego użycia Form XObject wprowadzonego w v1.25.0. Pobiera uchwyt TPdfXObject (zbudowany przez CreateXObjectFromPage) i wstawia JEDEN FPDF_PAGEOBJECT przywołujący ten XObject do BIEŻĄCEJ strony TEGO dokumentu. Każde wywołanie wstawia nowy obiekt strony, więc ten sam XObject można ostemplować wielokrotnie na wielu stronach celu — każde ostemplowanie współdzieli bazową pamięć podręczną treści strony, co utrzymuje niski rozmiar pliku nawet przy rozbudowanym znaku wodnym / szablonie
Zwrócony uchwyt FPDF_PAGEOBJECT pozwala wywołującemu użyć FPDFPageObj_SetMatrix lub pomocników TPdfMatrix, aby pozycjonować / skalować / obracać stempel w dowolnym miejscu strony. Bez jawnej transformacji wstawiona strona ląduje w lewym dolnym narożniku w skali 1:1, co prawie nigdy nie jest tym, czego chcesz; zawsze ustaw macierz przed wywołaniem UpdatePage
Zwraca nil przy niepowodzeniu (XObject ma wartość nil, ten TPdf nie jest Active, brak bieżącej strony). Po wstawieniu obiekt strony należy do strony, a nie do XObjectu — zwolnienie XObjectu nie unieważnia wstawionego obiektu strony
PageNumber TEGO TPdf. Ustaw najpierw PageNumber, a dopiero potem wywołaj InsertFormObjectFromXObjectUpdatePage po pozycjonowaniu stempla, aby PDFium ponownie wyrenderował strumień treści strony
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;