PDFium Component Docs

InsertFormObjectFromXObject 메서드

이 API 항목은 식별자, 시그니처, 코드 블록, PDF 용어를 원래 형태로 유지합니다.
컴포넌트: TPdf  ·  유닛: PDFium
TPdfXObject로 감싼 page의 복사본 하나를 이 document의 current page에 삽입하고, caller가 position / scale / rotate할 수 있도록 FPDF_PAGEOBJECT를 반환합니다

구문

function InsertFormObjectFromXObject(XObject: TPdfXObject): FPDF_PAGEOBJECT;

설명

InsertFormObjectFromXObject는 v1.25.0 Form XObject 재사용 API의 나머지 절반입니다. CreateXObjectFromPage로 만든 TPdfXObject 핸들을 받아, 그 XObject를 참조하는 FPDF_PAGEOBJECT 하나를 이 문서의 현재 page에 삽입합니다. 호출할 때마다 새 page object가 추가되므로 같은 XObject를 대상의 여러 page에 여러 번 찍을 수 있으며, 각 찍힌 개체는 같은 page-content cache를 공유하므로 watermark / template가 복잡해도 file size가 줄어듭니다

반환된 FPDF_PAGEOBJECT 핸들을 사용하면 caller가 FPDFPageObj_SetMatrix 또는 TPdfMatrix helper로 stamp의 위치 / 크기 / 회전을 page 어디에나 맞출 수 있습니다. 명시적 transform이 없으면 삽입된 page는 왼쪽 아래 모서리에 1:1 scale로 놓이는데, 보통 원하는 결과는 아니므로 UpdatePage를 호출하기 전에 항상 matrix를 설정하세요

실패하면 nil을 반환합니다(XObject가 nil이거나, 이 TPdf가 Active가 아니거나, current page가 없을 때). 삽입 후에는 page object의 소유권이 XObject가 아니라 page에 있으므로, XObject를 free해도 삽입된 page object는 무효화되지 않습니다

비고

예제

uses FPdfMatrix;

var
  PageObj: FPDF_PAGEOBJECT;
  M: TPdfMatrix;
begin
  Pdf1.PageNumber := 3;
  PageObj := Pdf1.InsertFormObjectFromXObject(XObj);
  if PageObj <> nil then
  begin
    M := TPdfMatrix.Create;
    try
      M.Translate(100, 200);
      M.Scale(0.5, 0.5);
      M.Rotate(15);
      FPDFPageObj_SetMatrix(PageObj, M.AsMatrix);
    finally
      M.Free;
    end;
    Pdf1.UpdatePage;
  end;
end;

참고 항목

CreateXObjectFromPage, UpdatePage, PageNumber