PDFium Delphi Component Docs

CreateXObjectFromPage Méthode

Composant: TPdf  ·  Unit: PDFium
Enveloppe une page d’un autre TPdf comme handle Form XObject réutilisable qui peut être estampillé dans ce document un nombre quelconque de fois

Syntax

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

Description

CreateXObjectFromPage fabrique un handle réutilisable qui permet à un TPdf de réutiliser une page d’un AUTRE TPdf comme estampille, filigrane ou superposition de modèle. En interne, il enveloppe FPDF_NewXObjectFromPage de PDFium et produit un objet Pascal TPdfXObject qui ferme automatiquement le handle FPDF_XOBJECT sous-jacent dans son destructeur, éliminant la cérémonie manuelle FPDF_CloseXObject

Associez-le à InsertFormObjectFromXObject pour déposer une instance de la page enveloppée dans la page courante de ce document. Chaque appel insère un FPDF_PAGEOBJECT frais qui peut être positionné, mis à l’échelle et pivoté via FPDFPageObj_SetMatrix et les aides TPdfMatrix — de sorte que le même XObject puisse être placé à plusieurs tailles / rotations / positions sur de nombreuses pages tout en partageant un seul cache de contenu de page

Renvoie nil en cas d’échec (Source non Active, SourcePageIndex invalide, OOM). Lève EPdfError lorsque Source est nil ou non Active

L’appelant possède le TPdfXObject renvoyé et DOIT le libérer avant la fermeture de CE TPdf. Le destructeur appelle FPDF_CloseXObject, qui détache proprement le handle de ce TPdf. Après insertion, l’objet de page inséré dans la page est possédé par la page, pas par l’XObject — fermer l’XObject n’invalide pas les objets de page déjà insérés

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