PDFium Component Docs

CreateXObjectFromPage methode

Component: TPdf  ·  Unit: PDFium
Pakt een pagina van een andere TPdf in als een herbruikbare Form-XObject-handle die een willekeurig aantal keren in dit document kan worden gestempeld

Syntax

function CreateXObjectFromPage(
  Source : TPdf;
  SourcePageIndex: Integer): TPdfXObject;

Description

CreateXObjectFromPage produceert een herbruikbare handle die de ene TPdf een pagina van een ANDERE TPdf laat hergebruiken als stempel, watermerk of sjabloonoverlay. Intern pakt het PDFium's FPDF_NewXObjectFromPage in en produceert het een TPdfXObject Pascal-object dat de onderliggende FPDF_XOBJECT-handle automatisch sluit in zijn destructor, waardoor handmatige FPDF_CloseXObject-verplichting verdwijnt.

Combineer het met InsertFormObjectFromXObject om daadwerkelijk één instantie van de verpakte pagina in de huidige pagina van dit document te plaatsen. Elke aanroep voegt een verse FPDF_PAGEOBJECT in die kan worden gepositioneerd, geschaald en geroteerd via FPDFPageObj_SetMatrix en de TPdfMatrix-hulpmiddelen — zodat hetzelfde XObject op meerdere formaten / rotaties / posities over veel pagina's kan worden geplaatst terwijl één pagina-inhoudscache wordt gedeeld.

Geeft nil terug bij mislukking (Source niet Active, ongeldige SourcePageIndex, OOM). Geeft EPdfError wanneer Source nil is of niet Active is.

De aanroeper is eigenaar van de teruggegeven TPdfXObject en MOET deze vrijgeven voordat DEZE TPdf wordt gesloten. De destructor roept FPDF_CloseXObject aan, dat de handle netjes van deze TPdf ontkoppelt. Na invoegen is het in de pagina ingevoegde paginaobject in eigendom van de pagina, niet van het XObject — het sluiten van het XObject maakt reeds ingevoegde paginaobjecten niet ongeldig.

Remarks

Example

uses FPdfMatrix;

var
  Watermark: TPdf;
  XObj: TPdfXObject;
  PageObj: FPDF_PAGEOBJECT;
  M: TPdfMatrix;
  I: Integer;
begin
  Watermark := TPdf.Create(nil);
  try
    Watermark.FileName := 'C:\Confidential.pdf';
    Watermark.Active := True;
    XObj := Pdf1.CreateXObjectFromPage(Watermark, 0);
    try
      for I := 1 to Pdf1.PageCount do
      begin
        Pdf1.PageNumber := I;
        PageObj := Pdf1.InsertFormObjectFromXObject(XObj);
        if PageObj = nil then Continue;
        M := TPdfMatrix.Create;
        try
          M.Translate(100, 200);
          M.Scale(0.5, 0.5);
          FPDFPageObj_SetMatrix(PageObj, M.AsMatrix);
        finally
          M.Free;
        end;
        Pdf1.UpdatePage;
      end;
    finally
      XObj.Free;
    end;
  finally
    Watermark.Free;
  end;
end;

See Also

InsertFormObjectFromXObject, ImportPagesByIndex, AddPicture