delphi llPDFLib 添加大纲(书签)

llPDFLib 添加大纲(书签)

PDF文档可以选择在屏幕上显示文档大纲,允许用户以交互方式从文档的一部分导航到另一部分。大纲由大纲项(有时称为书签)的树状层次结构组成,作为“可视目录”向用户显示文档的结构。

用户可以通过鼠标单击以交互方式打开和关闭单个项目。当一个项目打开时,它在层次结构中的直接子项目将在屏幕上可见; 每个子级可以依次打开或关闭,有选择地显示或隐藏层次结构的其他部分。当一个项目关闭时,层次结构中的所有子项都将隐藏。用鼠标单击任何可见项目的文本会激活该项目,使查看器应用程序跳转到与该项关联的目标。

属性和方法

TPDFDocument.Outlines

property Outlines: TPDFOutlines;

大纲管理器,允许在生成的文件中操作此对象。

TPDFDocument.Actions

property Actions: TPDFActions;

操作管理器,在对象中创建所有操作时使用。

TPDFOutlines.Add

function Add(Node: TPDFOutlineNode; Title: string; Action: TPDFAction; Charset: TFontCharset = ANSI_CHARSET): TPDFOutlineNode;

将新的树节点添加到大纲项的树中。并返回已添加的节点。

参数

Node 该节点被添加为 Node 的最后一个同级。

Title 这一行,将在查看器的大纲树中可见。

Action 操作,该操作将在单击添加的大纲项之后执行。

Charset 用于ansi字符串。 默认值 ANSI_CHARSET

返回值

添加的新节点。

TPDFOutlines.AddChild

function AddChild(Node: TPDFOutlineNode; Title: string; Action: TPDFAction; Charset: TFontCharset = ANSI_CHARSET): TPDFOutlineNode;

将新的树节点添加到大纲项的树中。并返回已添加的节点。

参数

Node 该节点被添加为Node的子节点。 它被添加到Node的子节点列表的末尾。

Title 这一行,将在查看器的大纲树中可见。

Action 操作,该操作将在单击添加的大纲项之后执行。

Charset 用于ansi字符串。 默认值 ANSI_CHARSET

返回值

添加的新节点。

TPDFOutlineNode.Expanded

property Expanded: Boolean;

确定打开PDF文档时是否展开节点。

TPDFGotoPageAction.Create

constructor Create(Actions: TPDFActions; PageIndex: Integer; TopOffset: Integer; NoChangeZoom: Boolean);

创建并初始化TPDFGotopageAction的实例。

参数

Actions 该对象负责管理所有PDFActions

PageIndex 要转到的页面的索引。

TopOffset 将在转换期间执行的相对于页面顶部的偏移量。

NoChangeZoom 指定是否更改要进行转换的页面的缩放。

例子

添加书签

uses llPDFDocument, llPDFAction, llPDFOutline;

procedure TForm1.Button9Click(Sender: TObject);
var
  Pdf: TPDFDocument;
  Root: TPDFOutlineNode;
begin
  Pdf := TPDFDocument.Create(nil);
  try
    //创建PDF文档
    Pdf.AutoLaunch := True;
    Pdf.FileName := 'C:\Users\Administrator\Desktop\ceshi.pdf';
    Pdf.BeginDoc;
    //添加第一页
    with Pdf.CurrentPage do
    begin
      SetActiveFont('宋体', [fsBold], 20, GB2312_CHARSET);
      TextOut(100, 100, 0, '第一页标题');
      TextOut(100, 200, 0, '第一页内容');
    end;
    //添加第二页
    Pdf.NewPage;
    with Pdf.CurrentPage do
    begin
      SetActiveFont('宋体', [fsBold], 20, GB2312_CHARSET);
      TextOut(100, 100, 0, '第二页标题');
      TextOut(100, 200, 0, '第二页内容');
    end;
    //添加第三页
    Pdf.NewPage;
    with Pdf.CurrentPage do
    begin
      SetActiveFont('宋体', [fsBold], 20, GB2312_CHARSET);
      TextOut(100, 100, 0, '第三页标题');
      TextOut(100, 200, 0, '第三页内容');
    end;
    //添加书签
    Root := Pdf.Outlines.Add(nil, '文档开始',
      TPDFGoToPageAction.Create(Pdf.Actions, 0, 0, True), GB2312_CHARSET);
    Pdf.Outlines.AddChild(Root, '第一页标题',
      TPDFGoToPageAction.Create(Pdf.Actions, 0, 100, True), GB2312_CHARSET);
    Pdf.Outlines.AddChild(Root, '第二页标题',
      TPDFGoToPageAction.Create(Pdf.Actions, 1, 100, True), GB2312_CHARSET);
    Pdf.Outlines.AddChild(Root, '第三页标题',
      TPDFGoToPageAction.Create(Pdf.Actions, 2, 100, True), GB2312_CHARSET);
    //展开书签
    Root.Expanded := True;
    Pdf.EndDoc;
  finally
    Pdf.Free;
  end;
end;
posted @ 2022-03-04 15:37  txgh  阅读(215)  评论(0编辑  收藏  举报