SynPDF 添加大纲(书签)
属性和方法
TPdfDocument.UseOutlines
property UseOutlines: boolean;
用于指定PDF文档是否将使用大纲。
TPdfDocument.OutlineRoot
property OutlineRoot: TPdfOutlineRoot;
PDF文档的大纲。只读属性。
在使用
OutlineRoot
属性之前,必须将UseOutlines
设置为True。
TPdfDocument.CreateOutline
function CreateOutline(const Title: string; Level: integer; TopPosition: Single): TPdfOutlineEntry;
在当前页面的指定位置创建大纲节点。
参数
Title 标题。
Level 级别。
TopPosition 相对于页面底部的偏移量。
返回值
添加的新节点。
大纲树节点是根据Level级别创建的(Level 为0时是根节点),它被添加到相同级别节点列表的末尾。
TPdfOutlineEntry.Parent
property Parent: TPdfOutlineEntry;
父大纲节点。
TPdfOutlineEntry.Next
property Next: TPdfOutlineEntry;
下一个大纲节点。
TPdfOutlineEntry.Prev
property Prev: TPdfOutlineEntry;
上一个大纲节点。
TPdfOutlineEntry.First
property First: TPdfOutlineEntry;
第一个大纲节点。
TPdfOutlineEntry.Last
property Last: TPdfOutlineEntry;
最后一个大纲节点。
TPdfOutlineEntry.Opened
property Opened: boolean;
是否展开节点。
例子
添加书签
uses SynPdf;
procedure TForm1.Button6Click(Sender: TObject);
var
Pdf: TPdfDocumentGDI;
begin
//创建PDF文档
Pdf := TPdfDocumentGDI.Create(True);
//使用书签,需要设置Create参数为True或者UseOutlines设置为True
Pdf.UseOutlines := True;
try
Pdf.AddPage;
//添加总书签(Level为级别,从0开始,TopPosition为位置,从页面底开始)
Pdf.CreateOutline('文档开始', 0, Pdf.Canvas.Page.PageHeight);
//添加第一页
with Pdf.VCLCanvas do
begin
Font.Name := '宋体';
Font.Size := 20;
TextOut(100, 100, '第一页标题');
TextOut(100, 200, '第一页内容');
Pdf.CreateOutline('第一页标题', 1, Pdf.Canvas.Page.PageHeight - 100);
end;
//添加第二页
Pdf.AddPage;
with Pdf.VCLCanvas do
begin
Font.Name := '宋体';
Font.Size := 20;
TextOut(100, 100, '第二页标题');
TextOut(100, 200, '第二页内容');
Pdf.CreateOutline('第二页标题', 1, Pdf.Canvas.Page.PageHeight - 100);
end;
//添加第三页
Pdf.AddPage;
with Pdf.VCLCanvas do
begin
Font.Name := '宋体';
Font.Size := 20;
TextOut(100, 100, '第三页标题');
TextOut(100, 200, '第三页内容');
Pdf.CreateOutline('第三页标题', 1, Pdf.Canvas.Page.PageHeight - 100);
end;
//展开书签
Pdf.OutlineRoot.First.Opened := True;
Pdf.SaveToFile('C:\Users\Administrator\Desktop\ceshi.pdf');
finally
Pdf.Free;
end;
end;