PDFium Component Docs

CreateXObjectFromPage 메서드

이 API 항목은 식별자, 시그니처, 코드 블록, PDF 용어를 원래 형태로 유지합니다.
컴포넌트: TPdf  ·  유닛: PDFium
다른 TPdf의 page를 이 문서에 여러 번 찍어 넣을 수 있는 재사용 가능한 Form XObject handle로 감쌉니다

구문

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

설명

CreateXObjectFromPage는 한 TPdf가 다른 TPdf의 page를 stamp, watermark, template overlay로 재사용할 수 있게 해 주는 재사용 가능한 handle을 만듭니다. 내부적으로 PDFium의 FPDF_NewXObjectFromPage를 감싸며, 하위 FPDF_XOBJECT handle을 destructor에서 자동으로 닫는 TPdfXObject Pascal object를 생성해 수동 FPDF_CloseXObject 처리를 없앱니다

InsertFormObjectFromXObject와 함께 사용하면 감싼 page의 인스턴스 하나를 이 문서의 현재 page에 실제로 넣을 수 있습니다. 호출할 때마다 새 FPDF_PAGEOBJECT가 삽입되며, FPDFPageObj_SetMatrixTPdfMatrix helper를 통해 위치, 크기, 회전을 바꿀 수 있습니다. 그래서 같은 XObject를 여러 page에 걸쳐 서로 다른 크기 / 회전 / 위치로 놓으면서 하나의 page-content cache를 공유할 수 있습니다

실패하면 nil을 반환합니다(Source가 Active가 아님, SourcePageIndex가 잘못됨, OOM). Sourcenil이거나 Active가 아니면 EPdfError를 발생시킵니다

호출자는 반환된 TPdfXObject를 소유하며, 이 TPdf가 닫히기 전에 반드시 해제해야 합니다. destructor는 FPDF_CloseXObject를 호출해 handle을 이 TPdf cleanly. After insertion the page object inserted into the page is owned by the page, not by the XObject — closing the XObject does not invalidate already-inserted page objects.

비고

예제

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;

참고 항목

InsertFormObjectFromXObject, ImportPagesByIndex, AddPicture