function StampPagesFromPdf(
Source : TPdf;
SourcePageIndex : Integer;
const TargetPages : array of Integer;
const Options : TPdfOverlayOptions;
out Report : TPdfOverlayReport): Boolean;
A StampPagesFromPdf a magas szintű fedvény-, aláfedés- és
vízjel-összeállító. Egy forrásoldalból Form XObjectet gyárt
FPDF_NewXObjectFromPage útján, majd ennek az XObjectnek egy
pozicionált, skálázott, opcionálisan forgatott példányát helyezi el
minden kért céloldalon. Az elhelyezést, a skálázást, a forgatást, a
keverési módot és a z-sorrendet a
TPdfOverlayOptions rekord vezérli (Placement,
X, Y, Scale,
Rotation, Margin, UseCropBox,
ZUnderlay és BlendMode); a
TPdfOverlayReport out paraméter rögzíti a
StampedPageCount, FailedPageCount,
SkippedPageCount, SourcePageWidth,
SourcePageHeight, Succeeded és
ErrorMessage értékeket
Belsőleg minden bélyegzés a
FPDF_NewFormObjectFromXObject,
FPDFPageObj_SetMatrix,
FPDFPageObj_SetBlendMode, valamint a
FPDFPage_InsertObject (fedvény) vagy a 0 veremindexű
FPDFPage_InsertObjectAtIndex (aláfedés) kombinációja. Az elhelyezési mátrix a
PageWidth/PageHeight és a
beállításmezők alapján épül fel, így minden horgony, margó, skálázás és forgatás egyetlen
transzformációra képeződik le, amelyet a PDFium a beszúrt
formaobjektumra alkalmaz
A forrásnak és a célnak egyaránt Active állapotúnak kell
lennie. A forrás lehet külön TPdf példány, vagy akár maga EZ
a dokumentum is (önbélyegzés): a hívó aktuális
PageNumber értéke mindkét dokumentumra vonatkozóan mentésre kerül,
és a hívás végén visszaállításra kerül
Source — egy másik aktív TPdf, amely az újrahasznosítandó oldalt tartalmazza. Azonos lehet a célpéldánnyal isSourcePageIndex — az oldal nulla-alapú indexe a Source elemei közöttTargetPages — nulla-alapú céloldalindexek ebben a dokumentumban. Üres tömb átadásával minden oldalt bélyegzOptions — egy TPdfOverlayOptions rekord. Középre igazított, automatikusan illeszkedő, legfelül elhelyezkedő fedvényhez használja a TPdfOverlayOptions.Default értéketReport — fogadja a bélyegzett, sikertelen és kihagyott oldalak számát, valamint a forrásoldal szélességét/magasságát, amelyet az elhelyezési mátrix kiszámításához használtakopTopLeft, opTopCenter, opTopRight, opMiddleLeft, opCenter, opMiddleRight, opBottomLeft, opBottomCenter, opBottomRight, opStretch (tengelyenként független skálázás) és opCustom (explicit X/Y használat)Scale=0 automatikus illesztést jelent az oldalboxán belül, a kért margó levonásával, a képarány megtartásával, kivéve, ha Placement=opStretch, ekkor a kép a box kitöltésére nyúlikRotation fokban értendő, óramutató járásával ellentétes irányú, és az elhelyezett képet a saját középpontja körül forgatja el, így egy 45°-os vízjel vizuálisan középen maradZUnderlay=True a 0 veremindexre szúrja be a bélyeget, így minden meglévő oldalobjektum mögé kerül. A natív PDFium API nem rendelkezik nyilvános „objektum adott indexre helyezése” hívással, ezért az aláfedési útvonal frissen gyártott Form XObjectet szúr be közvetlenül a legalsó pozícióba, ahelyett hogy a hozzáfűzött példányt helyezné átBlendMode a beszúrt formaobjektumra kerül alkalmazásra a FPDFPageObj_SetBlendMode útján. A tiszta alfa-átlátszóság Form XObject esetén nem érhető el a nyilvános PDFium API-ban; használjon olyan keverési módokat, mint a bmMultiply vagy a bmScreen, vagy renderelje elő a forrást a kívánt alfával, mielőtt bélyegezneReport.SkippedPageCount számlálójába kerülnek, és nem szakítják meg a futást
var
Watermark: TPdf;
Options: TPdfOverlayOptions;
Report: TPdfOverlayReport;
begin
Watermark := TPdf.Create(nil);
try
Watermark.FileName := 'C:\Confidential.pdf';
Watermark.Active := True;
Options := TPdfOverlayOptions.Default;
Options.Placement := opCenter;
Options.Rotation := 45;
Options.BlendMode := bmMultiply;
Pdf1.StampPagesFromPdf(Watermark, 0, [], Options, Report);
finally
Watermark.Free;
end;
end;