PDFium Delphi Component Docs

CreateXObjectFromPage Metod

Component: TPdf  ·  Unit: PDFium
Omsluter en sida från en annan TPdf som ett återanvändbart Form XObject-handtag som kan stämplas in i detta dokument hur många gånger som helst.

Syntax

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

Description

CreateXObjectFromPage tillverkar ett återanvändbart handtag som låter en TPdf återanvända en sida från en ANNAN TPdf som stämpel, vattenmärke eller mallöverlagring. Internt omsluter den PDFiums FPDF_NewXObjectFromPage och producerar ett TPdfXObject Pascal-objekt som stänger det underliggande FPDF_XOBJECT-handtaget automatiskt i sin destruktor, vilket eliminerar manuell FPDF_CloseXObject-ceremoni

Kombinera den med InsertFormObjectFromXObject för att faktiskt släppa ner en instans av den omslutna sidan på detta dokuments aktuella sida. Varje anrop infogar ett färskt FPDF_PAGEOBJECT som kan positioneras, skalas och roteras via FPDFPageObj_SetMatrix och TPdfMatrix-hjälparna — så samma XObject kan placeras med flera storlekar / rotationer / positioner över många sidor samtidigt som den delar en enda sidinnehållscache

Returnerar nil vid fel (Source inte Active, ogiltigt SourcePageIndex, OOM). Utlöser EPdfError när Source är nil eller inte Active

Anroparen äger det returnerade TPdfXObject och MÅSTE frigöra det innan DENNA TPdf stängs. Destruktorn anropar FPDF_CloseXObject, som lossar handtaget från denna TPdf rent. Efter infogningen ägs sidobjektet som infogats i sidan av sidan, inte av XObjectet — att stänga XObjectet ogiltigförklarar inte redan infogade sidobjekt

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