TPdfXObject na bieżącą stronę tego dokumentu, zwracając FPDF_PAGEOBJECT, aby wywołujący mógł ją pozycjonować / skalować / obracaćfunction InsertFormObjectFromXObject(XObject: TPdfXObject): FPDF_PAGEOBJECT;
InsertFormObjectFromXObject to druga połowa API ponownego użycia Form XObject w wersji v1.25.0 Przyjmuje uchwyt TPdfXObject utworzony przez CreateXObjectFromPage i wstawia JEDEN FPDF_PAGEOBJECT, który odwołuje się do tego XObjectu, na BIEŻĄCĄ stronę tego dokumentu Każde wywołanie wstawia nowy obiekt strony, więc ten sam XObject może zostać użyty wielokrotnie na wielu stronach docelowych — każde umieszczenie współdzieli bazową pamięć podręczną zawartości strony, co utrzymuje rozmiar pliku nisko nawet wtedy, gdy znak wodny / szablon jest złożony
Zwrócony uchwyt FPDF_PAGEOBJECT pozwala wywołującemu użyć FPDFPageObj_SetMatrix albo pomocniczych funkcji TPdfMatrix, aby pozycjonować / skalować / obracać znacznik w dowolnym miejscu strony Bez jawnej transformacji wstawiona strona ląduje w lewym dolnym rogu w skali 1:1, co prawie nigdy nie jest pożądane; przed wywołaniem UpdatePage zawsze ustaw macierz
Zwraca nil w razie niepowodzenia (XObject ma wartość nil, ten TPdf nie jest aktywny, brak bieżącej strony) Po wstawieniu obiekt strony jest własnością strony, a nie XObjectu — zwolnienie XObjectu nie unieważnia wstawionego obiektu strony
PageNumber tego TPdf Najpierw ustaw PageNumber, a potem wywołaj InsertFormObjectFromXObjectUpdatePage, aby PDFium ponownie wyrenderował strumień zawartości stronyFPDF_PAGEOBJECT w N strumieniach zawartości strony, wszystkie wskazujące na jedną definicję XObjectu — to znacznie tańsze niż kopiowanie bazowej zawartości N razy
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;