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 }

属性

公共功能

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::None0未发生错误。
QPdfDocument::Error::Unknown1错误类型不明。
QPdfDocument::Error::DataNotYetAvailable2文件仍在加载中,尝试操作为时过早。
QPdfDocument::Error::FileNotFound3未找到给load() 的文件。
QPdfDocument::Error::InvalidFileFormat4load() 的文件不是有效的 PDF 文件。
QPdfDocument::Error::IncorrectPassword5setPassword() 的密码不适合该文件。
QPdfDocument::Error::UnsupportedSecurityScheme6QPdfDocument 无法解锁此类 PDF 文件。

另请参阅 QPdfDocument::error()。

enum class QPdfDocument::MetaDataField

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

常量说明
QPdfDocument::MetaDataField::Title0文件标题,如QString
QPdfDocument::MetaDataField::Author2创建文档的人的姓名,如QString
QPdfDocument::MetaDataField::Subject1文件主题为QString
QPdfDocument::MetaDataField::Keywords3与文档相关的关键字,如QString
QPdfDocument::MetaDataField::Creator5如果文档是从其他格式转换为 PDF 的,则创建原始文档的合规产品的名称为QString
QPdfDocument::MetaDataField::Producer4如果文档是从其他格式转换为 PDF 的,将其转换为 PDF 的符合产品的名称为QString
QPdfDocument::MetaDataField::CreationDate6文档创建的日期和时间,如QDateTime
QPdfDocument::MetaDataField::ModificationDate7文档最近修改的日期和时间,如QDateTime

另请参阅 QPdfDocument::metaData() 。

enum class QPdfDocument::PageModelRole

pageModel() 中的角色。

常数说明
QPdfDocument::PageModelRole::LabelQt::UserRole用于显示目的的页码 (QString)。
QPdfDocument::PageModelRole::PointSize257页面大小,单位为点(1/72 英寸) (QSizeF)。

enum class QPdfDocument::Status

该枚举描述文件的当前状态。

常量描述
QPdfDocument::Status::Null0文档创建或关闭后的初始状态。
QPdfDocument::Status::Loading1调用load() 后、文档完全加载前的状态。
QPdfDocument::Status::Ready2文档完全加载并可访问其数据时的状态。
QPdfDocument::Status::Unloading3在打开的文档上调用close() 后的状态。此时文档仍然有效,所有数据都可以访问。
QPdfDocument::Status::Error4加载失败后的状态。

另请参阅 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

如果statusError ,则返回错误类型;如果没有错误,则返回NoError

[invokable] QPdfSelection QPdfDocument::getAllText(int page)

返回给定page 上的所有文本及其边界。

注: 可通过元对象系统和 QML 调用此函数。请参见Q_INVOKABLE

[invokable] QPdfSelection QPdfDocument::getSelection(int page, QPointF start, QPointF end)

返回给定page 上在给定startend 点之间的文本信息(如果有)。

注: 可通过元对象系统和 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())

根据提供的renderOptionspage 渲染成大小为imageSizeQImage

如果出现错误,则返回渲染后的页面或空图像。

注:如果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.