File size: 3,861 Bytes
3bb804c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
// qpdfdocument.sip generated by MetaSIP
//
// This file is part of the QtPdf Python extension module.
//
// Copyright (c) 2025 Riverbank Computing Limited <info@riverbankcomputing.com>
// 
// This file is part of PyQt6.
// 
// This file may be used under the terms of the GNU General Public License
// version 3.0 as published by the Free Software Foundation and appearing in
// the file LICENSE included in the packaging of this file.  Please review the
// following information to ensure the GNU General Public License version 3.0
// requirements will be met: http://www.gnu.org/copyleft/gpl.html.
// 
// If you do not wish to use this file under the terms of the GPL version 3.0
// then you may purchase a commercial license.  For more information contact
// info@riverbankcomputing.com.
// 
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.


class QPdfDocument : public QObject
{
%TypeHeaderCode
#include <qpdfdocument.h>
%End

%ConvertToSubClassCode
    static struct class_graph {
        const char *name;
        sipTypeDef **type;
        int yes, no;
    } graph[] = {
        {sipName_QPdfBookmarkModel, &sipType_QPdfBookmarkModel, -1, 1},
        {sipName_QPdfDocument, &sipType_QPdfDocument, -1, 2},
    #if QT_VERSION >= 0x060600
        {sipName_QPdfLinkModel, &sipType_QPdfLinkModel, -1, 3},
    #else
        {0, 0, -1, 3},
    #endif
        {sipName_QPdfPageNavigator, &sipType_QPdfPageNavigator, -1, 4},
        {sipName_QPdfPageRenderer, &sipType_QPdfPageRenderer, -1, 5},
        {sipName_QPdfSearchModel, &sipType_QPdfSearchModel, -1, -1},
    };
    
    int i = 0;
    
    sipType = NULL;
    
    do
    {
        struct class_graph *cg = &graph[i];
    
        if (cg->name != NULL && sipCpp->inherits(cg->name))
        {
            sipType = *cg->type;
            i = cg->yes;
        }
        else
            i = cg->no;
    }
    while (i >= 0);
%End

public:
    enum class Status
    {
        Null,
        Loading,
        Ready,
        Unloading,
        Error,
    };

    enum class Error
    {
        None,
        Unknown,
        DataNotYetAvailable,
        FileNotFound,
        InvalidFileFormat,
        IncorrectPassword,
        UnsupportedSecurityScheme,
    };

    enum class MetaDataField
    {
        Title,
        Subject,
        Author,
        Keywords,
        Producer,
        Creator,
        CreationDate,
        ModificationDate,
    };

    enum class PageModelRole /BaseType=IntEnum/
    {
        Label,
        PointSize,
    };

    explicit QPdfDocument(QObject *parent /TransferThis/);
    virtual ~QPdfDocument();
    QPdfDocument::Error load(const QString &fileName) /ReleaseGIL/;
    void load(QIODevice *device) /ReleaseGIL/;
    QPdfDocument::Status status() const;
    void setPassword(const QString &password);
    QString password() const;
    QVariant metaData(QPdfDocument::MetaDataField field) const;
    QPdfDocument::Error error() const;
    void close();
    int pageCount() const;
    QSizeF pagePointSize(int page) const;
    QString pageLabel(int page);
    QAbstractListModel *pageModel();
    QImage render(int page, QSize imageSize, QPdfDocumentRenderOptions options = QPdfDocumentRenderOptions());
    QPdfSelection getSelection(int page, QPointF start, QPointF end);
    QPdfSelection getSelectionAtIndex(int page, int startIndex, int maxLength);
    QPdfSelection getAllText(int page);
%If (Qt_6_6_0 -)
    int pageIndexForLabel(const QString &label);
%End

signals:
    void passwordChanged();
    void statusChanged(QPdfDocument::Status status);
    void pageCountChanged(int pageCount);
    void pageModelChanged();
};