PDFium Delphi Component Docs

CreateXObjectFromPage الطريقة

Component: TPdf  ·  Unit: PDFium
يلف صفحة من TPdf آخر كمقبض Form XObject قابل لإعادة الاستخدام يمكن ختمه في هذا المستند أي عدد من المرات

Syntax

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

Description

تصنع الدالة CreateXObjectFromPage مقبضًا قابلًا لإعادة الاستخدام يمكّن TPdf واحدًا من إعادة استخدام صفحة من TPdf آخر بوصفها ختمًا أو علامة مائية أو تراكب قالب. وداخليًا تغلف FPDF_NewXObjectFromPage من PDFium وتنتج كائن Pascal من TPdfXObject يغلق مقبض FPDF_XOBJECT الأساسي تلقائيًا في المدمّر، بما يغني عن طقوس FPDF_CloseXObject اليدوية.

ارنها مع InsertFormObjectFromXObject لإسقاط نسخة واحدة من الصفحة المغلفة فعلًا داخل الصفحة الحالية من هذا المستند. وكل استدعاء يدرج FPDF_PAGEOBJECT جديدًا يمكن تموضعه وتحجيمه وتدويره عبر FPDFPageObj_SetMatrix ومساعدات TPdfMatrix — فيمكن وضع XObject نفسه بأحجام / تدويرات / مواضع متعددة عبر صفحات كثيرة مع مشاركة ذاكرة مؤقتة واحدة لمحتوى الصفحة.

تُرجع nil عند الفشل (Source غير نشطة أو SourcePageIndex غير صالح أو OOM). وترفع EPdfError عندما تكون Source تساوي nil أو غير Active.

المستدعي يملك TPdfXObject المُرجَع وعليه واجب تحريره قبل إغلاق TPdf هذه. ويستدعي المدمّر FPDF_CloseXObject الذي يفصل المقبض عن TPdf هذه بأمان. وبعد الإدراج يصبح كائن الصفحة المدرج في الصفحة مملوكًا للصفحة لا للـ XObject — فإغلاق XObject لا يبطل كائنات الصفحة المدرجة سابقًا.

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