52 lines
1.5 KiB
Plaintext
52 lines
1.5 KiB
Plaintext
type TSToc = class
|
|
uses TSPdfEnumerations;
|
|
public
|
|
function Create(ppr: PPrUnitDecorator; rect: array of real; page: TSPage; x: real; y: real; font: PdfFont);
|
|
function LinkAnnot(dst: PdfDestination);
|
|
function AddPageNumber(page: TSPage);
|
|
|
|
private
|
|
ppr_: PPrUnitDecorator;
|
|
rect_: array of real;
|
|
font_: PdfFont;
|
|
[weakref]tspage_: TSPage;
|
|
x_;
|
|
y_;
|
|
end;
|
|
|
|
function TSToc.Create(ppr: PPrUnitDecorator; rect: array of real; page: TSPage; x: real; y: real; font: PdfFont);
|
|
begin
|
|
ppr_ := ppr;
|
|
rect_ := rect;
|
|
tspage_ := page;
|
|
x_ := x;
|
|
y_ := y;
|
|
font_ := font;
|
|
end;
|
|
|
|
function TSToc.LinkAnnot(dst: PdfDestination);
|
|
begin
|
|
annot := tspage_.PdfPage.CreateLinkAnnot(rect_, dst);
|
|
annot.LinkAnnotSetHighlightMode(TSPdfEnumerations.ANNOT_NO_HIGHTLIGHT);
|
|
annot.LinkAnnotSetBorderStyle(0, 0, 0);
|
|
end;
|
|
|
|
function TSToc.AddPageNumber(page: TSPage);
|
|
begin
|
|
number := tostring(page.Number);
|
|
tspage_.PdfPage.SetFontAndSize(font_, ppr_.RPr.Sz.Val);
|
|
number_sz := tspage_.PdfPage.TextWidth(number);
|
|
x := rect_[2] - number_sz;
|
|
tspage_.PdfPage.BeginText();
|
|
tspage_.PdfPage.TextOut(x, y_, number);
|
|
tspage_.PdfPage.EndText();
|
|
|
|
tspage_.PdfPage.SetRGBStroke(0, 0, 0);
|
|
tspage_.PdfPage.SetDash(array(0.5, 2), 2, 0);
|
|
tspage_.PdfPage.SetLineWidth(0.5);
|
|
tspage_.PdfPage.SetLineCap(TSPdfEnumerations.ROUND_END);
|
|
tspage_.PdfPage.MoveTo(x_+1, y_);
|
|
tspage_.PdfPage.LineTo(x-0.5, y_);
|
|
tspage_.PdfPage.Stroke();
|
|
end;
|