PDF目录
书籍一般都有目录,电子书也不例外。使用Poppler::Document加载PDF文件以后,就可以通过outline()方法,取得PDF文件的目录。
outline()方法的定义如下:
QVector<OutlineItem> outline() const;
我们看到,Poppler的目录是一个目录项(Poppler::OutlineItem)的列表(QVector)。
Popper::OutlineItem的默认构造函数会初始化一个空的目录项,其中不含任何跟PDF文件相关的信息。
Poppler::OutlineItem支持如下方法:
判断是否为空。上文提到,默认构造以后就是空的。
bool isNull() const;
目录项名称,即显示出来的目录项名字。
QString name() const;
目录项是否是展开状态。
bool isOpen() const;
目录项指向的页数等信息,是一个智能指针,根据这个指针,就可以取得目录具体指向什么位置。
QSharedPointer destination() const;
目录项指向的外部文件。
QString externalFileName() const;
目录项指向的URI。
QString uri() const;
目录项是否含有子项。
bool hasChildren() const;
目录项的子项列表。
QVector children() const;
所以综上,根据Poppler::Document的outline()方法,可以取得目录项的列表,再根据列表中每个目录项是否有子项,就可以完成一个目录项的遍历。
PDF链接目标
PDF文件中,除了目录以外,在正文中也会有超链接。无论是链接的视频、音频还是其它外部网址,这些都是通过LinkDestination表示的。
LinkDestination的定义为:
class POPPLER_QT6_EXPORT