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;