QPdfDocument Class
QPdfDocument 类可加载 PDF 文档并渲染其中的页面。更多
Header: | #include <QPdfDocument> |
Inherits: | QObject |
公共类型
enum class | Error { None, Unknown, DataNotYetAvailable, FileNotFound, InvalidFileFormat, …, UnsupportedSecurityScheme } |
enum class | MetaDataField { Title, Author, Subject, Keywords, Creator, …, ModificationDate } |
enum class | PageModelRole { Label, PointSize } |
enum class | Status { Null, Loading, Ready, Unloading, Error } |
属性
- pageCount : const int
- pageModel : QAbstractListModel* const
- password : QString
- status : const Status
公共功能
QPdfDocument(QObject *parent) | |
virtual | ~QPdfDocument() override |
void | close() |
QPdfDocument::Error | error() const |
QPdfSelection | getAllText(int page) |
QPdfSelection | getSelection(int page, QPointF start, QPointF end) |
QPdfSelection | getSelectionAtIndex(int page, int startIndex, int maxLength) |
void | load(QIODevice *device) |
QPdfDocument::Error | load(const QString &fileName) |
QVariant | metaData(QPdfDocument::MetaDataField field) const |
int | pageCount() const |
(since 6.6) int | pageIndexForLabel(const QString &label) |
QString | pageLabel(int page) |
QAbstractListModel * | pageModel() |
QSizeF | pagePointSize(int page) const |
QString | password() const |
QImage | render(int page, QSize imageSize, QPdfDocumentRenderOptions renderOptions = QPdfDocumentRenderOptions()) |
void | setPassword(const QString &password) |
QPdfDocument::Status | status() const |
信号
void | pageCountChanged(int pageCount) |
void | pageModelChanged() |
void | passwordChanged() |
void | statusChanged(QPdfDocument::Status status) |
成员类型文档
enum class QPdfDocument::Error
该枚举描述了尝试对文档进行最后一次操作时出现的错误。
常量 | 值 | 说明 |
---|---|---|
QPdfDocument::Error::None | 0 | 未发生错误。 |
QPdfDocument::Error::Unknown | 1 | 错误类型不明。 |
QPdfDocument::Error::DataNotYetAvailable | 2 | 文件仍在加载中,尝试操作为时过早。 |
QPdfDocument::Error::FileNotFound | 3 | 未找到给load() 的文件。 |
QPdfDocument::Error::InvalidFileFormat | 4 | 给load() 的文件不是有效的 PDF 文件。 |
QPdfDocument::Error::IncorrectPassword | 5 | 给setPassword() 的密码不适合该文件。 |
QPdfDocument::Error::UnsupportedSecurityScheme | 6 | QPdfDocument 无法解锁此类 PDF 文件。 |
另请参阅 QPdfDocument::error()。
enum class QPdfDocument::MetaDataField
该枚举描述了元数据的可用字段。
常量 | 值 | 说明 |
---|---|---|
QPdfDocument::MetaDataField::Title | 0 | 文件标题,如QString 。 |
QPdfDocument::MetaDataField::Author | 2 | 创建文档的人的姓名,如QString 。 |
QPdfDocument::MetaDataField::Subject | 1 | 文件主题为QString 。 |
QPdfDocument::MetaDataField::Keywords | 3 | 与文档相关的关键字,如QString 。 |
QPdfDocument::MetaDataField::Creator | 5 | 如果文档是从其他格式转换为 PDF 的,则创建原始文档的合规产品的名称为QString 。 |
QPdfDocument::MetaDataField::Producer | 4 | 如果文档是从其他格式转换为 PDF 的,将其转换为 PDF 的符合产品的名称为QString 。 |
QPdfDocument::MetaDataField::CreationDate | 6 | 文档创建的日期和时间,如QDateTime 。 |
QPdfDocument::MetaDataField::ModificationDate | 7 | 文档最近修改的日期和时间,如QDateTime 。 |
另请参阅 QPdfDocument::metaData() 。
enum class QPdfDocument::PageModelRole
pageModel() 中的角色。
常数 | 值 | 说明 |
---|---|---|
QPdfDocument::PageModelRole::Label | Qt::UserRole | 用于显示目的的页码 (QString)。 |
QPdfDocument::PageModelRole::PointSize | 257 | 页面大小,单位为点(1/72 英寸) (QSizeF)。 |
enum class QPdfDocument::Status
该枚举描述文件的当前状态。
常量 | 值 | 描述 |
---|---|---|
QPdfDocument::Status::Null | 0 | 文档创建或关闭后的初始状态。 |
QPdfDocument::Status::Loading | 1 | 调用load() 后、文档完全加载前的状态。 |
QPdfDocument::Status::Ready | 2 | 文档完全加载并可访问其数据时的状态。 |
QPdfDocument::Status::Unloading | 3 | 在打开的文档上调用close() 后的状态。此时文档仍然有效,所有数据都可以访问。 |
QPdfDocument::Status::Error | 4 | 加载失败后的状态。 |
另请参阅 QPdfDocument::status()。
属性文档
[read-only]
pageCount : const int
该属性保存已加载文档的页数,如果未加载文档,则保存0
。
访问功能:
int | pageCount() const |
通知信号:
void | pageCountChanged(int pageCount) |
[read-only]
pageModel : QAbstractListModel* const
该属性包含QAbstractListModel 的一个实例,用于提供特定于页面的元数据,文档中的每一页都包含一行。
访问功能:
QAbstractListModel * | pageModel() |
Notifier 信号:
void | pageModelChanged() |
另请参见 QPdfDocument::PageModelRole 。
password : QString
该属性用于保存文档密码。
如果文档受密码保护,用户必须提供密码,应用程序也必须设置该属性。否则,不需要设置。
访问功能:
QString | password() const |
void | setPassword(const QString &password) |
通知信号:
void | passwordChanged() |
[read-only]
status : const Status
该属性保存文档的当前状态。
访问功能:
QPdfDocument::Status | status() const |
Notifier 信号:
void | statusChanged(QPdfDocument::Status status) |
成员函数 文档
[explicit]
QPdfDocument::QPdfDocument(QObject *parent)
以父对象parent 构建新文档。
[override virtual noexcept]
QPdfDocument::~QPdfDocument()
销毁文件。
void QPdfDocument::close()
关闭文件。
QPdfDocument::Error QPdfDocument::error() const
如果status 是Error
,则返回错误类型;如果没有错误,则返回NoError
。
[invokable]
QPdfSelection QPdfDocument::getAllText(int page)
返回给定page 上的所有文本及其边界。
注: 可通过元对象系统和 QML 调用此函数。请参见Q_INVOKABLE 。
[invokable]
QPdfSelection QPdfDocument::getSelection(int page, QPointF start, QPointF end)
返回给定page 上在给定start 和end 点之间的文本信息(如果有)。
注: 可通过元对象系统和 QML 调用此函数。请参见Q_INVOKABLE 。
[invokable]
QPdfSelection QPdfDocument::getSelectionAtIndex(int page, int startIndex, int maxLength)
返回从给定的startIndex 开始的给定page 上的文本信息,最多包含maxLength 个字符。
注: 可通过元对象系统和 QML 调用此函数。请参见Q_INVOKABLE 。
void QPdfDocument::load(QIODevice *device)
从device 加载文件内容。
QPdfDocument::Error QPdfDocument::load(const QString &fileName)
从fileName 加载文件内容。
QVariant QPdfDocument::metaData(QPdfDocument::MetaDataField field) const
返回给定field 文档的元数据。
[invokable, since 6.6]
int QPdfDocument::pageIndexForLabel(const QString &label)
返回label 页面的索引,如果找不到,则返回-1
。
注: 可通过元对象系统和 QML 调用此函数。请参见Q_INVOKABLE 。
此函数在 Qt 6.6 中引入。
另请参阅 pageLabel() 。
[invokable]
QString QPdfDocument::pageLabel(int page)
返回用于显示的page 编号。
例如,一份文件可能有多个部分,编号各不相同。也许前言使用罗马数字,正文从第 1 页开始,而附录从 A1 开始。无论 PDF 阅读器何时显示页码,为避免混淆用户,页码都应与打印在页角上的 "数字 "相同,而不是我们在 API 中使用的基于 0 的页面索引(假设文档作者已经使页面标签与打印的数字一致)。
如果文档没有自定义页码,该函数将返回page + 1
。
注: 此函数可通过元对象系统和 QML 调用。请参见Q_INVOKABLE 。
另请参阅 pageIndexForLabel() 。
[invokable]
QSizeF QPdfDocument::pagePointSize(int page) const
返回page 页面的大小,单位为点(1/72 英寸)。
注: 可通过元对象系统和 QML 调用此函数。请参见Q_INVOKABLE 。
QImage QPdfDocument::render(int page, QSize imageSize, QPdfDocumentRenderOptions renderOptions = QPdfDocumentRenderOptions())
根据提供的renderOptions 将page 渲染成大小为imageSize 的QImage 。
如果出现错误,则返回渲染后的页面或空图像。
注:如果imageSize 与 PDF 文档中页面的宽高比不匹配,则会按比例渲染页面,使其覆盖整个imageSize 。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.