PDFium Component Docs

CreateXObjectFromPage method

Component: TPdf  ·  Unit: PDFium
Membungkus halaman dari TPdf lain sebagai handle Form XObject yang dapat digunakan ulang dan dicap ke dokumen ini berkali-kali

Syntax

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

Description

CreateXObjectFromPage memproduksi handle yang dapat digunakan ulang yang memungkinkan satu TPdf memakai ulang halaman dari TPdf LAIN sebagai cap, watermark, atau overlay template. Secara internal ini membungkus FPDF_NewXObjectFromPage milik PDFium dan menghasilkan objek Pascal TPdfXObject yang menutup handle FPDF_XOBJECT yang mendasari secara otomatis di destruktor-nya, menghilangkan upacara FPDF_CloseXObject manual

Padukan dengan InsertFormObjectFromXObject untuk benar-benar menjatuhkan satu instance halaman yang dibungkus ke halaman saat ini dari dokumen ini. Tiap panggilan menyisipkan FPDF_PAGEOBJECT baru yang dapat diposisikan, diskalakan, dan diputar melalui FPDFPageObj_SetMatrix dan helper TPdfMatrix — sehingga XObject yang sama dapat ditempatkan pada beberapa ukuran / rotasi / posisi di banyak halaman sambil berbagi satu cache konten-halaman

Mengembalikan nil saat kegagalan (Source tidak Active, SourcePageIndex tidak valid, OOM). Memunculkan EPdfError ketika Source bernilai nil atau tidak Active

Pemanggil memiliki TPdfXObject yang dikembalikan dan HARUS membebaskannya sebelum TPdf INI ditutup. Destruktor memanggil FPDF_CloseXObject, yang melepaskan handle dari TPdf ini dengan bersih. Setelah penyisipan, objek halaman yang disisipkan ke halaman dimiliki oleh halaman, bukan oleh XObject — menutup XObject tidak membatalkan objek halaman yang sudah disisipkan

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