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::NoRenderFlags | 0x000 | 默认值,表示没有标志。 |
QPdf::RenderAnnotations | 0x001 | 页面将渲染注解。 |
QPdf::RenderOptimizedForLcd | 0x002 | 页面的文本将为LCD显示优化渲染。 |
QPdf::RenderGrayscale | 0x004 | 页面将以灰度渲染。 |
QPdf::RenderForceHalftone | 0x008 | 如果输出图像被拉伸,则始终使用半调渲染。 |
QPdf::RenderTextAliased | 0x010 | 渲染文本时禁用抗锯齿。 |
QPdf::RenderImageAliased | 0x020 | 渲染图像时禁用抗锯齿。 |
QPdf::RenderPathAliased | 0x040 | 渲染路径时禁用抗锯齿。 |
RenderFlags
类型是 QFlags
的类型定义。它存储了 RenderFlag
值的 OR 组合。
- enum QPdf::Rotation
这个枚举描述了页面的旋转方向。
常量 | 值 | 描述 |
QPdf::Rotate0 | 0 | 不旋转(默认) |
QPdf::Rotate90 | 1 | 顺时针旋转90度 |
QPdf::Rotate180 | 2 | 旋转180度 |
QPdf::Rotate270 | 3 | 顺时针旋转270度 |
QPdfDestination Class
QPdfDestination 类
QPdfDestination 类定义了 PDF 文档中页面上的位置,以及建议的查看缩放级别。
头文件:
#include <QPdfDestination>
此类在 Qt 5.15 中引入。
所有成员列表,包括继承的成员
属性
属性 | 类型 | 描述 |
location | const QPointF | 页面上的位置,单位为点。 |
page | const int | 页面号。 |
valid | const bool | 目标是否有效。 |
zoom | const 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
属性
属性 | 类型 | 描述 |
canGoToNextPage | const bool | 表示是否可以导航至下一页 |
canGoToPreviousPage | const bool | 表示是否可以导航至上一页 |
currentPage | int | 当前文档的页面编号 |
document | QPdfDocument* | 该对象导航的文档实例 |
pageCount | const 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 线程中渲染所有页面,默认值)。 |
属性
属性 | 类型 | 描述 |
document | QPdfDocument* | 当前对象从中渲染页面的文档实例,默认为 nullptr。 |
renderMode | RenderMode | 渲染器用来渲染页面的模式,默认为 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 QVectortext
:const QStringvalid
:const bool
公共函数
QRectF boundingRectangle() const
QVector 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 bounds() const
- text:const QString
这个属性保存了选中的文本。
访问函数:QString text() const
- valid:const bool
这个属性保存了选择是否有效。
访问函数:bool isValid() const
成员函数文档
void QPdfSelection::copyToClipboard(QClipboard::Mode mode = QClipboard::Clipboard) const
将文本复制到系统剪贴板。