PDFium Delphi Component Docs

InsertFormObjectFromXObject Метод

Компонент: TPdf  ·  Модуль: PDFium
Вставляет ОДНУ копию страницы, упакованной в TPdfXObject, на текущую страницу этого документа, возвращая FPDF_PAGEOBJECT, чтобы вызывающий код мог позиционировать, масштабировать и поворачивать ее

Syntax

function InsertFormObjectFromXObject(XObject: TPdfXObject): FPDF_PAGEOBJECT;

Description

InsertFormObjectFromXObject — вторая половина API повторного использования Form XObject из v1.25.0. Метод берёт дескриптор TPdfXObject (построенный CreateXObjectFromPage) и вставляет ОДИН FPDF_PAGEOBJECT, ссылающийся на этот XObject, на ТЕКУЩУЮ страницу ЭТОГО документа. Каждый вызов вставляет новый объект страницы, поэтому один и тот же XObject можно проштамповать много раз на разных страницах назначения — все штампы делят кэш содержимого страницы, что держит размер файла небольшим, даже если watermark / шаблон насыщенный

Возвращённый дескриптор FPDF_PAGEOBJECT позволяет вызывающему коду применить FPDFPageObj_SetMatrix или хелперы TPdfMatrix, чтобы позиционировать / масштабировать / поворачивать штамп в любом месте страницы. Без явной трансформации вставленная страница ляжет в левый нижний угол в масштабе 1:1, а это почти никогда не нужно; всегда задавайте матрицу до вызова UpdatePage

При неудаче возвращается nil (XObject равен nil, этот TPdf не Active, нет текущей страницы). После вставки объектом страницы владеет страница, а не XObject — освобождение XObject не делает вставленный объект страницы недействительным

Remarks

Example

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;

See Also

CreateXObjectFromPage, UpdatePage, PageNumber