Qt PDF C++ Classes

这是对 Qt PDF C++ 类的介绍,这些类可以用于处理 PDF 文档的加载、渲染和导航等操作。该模块在 Qt 5.14 中被引入。

命名空间

  • QPdf:包含 QtPdf 模块中使用的各种标识符。

  • QPdfDestination:定义了 PDF 文档中的页面位置和建议的查看缩放级别。
  • QPdfDocument:负责加载 PDF 文档并从中渲染页面。
  • QPdfDocumentRenderOptions:包含从 PDF 文档渲染页面的选项。
  • QPdfPageNavigation:负责处理 PDF 文档的导航。
  • QPdfPageRenderer:封装了 PDF 文档的页面渲染。
  • QPdfSelection:定义了在 PDF 文档的一页中被选中的文本范围及其几何边界。

详细描述
Qt PDF 模块包含了用于渲染 PDF 文档的类和函数。

如果要包含模块类的定义,需要使用以下指令:

#include <QtPdf>

如果要链接模块,需要在 qmake 项目文件中添加以下行:

QT += pdf

QPdf Namespace

QPdf 命名空间

QPdf 命名空间包含了在整个 QtPdf 模块中使用的各种标识符。

头文件:

#include <QPdf>

类型

  • 枚举:RenderFlag
  • 标志:RenderFlags
  • 枚举:Rotation

详细描述

  • enum QPdf::RenderFlag 和 flags QPdf::RenderFlags

    这个枚举用于描述页面应如何渲染。

常量描述
QPdf::NoRenderFlags0x000默认值,表示没有标志。
QPdf::RenderAnnotations0x001页面将渲染注解。
QPdf::RenderOptimizedForLcd0x002页面的文本将为LCD显示优化渲染。
QPdf::RenderGrayscale0x004页面将以灰度渲染。
QPdf::RenderForceHalftone0x008如果输出图像被拉伸,则始终使用半调渲染。
QPdf::RenderTextAliased0x010渲染文本时禁用抗锯齿。
QPdf::RenderImageAliased0x020渲染图像时禁用抗锯齿。
QPdf::RenderPathAliased0x040渲染路径时禁用抗锯齿。

RenderFlags 类型是 QFlags<RenderFlag> 的类型定义。它存储了 RenderFlag 值的 OR 组合。

  • enum QPdf::Rotation

    这个枚举描述了页面的旋转方向。

常量描述
QPdf::Rotate00不旋转(默认)
QPdf::Rotate901顺时针旋转90度
QPdf::Rotate1802旋转180度
QPdf::Rotate2703顺时针旋转270度

QPdfDestination Class

QPdfDestination 类

QPdfDestination 类定义了 PDF 文档中页面上的位置,以及建议的查看缩放级别。

头文件:

#include <QPdfDestination>

此类在 Qt 5.15 中引入。

所有成员列表,包括继承的成员

属性

属性类型描述
locationconst QPointF页面上的位置,单位为点。
pageconst int页面号。
validconst bool目标是否有效。
zoomconst qreal建议的放大级别,其中 1.0 表示默认比例(1 像素 = 1 点)。

公共函数

函数返回值描述
isValid()bool检查目标是否有效。
location()QPointF获取页面上的位置。
page()int获取页面号。
zoom()qreal获取建议的放大级别。

保护函数

函数描述
QPdfDestination()构造一个无效的目标。

详细描述

属性文档

  • location:const QPointF

    这个属性表示页面上的位置,单位是点。

    访问函数:

    QPointF location() const
    
  • page:const int

    这个属性表示页面号。

    访问函数:

    int page() const
    
  • valid:const bool

    这个属性表示目标是否有效。

    访问函数:

    bool isValid() const
    
  • zoom:const qreal

    这个属性表示建议的放大级别,其中 1.0 表示默认比例(1 像素 = 1 点)。

    访问函数:

    qreal zoom() const
    

成员函数文档

  • [protected] QPdfDestination::QPdfDestination()

    构造一个无效的目标。

    参见 valid。

QPdfDocument Class

QPdfDocument 类

QPdfDocument 类加载 PDF 文档并从中渲染页面。

头文件:

#include <QPdfDocument>

自:Qt 5.10
继承自:QObject
此类在 Qt 5.10 中引入。

公共类型

  • 枚举:MetaDataField
  • 枚举:Status

公共函数

详情见下表。

信号

详情见下表。

详细描述

  • enum QPdfDocument::MetaDataField

此枚举描述了元数据的可用字段。

常量描述
QPdfDocument::Title文档的标题
QPdfDocument::Author创建文档的人的名字
QPdfDocument::Subject文档的主题
QPdfDocument::Keywords与文档相关的关键字
QPdfDocument::Creator如果文档是从其他格式转换为 PDF,那么这个值为创建原始文档的产品的名称
QPdfDocument::Producer如果文档是从其他格式转换为 PDF,那么这个值为进行转换的产品的名称
QPdfDocument::CreationDate文档创建的日期和时间
QPdfDocument::ModificationDate文档最近修改的日期和时间
  • enum QPdfDocument::Status

此枚举描述了文档的当前状态。

常量描述
QPdfDocument::Null文档被创建或关闭后的初始状态
QPdfDocument::Loading调用 load() 后,文档完全加载前的状态
QPdfDocument::Ready文档完全加载,数据可以被访问的状态
QPdfDocument::Unloading在打开的文档上调用 close() 后的状态。此时文档仍有效,所有数据都可以被访问
QPdfDocument::Error在 Loading 状态后,如果加载失败的状态

成员函数

函数描述
QPdfDocument(QObject *parent = nullptr)构造一个新的文档,其父对象为 parent
~QPdfDocument()销毁文档
close()关闭文档
getAllText(int page)返回给定页面上的所有文本及其边界
getSelection(int page, QPointF start, QPointF end)返回给定页面上在给定开始和结束点之间的文本信息(如果有)
getSelectionAtIndex(int page, int startIndex, int maxLength)返回在给定页面上从给定的 startIndex 开始,最多包含 maxLength 个字符的文本信息
metaData(QPdfDocument::MetaDataField field)返回给定字段的文档元数据
pageCount()如果文档已加载,返回页面数量;如果未加载任何文档,返回 0
render(int page, QSize imageSize, QPdfDocumentRenderOptions renderOptions = QPdfDocumentRenderOptions())根据提供的 renderOptions,将页面渲染为 imageSize 大小的

QImage |
| status() | 返回文档的当前状态 |

信号

信号描述
pageCountChanged(int pageCount)页面数量改变时发出
passwordChanged()密码更改时发出
statusChanged(QPdfDocument::Status status)状态改变时发出

QPdfDocumentRenderOptions Class

QPdfDocumentRenderOptions 类

QPdfDocumentRenderOptions 类包含了从 PDF 文档渲染页面所需的选项。

头文件:

#include <QPdfDocumentRenderOptions>

此类在 Qt 5.10 中被引入。

所有成员列表,包括继承的成员。

公共函数

成员函数描述
QPdfDocumentRenderOptions()构造一个 QPdfDocumentRenderOptions 对象。
QPdf::RenderFlags renderFlags() const返回用于从 PDF 文档渲染页面的特殊标志。
QPdf::Rotation rotation() const返回用于从 PDF 文档渲染页面的旋转。
QRect scaledClipRect() const返回页面被缩放到 scaledSize() 后要被剪裁的矩形区域。
QSize scaledSize() const返回以像素为单位的要渲染的页面的大小。
void setRenderFlags(QPdf::RenderFlags flags)设置用于从 PDF 文档渲染页面的特殊标志。
void setRotation(QPdf::Rotation rotation)设置用于从 PDF 文档渲染页面的旋转。

相关的非成员函数

非成员函数描述
bool operator!=(QPdfDocumentRenderOptions lhs, QPdfDocumentRenderOptions rhs)如果选项 lhs 和 rhs 不同,则返回 true,否则返回 false。
bool operator==(QPdfDocumentRenderOptions lhs, QPdfDocumentRenderOptions rhs)如果选项 lhs 和 rhs 相等,则返回 true,否则返回 false。

QPdfPageNavigation Class

QPdfPageNavigation 类

QPdfPageNavigation 类处理 PDF 文档的导航。

头文件:

#include <QPdfPageNavigation>

引入版本:Qt 5.10

继承自:QObject

属性

属性类型描述
canGoToNextPageconst bool表示是否可以导航至下一页
canGoToPreviousPageconst bool表示是否可以导航至上一页
currentPageint当前文档的页面编号
documentQPdfDocument*该对象导航的文档实例
pageCountconst int文档的页数

公共函数

函数描述
QPdfPageNavigation(QObject *parent = nullptr)构造一个具有父对象 parent 的页面导航对象
virtual ~QPdfPageNavigation()销毁页面导航对象
bool canGoToNextPage() const返回是否有下一页
bool canGoToPreviousPage() const返回是否有上一页
int currentPage() const返回当前页面号或0(如果没有设置文档)
QPdfDocument * document() const返回此对象导航的文档,如果之前没有设置,则返回 nullptr
int pageCount() const返回文档中的页面数或0(如果没有设置文档)
void setCurrentPage(int page)设置当前页面号
void setDocument(QPdfDocument *document)设置此对象导航的文档

公共槽函数

函数描述
void goToNextPage()将当前页改为下一页
void goToPreviousPage()将当前页改为上一页

信号

信号描述
void canGoToNextPageChanged(bool canGo)当可以导航到下一页的状态变化时发出
void canGoToPreviousPageChanged(bool canGo)当可以导航到上一页的状态变化时发出
void currentPageChanged(int currentPage)当前页改变时发出
void documentChanged(QPdfDocument *document)当导航的文档改变时发出
void pageCountChanged(int pageCount)当文档的页数改变时发出

QPdfPageRenderer Class

QPdfPageRenderer 类

QPdfPageRenderer 类封装了 PDF 文档的页面渲染。

头文件:

#include <QPdfPageRenderer>

起始版本:Qt 5.11

继承自:QObject

公共类型

类型描述
枚举类 RenderMode用于描述页面如何被渲染,包括 MultiThreaded(在单独的工作线程中渲染所有页面)和 SingleThreaded(在主 UI 线程中渲染所有页面,默认值)。

属性

属性类型描述
documentQPdfDocument*当前对象从中渲染页面的文档实例,默认为 nullptr。
renderModeRenderMode渲染器用来渲染页面的模式,默认为 RenderMode::SingleThreaded。

公共函数

函数描述
QPdfPageRenderer(QObject *parent = nullptr)构造函数,创建一个带有父对象 parent 的页面渲染器对象。
~QPdfPageRenderer()析构函数,销毁页面渲染器对象。
QPdfDocument* document() const返回当前对象从中渲染页面的文档,如果之前未设置,则返回 nullptr。
RenderMode renderMode() const返回页面渲染的模式。
quint64 requestPage(int pageNumber, QSize imageSize, QPdfDocumentRenderOptions options = QPdfDocumentRenderOptions())请求渲染器按照提供的选项将页面 pageNumber 渲染为 QImage 大小的 imageSize。
void setDocument(QPdfDocument *document)设置当前对象从中渲染页面的文档。
void setRenderMode(RenderMode mode)设置页面渲染的模式。

信号

信号描述
void documentChanged(QPdfDocument *document)当文档属性发生更改时发出的信号。
void renderModeChanged(RenderMode renderMode)当渲染模式属性发生更改时发出的信号。

QPdfSelection Class

QPdfSelection 类

QPdfSelection 类定义了在 PDF 文档的一页中被选中的文本范围及其几何边界。

头文件:

#include <QPdfSelection>

该类在 Qt 5.15 中被引入。

所有成员列表,包括继承的成员

属性

  • bounds:const QVector
  • text:const QString
  • valid:const bool

公共函数

  • QRectF boundingRectangle() const
  • QVector<QPolygonF> bounds() const
  • void copyToClipboard(QClipboard::Mode mode = QClipboard::Clipboard) const
  • int endIndex() const
  • bool isValid() const
  • int startIndex() const
  • QString text() const

详细描述

参见 QPdfDocument::getSelection()。

属性文档

  • bounds:const QVector

    这个属性保存了选中文本在页面上占据的一组区域,表示为多边形。多边形的坐标系以页面左上角为原点,单位为点。

    注意:现在,从 QPdfDocument::getSelection() 返回的多边形始终是矩形;但在未来可能可以表示更复杂的区域。

    访问函数:QVector<QPolygonF> bounds() const

  • text:const QString

    这个属性保存了选中的文本。

    访问函数:QString text() const

  • valid:const bool

    这个属性保存了选择是否有效。

    访问函数:bool isValid() const

成员函数文档

  • void QPdfSelection::copyToClipboard(QClipboard::Mode mode = QClipboard::Clipboard) const

    将文本复制到系统剪贴板。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐