Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qpdfdocument.h
Go to the documentation of this file.
1// Copyright (C) 2020 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QPDFDOCUMENT_H
5#define QPDFDOCUMENT_H
6
7#include <QtPdf/qtpdfglobal.h>
8
9#include <QtCore/qobject.h>
10#include <QtCore/QAbstractListModel>
11#include <QtGui/qimage.h>
12#include <QtPdf/qpdfdocumentrenderoptions.h>
13#include <QtPdf/qpdfselection.h>
14
16
17class QPdfDocumentPrivate;
18class QNetworkReply;
19
20class Q_PDF_EXPORT QPdfDocument : public QObject
21{
22 Q_OBJECT
23
24 Q_PROPERTY(int pageCount READ pageCount NOTIFY pageCountChanged FINAL)
25 Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged FINAL)
26 Q_PROPERTY(Status status READ status NOTIFY statusChanged FINAL)
27 Q_PROPERTY(QAbstractListModel* pageModel READ pageModel NOTIFY pageModelChanged FINAL)
28
29public:
30 enum class Status {
31 Null,
32 Loading,
33 Ready,
34 Unloading,
35 Error
36 };
37 Q_ENUM(Status)
38
39 enum class Error {
40 None,
41 Unknown,
42 DataNotYetAvailable,
43 FileNotFound,
44 InvalidFileFormat,
45 IncorrectPassword,
46 UnsupportedSecurityScheme
47 };
48 Q_ENUM(Error)
49
50 enum class MetaDataField {
51 Title,
52 Subject,
53 Author,
54 Keywords,
55 Producer,
56 Creator,
57 CreationDate,
58 ModificationDate
59 };
60 Q_ENUM(MetaDataField)
61
62 enum class PageModelRole {
63 Label = Qt::UserRole,
64 PointSize,
65 NRoles
66 };
67 Q_ENUM(PageModelRole)
68
69 QPdfDocument() : QPdfDocument(nullptr) {}
70 explicit QPdfDocument(QObject *parent);
71 ~QPdfDocument() override;
72
73 Error load(const QString &fileName);
74
75 Status status() const;
76
77 void load(QIODevice *device);
78 void setPassword(const QString &password);
79 QString password() const;
80
81 QVariant metaData(MetaDataField field) const;
82
83 Error error() const;
84
85 void close();
86
87 int pageCount() const;
88
89 Q_INVOKABLE QSizeF pagePointSize(int page) const;
90
91 Q_INVOKABLE QString pageLabel(int page);
92 Q_INVOKABLE int pageIndexForLabel(const QString &label);
93
94 QAbstractListModel *pageModel();
95
96#if QT_PDF_REMOVED_SINCE(6, 12)
97 QImage render(int page, QSize imageSize, QPdfDocumentRenderOptions options);
98#endif
99 QImage render(int page, QSize imageSize, QPdfDocumentRenderOptions options = {},
100 QImage::Format format = QImage::Format_ARGB32,
101 QColor fillColor = Qt::transparent);
102
103 Q_INVOKABLE QPdfSelection getSelection(int page, QPointF start, QPointF end);
104 Q_INVOKABLE QPdfSelection getSelectionAtIndex(int page, int startIndex, int maxLength);
105 Q_INVOKABLE QPdfSelection getAllText(int page);
106
107Q_SIGNALS:
108 void passwordChanged();
109 void passwordRequired();
110 void statusChanged(QPdfDocument::Status status);
111 void pageCountChanged(int pageCount);
112 void pageModelChanged();
113
114private:
115 friend struct QPdfBookmarkModelPrivate;
116 friend class QPdfFile;
117 friend class QPdfLinkModelPrivate;
118 friend class QPdfPageModel;
119 friend class QPdfSearchModel;
120 friend class QPdfSearchModelPrivate;
121 friend class QQuickPdfSelection;
122
123 QString fileName() const;
124
125 Q_PRIVATE_SLOT(d, void _q_tryLoadingWithSizeFromContentHeader())
126 Q_PRIVATE_SLOT(d, void _q_copyFromSequentialSourceDevice())
127 QScopedPointer<QPdfDocumentPrivate> d;
128};
129
130QT_END_NAMESPACE
131
132#endif // QPDFDOCUMENT_H
The QPdfBookmarkModel class holds a tree of links (anchors) within a PDF document,...
The QPdfDocument class loads a PDF document and renders pages from it.
Combined button and popup list for selecting options.
#define Q_PDF_LOGGING_CATEGORY(name,...)
QHash< int, QByteArray > m_roleNames
QPointer< QPdfDocument > m_document
void appendChildNode(BookmarkNode *parentBookmarkNode, FPDF_BOOKMARK parentBookmark, int level, FPDF_DOCUMENT document)
QScopedPointer< BookmarkNode > m_rootNode