delphi SynPDF 添加大纲(书签)

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;
posted @ 2022-04-18 10:59  txgh  阅读(325)  评论(0编辑  收藏  举报