Poppler Qt6 24.05.0
poppler-qt6.h
1/* poppler-qt.h: qt interface to poppler
2 * Copyright (C) 2005, Net Integration Technologies, Inc.
3 * Copyright (C) 2005, 2007, Brad Hards <bradh@frogmouth.net>
4 * Copyright (C) 2005-2015, 2017-2022, Albert Astals Cid <aacid@kde.org>
5 * Copyright (C) 2005, Stefan Kebekus <stefan.kebekus@math.uni-koeln.de>
6 * Copyright (C) 2006-2011, Pino Toscano <pino@kde.org>
7 * Copyright (C) 2009 Shawn Rutledge <shawn.t.rutledge@gmail.com>
8 * Copyright (C) 2010 Suzuki Toshiya <mpsuzuki@hiroshima-u.ac.jp>
9 * Copyright (C) 2010 Matthias Fauconneau <matthias.fauconneau@gmail.com>
10 * Copyright (C) 2011 Andreas Hartmetz <ahartmetz@gmail.com>
11 * Copyright (C) 2011 Glad Deschrijver <glad.deschrijver@gmail.com>
12 * Copyright (C) 2012, Guillermo A. Amaral B. <gamaral@kde.org>
13 * Copyright (C) 2012, Fabio D'Urso <fabiodurso@hotmail.it>
14 * Copyright (C) 2012, Tobias Koenig <tobias.koenig@kdab.com>
15 * Copyright (C) 2012, 2014, 2015, 2018, 2019 Adam Reichold <adamreichold@myopera.com>
16 * Copyright (C) 2012, 2013 Thomas Freitag <Thomas.Freitag@alfa.de>
17 * Copyright (C) 2013 Anthony Granger <grangeranthony@gmail.com>
18 * Copyright (C) 2016 Jakub Alba <jakubalba@gmail.com>
19 * Copyright (C) 2017, 2020, 2021 Oliver Sander <oliver.sander@tu-dresden.de>
20 * Copyright (C) 2017, 2018 Klarälvdalens Datakonsult AB, a KDAB Group company, <info@kdab.com>. Work sponsored by the LiMux project of the city of Munich
21 * Copyright (C) 2018, 2021 Nelson Benítez León <nbenitezl@gmail.com>
22 * Copyright (C) 2019 Jan Grulich <jgrulich@redhat.com>
23 * Copyright (C) 2019 Alexander Volkov <a.volkov@rusbitech.ru>
24 * Copyright (C) 2020 Philipp Knechtges <philipp-dev@knechtges.com>
25 * Copyright (C) 2020 Katarina Behrens <Katarina.Behrens@cib.de>
26 * Copyright (C) 2020 Thorsten Behrens <Thorsten.Behrens@CIB.de>
27 * Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, <info@kdab.com>. Work sponsored by Technische Universität Dresden
28 * Copyright (C) 2021 Klarälvdalens Datakonsult AB, a KDAB Group company, <info@kdab.com>.
29 * Copyright (C) 2021 Mahmoud Khalil <mahmoudkhalil11@gmail.com>
30 * Copyright (C) 2021 Georgiy Sgibnev <georgiy@sgibnev.com>. Work sponsored by lab50.net.
31 * Copyright (C) 2022 Martin <martinbts@gmx.net>
32 * Copyright (C) 2023 Kevin Ottens <kevin.ottens@enioka.com>. Work sponsored by De Bortoli Wines
33 *
34 * This program is free software; you can redistribute it and/or modify
35 * it under the terms of the GNU General Public License as published by
36 * the Free Software Foundation; either version 2, or (at your option)
37 * any later version.
38 *
39 * This program is distributed in the hope that it will be useful,
40 * but WITHOUT ANY WARRANTY; without even the implied warranty of
41 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
42 * GNU General Public License for more details.
43 *
44 * You should have received a copy of the GNU General Public License
45 * along with this program; if not, write to the Free Software
46 * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
47 */
48
49#ifndef __POPPLER_QT_H__
50#define __POPPLER_QT_H__
51
52#include <functional>
53#include <memory>
54#include <vector>
55
56#include "poppler-annotation.h"
57#include "poppler-link.h"
58#include "poppler-optcontent.h"
59#include "poppler-page-transition.h"
60
61#include <QtCore/QByteArray>
62#include <QtCore/QDateTime>
63#include <QtCore/QIODevice>
64#include <QtCore/QSet>
65#include "poppler-export.h"
66
67class EmbFile;
68class Sound;
69class AnnotMovie;
70
74namespace Poppler {
75
76class Document;
77class DocumentData;
78
79class PageData;
80
81class FormField;
82class FormFieldSignature;
83
84class TextBoxData;
85
86class PDFConverter;
87class PSConverter;
88
89struct OutlineItemData;
90
98using PopplerDebugFunc = void (*)(const QString & /*message*/, const QVariant & /*closure*/);
99
109POPPLER_QT6_EXPORT void setDebugErrorFunction(PopplerDebugFunc debugFunction, const QVariant &closure);
110
120class POPPLER_QT6_EXPORT TextBox
121{
122 friend class Page;
123
124public:
130 TextBox(const QString &text, const QRectF &bBox);
135
139 QString text() const;
140
145 QRectF boundingBox() const;
146
153
157 QRectF charBoundingBox(int i) const;
158
162 bool hasSpaceAfter() const;
163
164private:
165 Q_DISABLE_COPY(TextBox)
166
167 TextBoxData *m_data;
168};
169
170class FontInfoData;
175class POPPLER_QT6_EXPORT FontInfo
176{
177 friend class Document;
178
179public:
183 enum Type
184 {
185 unknown,
186 Type1,
187 Type1C,
188 Type1COT,
189 Type3,
190 TrueType,
191 TrueTypeOT,
192 CIDType0,
193 CIDType0C,
194 CIDType0COT,
195 CIDTrueType,
196 CIDTrueTypeOT
197 };
198
200
203 FontInfo();
204
208 explicit FontInfo(const FontInfoData &fid);
210
214 FontInfo(const FontInfo &fi);
215
220
224 QString name() const;
225
229 QString substituteName() const;
230
235 QString file() const;
236
242 bool isEmbedded() const;
243
250 bool isSubset() const;
251
259 Type type() const;
260
269 QString typeName() const;
270
275
276private:
277 FontInfoData *m_data;
278};
279
280class FontIteratorData;
297class POPPLER_QT6_EXPORT FontIterator
298{
299 friend class Document;
300 friend class DocumentData;
301
302public:
307
312 QList<FontInfo> next();
313
318 bool hasNext() const;
319
323 int currentPage() const;
324
325private:
326 Q_DISABLE_COPY(FontIterator)
327 FontIterator(int, DocumentData *dd);
328
329 FontIteratorData *d;
330};
331
332class EmbeddedFileData;
336class POPPLER_QT6_EXPORT EmbeddedFile
337{
338 friend class DocumentData;
339 friend class AnnotationPrivate;
340
341public:
343 explicit EmbeddedFile(EmbFile *embfile);
345
350
354 QString name() const;
355
361 QString description() const;
362
368 int size() const;
369
373 QDateTime modDate() const;
374
378 QDateTime createDate() const;
379
385 QByteArray checksum() const;
386
390 QString mimeType() const;
391
395 QByteArray data();
396
400 bool isValid() const;
401
405 // QDataStream dataStream() const;
406
407private:
408 Q_DISABLE_COPY(EmbeddedFile)
409 explicit EmbeddedFile(EmbeddedFileData &dd);
410
411 EmbeddedFileData *m_embeddedFile;
412};
413
422class POPPLER_QT6_EXPORT Page
423{
424 friend class Document;
425
426public:
431
436 {
437 Rotate0 = 0,
438 Rotate90 = 1,
439 Rotate180 = 2,
440 Rotate270 = 3
441 };
442
447 {
449 Closing
450 };
451
456 {
458 RawOrderLayout
459 };
460
465 {
466 NoPainterFlags = 0x00000000,
474 DontSaveAndRestore = 0x00000001
475 };
476 Q_DECLARE_FLAGS(PainterFlags, PainterFlag)
477
478
514 QImage renderToImage(double xres = 72.0, double yres = 72.0, int x = -1, int y = -1, int w = -1, int h = -1, Rotation rotate = Rotate0) const;
515
523 using RenderToImagePartialUpdateFunc = void (*)(const QImage & /*image*/, const QVariant & /*closure*/);
524
531 using ShouldRenderToImagePartialQueryFunc = bool (*)(const QVariant & /*closure*/);
532
580 QImage renderToImage(double xres, double yres, int x, int y, int w, int h, Rotation rotate, RenderToImagePartialUpdateFunc partialUpdateCallback, ShouldRenderToImagePartialQueryFunc shouldDoPartialUpdateCallback,
581 const QVariant &payload) const;
582
588 using ShouldAbortQueryFunc = bool (*)(const QVariant & /*closure*/);
589
641 QImage renderToImage(double xres, double yres, int x, int y, int w, int h, Rotation rotate, RenderToImagePartialUpdateFunc partialUpdateCallback, ShouldRenderToImagePartialQueryFunc shouldDoPartialUpdateCallback,
642 ShouldAbortQueryFunc shouldAbortRenderCallback, const QVariant &payload) const;
643
684 bool renderToPainter(QPainter *painter, double xres = 72.0, double yres = 72.0, int x = -1, int y = -1, int w = -1, int h = -1, Rotation rotate = Rotate0, PainterFlags flags = NoPainterFlags) const;
685
692 QImage thumbnail() const;
693
701 QString text(const QRectF &rect, TextLayout textLayout) const;
702
711 QString text(const QRectF &rect) const;
712
717 {
720 PreviousResult
721 };
722
727 {
729 CaseInsensitive
730 };
731
736 {
737 NoSearchFlags = 0x00000000,
738 IgnoreCase = 0x00000001,
739 WholeWords = 0x00000002,
740 IgnoreDiacritics = 0x00000004,
743 AcrossLines = 0x00000008
746 };
747 Q_DECLARE_FLAGS(SearchFlags, SearchFlag)
748
749
759 bool search(const QString &text, double &sLeft, double &sTop, double &sRight, double &sBottom, SearchDirection direction, SearchFlags flags = NoSearchFlags, Rotation rotate = Rotate0) const;
760
773 QList<QRectF> search(const QString &text, SearchFlags flags = NoSearchFlags, Rotation rotate = Rotate0) const;
774
788 std::vector<std::unique_ptr<TextBox>> textList(Rotation rotate = Rotate0) const;
789
809 std::vector<std::unique_ptr<TextBox>> textList(Rotation rotate, ShouldAbortQueryFunc shouldAbortExtractionCallback, const QVariant &closure) const;
810
814 QSizeF pageSizeF() const;
815
819 QSize pageSize() const;
820
831 PageTransition *transition() const;
832
836 std::unique_ptr<Link> action(PageAction act) const;
837
848
853
857 void defaultCTM(double *CTM, double dpiX, double dpiY, int rotate, bool upsideDown);
858
862 std::vector<std::unique_ptr<Link>> links() const;
863
870 std::vector<std::unique_ptr<Annotation>> annotations() const;
871
880 std::vector<std::unique_ptr<Annotation>> annotations(const QSet<Annotation::SubType> &subtypes) const;
881
888 void addAnnotation(const Annotation *ann);
889
895 void removeAnnotation(const Annotation *ann);
896
900 std::vector<std::unique_ptr<FormField>> formFields() const;
901
907 double duration() const;
908
912 QString label() const;
913
917 int index() const;
918
919private:
920 Q_DISABLE_COPY(Page)
921
922 Page(DocumentData *doc, int index);
923 PageData *m_page;
924};
925
931class POPPLER_QT6_EXPORT OutlineItem
932{
933 friend class Document;
934
935public:
940 ~OutlineItem();
941
942 OutlineItem(const OutlineItem &other);
943 OutlineItem &operator=(const OutlineItem &other);
944
945 OutlineItem(OutlineItem &&other) noexcept;
946 OutlineItem &operator=(OutlineItem &&other) noexcept;
947
951 bool isNull() const;
952
956 QString name() const;
957
961 bool isOpen() const;
962
968 QSharedPointer<const LinkDestination> destination() const;
969
975 QString externalFileName() const;
976
982 QString uri() const;
983
989 bool hasChildren() const;
990
996 QVector<OutlineItem> children() const;
997
998private:
999 explicit OutlineItem(OutlineItemData *data);
1000 OutlineItemData *m_data;
1001};
1002
1053class POPPLER_QT6_EXPORT Document
1054{
1055 friend class Page;
1056 friend class DocumentData;
1057
1058public:
1071
1085
1090 {
1092 QPainterBackend
1094
1099 {
1100 Antialiasing = 0x00000001,
1101 TextAntialiasing = 0x00000002,
1102 TextHinting = 0x00000004,
1103 TextSlightHinting = 0x00000008,
1104 OverprintPreview = 0x00000010,
1105 ThinLineSolid = 0x00000020,
1106 ThinLineShape = 0x00000040,
1107 IgnorePaperColor = 0x00000080,
1108 HideAnnotations = 0x00000100
1110 Q_DECLARE_FLAGS(RenderHints, RenderHint)
1111
1112
1116 {
1119 XfaForm
1121
1132 void setColorDisplayProfile(void *outputProfileA);
1140 void setColorDisplayProfileName(const QString &name);
1149 void *colorRgbProfile() const;
1158 void *colorDisplayProfile() const;
1159
1174 static std::unique_ptr<Document> load(const QString &filePath, const QByteArray &ownerPassword = QByteArray(), const QByteArray &userPassword = QByteArray());
1175
1193 static std::unique_ptr<Document> load(QIODevice *device, const QByteArray &ownerPassword = QByteArray(), const QByteArray &userPassword = QByteArray());
1194
1211 static std::unique_ptr<Document> loadFromData(const QByteArray &fileContents, const QByteArray &ownerPassword = QByteArray(), const QByteArray &userPassword = QByteArray());
1212
1228 std::unique_ptr<Page> page(int index) const;
1229
1242 std::unique_ptr<Page> page(const QString &label) const;
1243
1247 int numPages() const;
1248
1255
1262
1267 Qt::LayoutDirection textDirection() const;
1268
1277 bool unlock(const QByteArray &ownerPassword, const QByteArray &userPassword);
1278
1282 bool isLocked() const;
1283
1299 QDateTime date(const QString &type) const;
1300
1306 bool setDate(const QString &key, const QDateTime &val);
1307
1311 QDateTime creationDate() const;
1312
1318 bool setCreationDate(const QDateTime &val);
1319
1323 QDateTime modificationDate() const;
1324
1330 bool setModificationDate(const QDateTime &val);
1331
1348 QString info(const QString &type) const;
1349
1355 bool setInfo(const QString &key, const QString &val);
1356
1360 QString title() const;
1361
1367 bool setTitle(const QString &val);
1368
1372 QString author() const;
1373
1379 bool setAuthor(const QString &val);
1380
1384 QString subject() const;
1385
1391 bool setSubject(const QString &val);
1392
1396 QString keywords() const;
1397
1403 bool setKeywords(const QString &val);
1404
1408 QString creator() const;
1409
1415 bool setCreator(const QString &val);
1416
1420 QString producer() const;
1421
1427 bool setProducer(const QString &val);
1428
1435
1439 QStringList infoKeys() const;
1440
1444 bool isEncrypted() const;
1445
1452 bool isLinearized() const;
1453
1458 bool okToPrint() const;
1459
1464 bool okToPrintHighRes() const;
1465
1473 bool okToChange() const;
1474
1479 bool okToCopy() const;
1480
1486 bool okToAddNotes() const;
1487
1495 bool okToFillForm() const;
1496
1503
1510
1518 bool okToAssemble() const;
1519
1522 {
1523 int major;
1524 int minor;
1525 };
1526
1534
1546 QList<FontInfo> fonts() const;
1547
1558 std::unique_ptr<FontIterator> newFontIterator(int startPage = 0) const;
1559
1563 QByteArray fontData(const FontInfo &fi) const;
1564
1573 QList<EmbeddedFile *> embeddedFiles() const;
1574
1578 bool hasEmbeddedFiles() const;
1579
1585 QVector<OutlineItem> outline() const;
1586
1595 std::unique_ptr<LinkDestination> linkDestination(const QString &name);
1596
1602 void setPaperColor(const QColor &color);
1608 QColor paperColor() const;
1609
1622
1626 static QSet<RenderBackend> availableRenderBackends();
1627
1635 void setRenderHint(RenderHint hint, bool on = true);
1639 RenderHints renderHints() const;
1640
1644 std::unique_ptr<PSConverter> psConverter() const;
1645
1649 std::unique_ptr<PDFConverter> pdfConverter() const;
1650
1654 QString metadata() const;
1655
1667
1674
1681 QStringList scripts() const;
1682
1693 bool getPdfId(QByteArray *permanentId, QByteArray *updateId) const;
1694
1699
1703 QVector<int> formCalculateOrder() const;
1704
1711 std::vector<std::unique_ptr<FormFieldSignature>> signatures() const;
1712
1719
1726 void setXRefReconstructedCallback(const std::function<void()> &callback);
1727
1732
1733private:
1734 Q_DISABLE_COPY(Document)
1735
1736 DocumentData *m_doc;
1737
1738 explicit Document(DocumentData *dataA);
1739};
1740
1741class BaseConverterPrivate;
1742class PSConverterPrivate;
1743class PDFConverterPrivate;
1749class POPPLER_QT6_EXPORT BaseConverter
1750{
1751 friend class Document;
1752
1753public:
1758
1760 void setOutputFileName(const QString &outputFileName);
1761
1765 void setOutputDevice(QIODevice *device);
1766
1772 virtual bool convert() = 0;
1773
1774 enum Error
1775 {
1776 NoError,
1777 FileLockedError,
1778 OpenOutputError,
1779 NotSupportedInputFileError
1780 };
1781
1785 Error lastError() const;
1786
1787protected:
1789 explicit BaseConverter(BaseConverterPrivate &dd);
1790 Q_DECLARE_PRIVATE(BaseConverter)
1791 BaseConverterPrivate *d_ptr;
1793
1794private:
1795 Q_DISABLE_COPY(BaseConverter)
1796};
1797
1812class POPPLER_QT6_EXPORT PSConverter : public BaseConverter
1813{
1814 friend class Document;
1815
1816public:
1821 {
1822 Printing = 0x00000001,
1823 StrictMargins = 0x00000002,
1824 ForceRasterization = 0x00000004,
1825 PrintToEPS = 0x00000008,
1826 HideAnnotations = 0x00000010,
1827 ForceOverprintPreview = 0x00000020
1829 Q_DECLARE_FLAGS(PSOptions, PSOption)
1830
1831
1834 ~PSConverter() override;
1835
1837 void setPageList(const QList<int> &pageList);
1838
1842 void setTitle(const QString &title);
1843
1847 void setHDPI(double hDPI);
1848
1852 void setVDPI(double vDPI);
1853
1857 void setRotate(int rotate);
1858
1862 void setPaperWidth(int paperWidth);
1863
1867 void setPaperHeight(int paperHeight);
1868
1872 void setRightMargin(int marginRight);
1873
1877 void setBottomMargin(int marginBottom);
1878
1882 void setLeftMargin(int marginLeft);
1883
1887 void setTopMargin(int marginTop);
1888
1896 void setStrictMargins(bool strictMargins);
1897
1906 void setForceOverprintPreview(bool forceOverprintPreview);
1907
1909 void setForceRasterize(bool forceRasterize);
1910
1914 void setPSOptions(PSOptions options);
1915
1921 PSOptions psOptions() const;
1922
1928 void setPageConvertedCallback(void (*callback)(int page, void *payload), void *payload);
1929
1930 bool convert() override;
1931
1932private:
1933 Q_DECLARE_PRIVATE(PSConverter)
1934 Q_DISABLE_COPY(PSConverter)
1935
1936 explicit PSConverter(DocumentData *document);
1937};
1938
1942class POPPLER_QT6_EXPORT PDFConverter : public BaseConverter
1943{
1944 friend class Document;
1945
1946public:
1951 {
1952 WithChanges = 0x00000001
1954 Q_DECLARE_FLAGS(PDFOptions, PDFOption)
1955
1956
1959 ~PDFConverter() override;
1960
1964 void setPDFOptions(PDFOptions options);
1968 PDFOptions pdfOptions() const;
1969
1982 class POPPLER_QT6_EXPORT NewSignatureData
1983 {
1984 public:
1987 NewSignatureData(const NewSignatureData &) = delete;
1988 NewSignatureData &operator=(const NewSignatureData &) = delete;
1989
1990 QString certNickname() const;
1991 void setCertNickname(const QString &certNickname);
1992
1993 QString password() const;
1994 void setPassword(const QString &password);
1995
1996 int page() const;
1997 void setPage(int page);
1998
1999 QRectF boundingRectangle() const;
2000 void setBoundingRectangle(const QRectF &rect);
2001
2002 QString signatureText() const;
2003 void setSignatureText(const QString &text);
2004
2012 QString signatureLeftText() const;
2013 void setSignatureLeftText(const QString &text);
2014
2022 QString reason() const;
2023 void setReason(const QString &reason);
2024
2032 QString location() const;
2033 void setLocation(const QString &location);
2034
2038 double fontSize() const;
2039 void setFontSize(double fontSize);
2040
2046 double leftFontSize() const;
2047 void setLeftFontSize(double fontSize);
2048
2052 QColor fontColor() const;
2053 void setFontColor(const QColor &color);
2054
2058 QColor borderColor() const;
2059 void setBorderColor(const QColor &color);
2060
2068 double borderWidth() const;
2069 void setBorderWidth(double width);
2070
2074 QColor backgroundColor() const;
2075 void setBackgroundColor(const QColor &color);
2076
2080 QString fieldPartialName() const;
2081 void setFieldPartialName(const QString &name);
2082
2090 QByteArray documentOwnerPassword() const;
2091 void setDocumentOwnerPassword(const QByteArray &password);
2092
2100 QByteArray documentUserPassword() const;
2101 void setDocumentUserPassword(const QByteArray &password);
2102
2111 QString imagePath() const;
2112 void setImagePath(const QString &path);
2113
2114 private:
2115 struct NewSignatureDataPrivate;
2116 NewSignatureDataPrivate *const d;
2117 };
2118
2128 bool sign(const NewSignatureData &data);
2129
2130 bool convert() override;
2131
2132private:
2133 Q_DECLARE_PRIVATE(PDFConverter)
2134 Q_DISABLE_COPY(PDFConverter)
2135
2136 explicit PDFConverter(DocumentData *document);
2137};
2138
2142POPPLER_QT6_EXPORT QDateTime convertDate(const char *dateString);
2143
2147POPPLER_QT6_EXPORT bool isCmsAvailable();
2148
2152POPPLER_QT6_EXPORT bool isOverprintPreviewAvailable();
2153
2154class SoundData;
2162class POPPLER_QT6_EXPORT SoundObject
2163{
2164public:
2169 {
2171 Embedded
2173
2184
2188 explicit SoundObject(Sound *popplersound);
2190
2191 ~SoundObject();
2192
2197
2201 QString url() const;
2202
2206 QByteArray data() const;
2207
2211 double samplingRate() const;
2212
2216 int channels() const;
2217
2221 int bitsPerSample() const;
2222
2227
2228private:
2229 Q_DISABLE_COPY(SoundObject)
2230
2231 SoundData *m_soundData;
2232};
2233
2234class MovieData;
2238class POPPLER_QT6_EXPORT MovieObject
2239{
2240 friend class AnnotationPrivate;
2241
2242public:
2247 {
2251 PlayPalindrome
2253
2254 ~MovieObject();
2255
2259 QString url() const;
2260
2264 QSize size() const;
2265
2269 int rotation() const;
2270
2274 bool showControls() const;
2275
2280
2284 bool showPosterImage() const;
2285
2291 QImage posterImage() const;
2292
2293private:
2295 explicit MovieObject(AnnotMovie *ann);
2297
2298 Q_DISABLE_COPY(MovieObject)
2299
2300 MovieData *m_movieData;
2301};
2302
2303}
2304
2305Q_DECLARE_OPERATORS_FOR_FLAGS(Poppler::Page::PainterFlags)
2306Q_DECLARE_OPERATORS_FOR_FLAGS(Poppler::Page::SearchFlags)
2307Q_DECLARE_OPERATORS_FOR_FLAGS(Poppler::Document::RenderHints)
2308Q_DECLARE_OPERATORS_FOR_FLAGS(Poppler::PDFConverter::PDFOptions)
2309Q_DECLARE_OPERATORS_FOR_FLAGS(Poppler::PSConverter::PSOptions)
2310
2311#endif
Annotation class holding properties shared by all annotations.
Definition poppler-annotation.h:174
Base converter.
Definition poppler-qt6.h:1750
virtual bool convert()=0
Does the conversion.
void setOutputDevice(QIODevice *device)
Sets the output device.
Error lastError() const
Returns the last error.
void setOutputFileName(const QString &outputFileName)
Sets the output file name.
virtual ~BaseConverter()
Destructor.
PDF document.
Definition poppler-qt6.h:1054
QString subject() const
The subject of the document.
RenderHints renderHints() const
The currently set render hints.
bool isLinearized() const
Test if the document is linearised.
bool setAuthor(const QString &val)
Set the author of the document to.
static std::unique_ptr< Document > load(const QString &filePath, const QByteArray &ownerPassword=QByteArray(), const QByteArray &userPassword=QByteArray())
Load the document from a file on disk.
bool setTitle(const QString &val)
Set the title of the document to.
bool okToChange() const
Test if the permissions on the document allow it to be changed.
QString title() const
The title of the document.
std::unique_ptr< FontIterator > newFontIterator(int startPage=0) const
Creates a new FontIterator object for font scanning.
bool okToCreateFormFields() const
Test if the permissions on the document allow interactive form fields (including signature fields) to...
bool isLocked() const
Determine if the document is locked.
std::unique_ptr< PDFConverter > pdfConverter() const
Gets a new PDF converter for this document.
bool okToCopy() const
Test if the permissions on the document allow the contents to be copied / extracted.
QVector< OutlineItem > outline() const
Gets the outline of the document.
bool getPdfId(QByteArray *permanentId, QByteArray *updateId) const
The PDF identifiers.
int numPages() const
The number of pages in the document.
bool removeInfo()
Remove the document's Info dictionary.
PageLayout
The page layout.
Definition poppler-qt6.h:1076
@ TwoPageLeft
Display the pages two at a time, with odd-numbered pages on the left.
Definition poppler-qt6.h:1082
@ TwoColumnLeft
Display the pages in two columns, with odd-numbered pages on the left.
Definition poppler-qt6.h:1080
@ SinglePage
Display a single page.
Definition poppler-qt6.h:1078
@ NoLayout
Layout not specified.
Definition poppler-qt6.h:1077
@ TwoColumnRight
Display the pages in two columns, with odd-numbered pages on the right.
Definition poppler-qt6.h:1081
@ OneColumn
Display a single column of pages.
Definition poppler-qt6.h:1079
std::unique_ptr< LinkDestination > linkDestination(const QString &name)
Tries to resolve the named destination name.
bool hasOptionalContent() const
Test whether this document has "optional content".
QDateTime date(const QString &type) const
bool okToAddNotes() const
Test if the permissions on the document allow annotations to be added or modified,...
QDateTime creationDate() const
The date of the creation of the document.
static std::unique_ptr< Document > load(QIODevice *device, const QByteArray &ownerPassword=QByteArray(), const QByteArray &userPassword=QByteArray())
Load the document from a device.
bool setCreator(const QString &val)
Set the creator of the document to.
void setRenderHint(RenderHint hint, bool on=true)
Sets the render hint .
bool setProducer(const QString &val)
Set the producer of the document to.
QStringList infoKeys() const
Obtain a list of the available string information keys.
void * colorDisplayProfile() const
Return the current display profile.
void setPaperColor(const QColor &color)
Sets the paper color.
RenderBackend
The render backends available.
Definition poppler-qt6.h:1090
@ SplashBackend
Splash backend.
Definition poppler-qt6.h:1091
std::unique_ptr< PSConverter > psConverter() const
Gets a new PS converter for this document.
bool unlock(const QByteArray &ownerPassword, const QByteArray &userPassword)
Provide the passwords required to unlock the document.
QByteArray fontData(const FontInfo &fi) const
The font data if the font is an embedded one.
std::unique_ptr< Page > page(int index) const
Get a specified Page.
bool setDate(const QString &key, const QDateTime &val)
Set the Info dict date entry specified by.
PageMode
The page mode.
Definition poppler-qt6.h:1063
@ UseOutlines
Document outline visible.
Definition poppler-qt6.h:1065
@ UseNone
No mode - neither document outline nor thumbnail images are visible.
Definition poppler-qt6.h:1064
@ UseThumbs
Thumbnail images visible.
Definition poppler-qt6.h:1066
@ FullScreen
Fullscreen mode (no menubar, windows controls etc)
Definition poppler-qt6.h:1067
@ UseOC
Optional content group panel visible.
Definition poppler-qt6.h:1068
PdfVersion getPdfVersion() const
The version of the PDF specification that the document conforms to.
QDateTime modificationDate() const
The date of the last change in the document.
void setRenderBackend(RenderBackend backend)
Sets the backend used to render the pages.
std::unique_ptr< Page > page(const QString &label) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
RenderHint
The render hints available.
Definition poppler-qt6.h:1099
Qt::LayoutDirection textDirection() const
The predominant reading order for text as supplied by the document's viewer preferences.
QString metadata() const
Gets the metadata stream contents.
void setColorDisplayProfile(void *outputProfileA)
Set a color display profile for the current document.
bool okToPrintHighRes() const
Test if the permissions on the document allow it to be printed at high resolution.
bool okToExtractForAccessibility() const
Test if the permissions on the document allow content extraction (text and perhaps other content) for...
bool setModificationDate(const QDateTime &val)
Set the modification date of the document to.
void * colorRgbProfile() const
Return the current RGB profile.
QString author() const
The author of the document.
bool isEncrypted() const
Test if the document is encrypted.
void setColorDisplayProfileName(const QString &name)
Set a color display profile for the current document.
static QSet< RenderBackend > availableRenderBackends()
The available rendering backends.
QList< EmbeddedFile * > embeddedFiles() const
The documents embedded within the PDF document.
bool okToAssemble() const
Test if the permissions on the document allow it to be "assembled" - insertion, rotation and deletion...
OptContentModel * optionalContentModel()
Itemviews model for optional content.
~Document()
Destructor.
QString creator() const
The creator of the document.
bool hasEmbeddedFiles() const
Whether there are any documents embedded in this PDF document.
QString producer() const
The producer of the document.
std::vector< std::unique_ptr< FormFieldSignature > > signatures() const
Returns the signatures of this document.
PageLayout pageLayout() const
The layout that pages should be shown in when the document is first opened.
void setXRefReconstructedCallback(const std::function< void()> &callback)
Sets the document's XRef reconstruction callback, so whenever a XRef table reconstruction happens the...
bool setSubject(const QString &val)
Set the subject of the document to.
PageMode pageMode() const
The type of mode that should be used by the application when the document is opened.
FormType
Form types.
Definition poppler-qt6.h:1116
@ AcroForm
AcroForm.
Definition poppler-qt6.h:1118
@ NoForm
Document doesn't contain forms.
Definition poppler-qt6.h:1117
bool setCreationDate(const QDateTime &val)
Set the creation date of the document to.
FormType formType() const
Returns the type of forms contained in the document.
QList< FontInfo > fonts() const
The fonts within the PDF document.
bool xrefWasReconstructed() const
Returns whether the document's XRef table has been reconstructed or not.
QColor paperColor() const
The paper color.
QString keywords() const
The keywords of the document.
bool okToPrint() const
Test if the permissions on the document allow it to be printed.
static std::unique_ptr< Document > loadFromData(const QByteArray &fileContents, const QByteArray &ownerPassword=QByteArray(), const QByteArray &userPassword=QByteArray())
Load the document from memory.
RenderBackend renderBackend() const
The currently set render backend.
QVector< int > formCalculateOrder() const
Returns the calculate order for forms (using their id)
bool setKeywords(const QString &val)
Set the keywords of the document to.
QStringList scripts() const
Document-level JavaScript scripts.
QString info(const QString &type) const
bool setInfo(const QString &key, const QString &val)
Set the value of the document's Info dictionary entry specified by.
bool okToFillForm() const
Test if the permissions on the document allow interactive form fields (including signature fields) to...
Container class for an embedded file with a PDF document.
Definition poppler-qt6.h:337
bool isValid() const
Is the embedded file valid?
QString description() const
The description associated with the file, if any.
~EmbeddedFile()
Destructor.
QByteArray checksum() const
The MD5 checksum of the file.
QString name() const
The name associated with the file.
QString mimeType() const
The MIME type of the file, if known.
QDateTime createDate() const
The creation date for the embedded file, if known.
QDateTime modDate() const
The modification date for the embedded file, if known.
int size() const
The size of the file.
QByteArray data()
The data as a byte array.
Container class for information about a font within a PDF document.
Definition poppler-qt6.h:176
Type type() const
The type of font encoding.
FontInfo & operator=(const FontInfo &fi)
Standard assignment operator.
QString name() const
The name of the font.
QString typeName() const
The name of the font encoding used.
QString file() const
The path of the font file used to represent this font on this system, or a null string is the font is...
FontInfo(const FontInfo &fi)
Copy constructor.
Type
The type of font.
Definition poppler-qt6.h:184
QString substituteName() const
The name of the substitute font.
bool isSubset() const
Whether the font provided is only a subset of the full font or not.
~FontInfo()
Destructor.
bool isEmbedded() const
Whether the font is embedded in the file, or not.
Iterator for reading the fonts in a document.
Definition poppler-qt6.h:298
int currentPage() const
Returns the current page where the iterator is.
~FontIterator()
Destructor.
bool hasNext() const
Checks whether there is at least one more page to iterate, ie returns false when the iterator is beyo...
QList< FontInfo > next()
Returns the fonts of the current page and then advances the iterator to the next page.
Container class for a movie object in a PDF document.
Definition poppler-qt6.h:2239
QString url() const
The URL of the movie to be played.
bool showControls() const
Whether show a bar with movie controls.
int rotation() const
The rotation (either 0, 90, 180, or 270 degrees clockwise) for the movie,.
bool showPosterImage() const
Returns whether a poster image should be shown if the movie is not playing.
QSize size() const
The size of the movie.
QImage posterImage() const
Returns the poster image that should be shown if the movie is not playing.
PlayMode
The play mode for playing the movie.
Definition poppler-qt6.h:2247
@ PlayRepeat
Play continuously until stopped.
Definition poppler-qt6.h:2250
@ PlayOnce
Play the movie once, closing the movie controls at the end.
Definition poppler-qt6.h:2248
@ PlayOpen
Like PlayOnce, but leaving the controls open.
Definition poppler-qt6.h:2249
PlayMode playMode() const
How to play the movie.
Model for optional content.
Definition poppler-optcontent.h:47
Item in the outline of a PDF document.
Definition poppler-qt6.h:932
QString uri() const
The URI to which the item links.
QString name() const
The name of the item which should be displayed to the user.
QVector< OutlineItem > children() const
Gets the child items of this item.
QSharedPointer< const LinkDestination > destination() const
The destination referred to by this item.
bool isOpen() const
Indicates whether the item should initially be display in an expanded or collapsed state.
OutlineItem()
Constructs a null item, i.e.
bool isNull() const
Indicates whether an item is null, i.e.
QString externalFileName() const
The external file name of the document to which the.
bool hasChildren() const
Determines if this item has any child items.
Holds data for a new signature.
Definition poppler-qt6.h:1983
QColor backgroundColor() const
Default: QColor(240, 240, 240)
QColor fontColor() const
Default: red.
QColor borderColor() const
Default: red.
double fontSize() const
Default: 10.
double borderWidth() const
border width in points
QString location() const
Signature's property Location.
QString signatureLeftText() const
If this text is not empty, the signature representation will split in two, with this text on the left...
QString fieldPartialName() const
Default: QUuid::createUuid().toString()
double leftFontSize() const
Default: 20.
QByteArray documentOwnerPassword() const
Document owner password (needed if the document that is being signed is password protected)
QString reason() const
Signature's property Reason.
QByteArray documentUserPassword() const
Document user password (needed if the document that is being signed is password protected)
QString imagePath() const
Filesystem path to an image file to be used as background image for the signature annotation widget.
Converts a PDF to PDF (thus saves a copy of the document).
Definition poppler-qt6.h:1943
bool convert() override
Does the conversion.
PDFOption
Options for the PDF export.
Definition poppler-qt6.h:1951
~PDFConverter() override
Destructor.
void setPDFOptions(PDFOptions options)
Sets the options for the PDF export.
PDFOptions pdfOptions() const
The currently set options for the PDF export.
bool sign(const NewSignatureData &data)
Sign PDF at given Annotation / signature form.
Converts a PDF to PS.
Definition poppler-qt6.h:1813
void setPSOptions(PSOptions options)
Sets the options for the PS export.
void setStrictMargins(bool strictMargins)
Defines if margins have to be strictly followed (even if that means changing aspect ratio),...
PSOption
Options for the PS export.
Definition poppler-qt6.h:1821
void setPageConvertedCallback(void(*callback)(int page, void *payload), void *payload)
Sets a function that will be called each time a page is converted.
void setRightMargin(int marginRight)
Sets the output right margin.
void setBottomMargin(int marginBottom)
Sets the output bottom margin.
bool convert() override
Does the conversion.
void setTopMargin(int marginTop)
Sets the output top margin.
void setForceOverprintPreview(bool forceOverprintPreview)
Defines if the page will be rasterized to an image with overprint preview enabled before printing.
~PSConverter() override
Destructor.
void setVDPI(double vDPI)
Sets the vertical DPI.
void setLeftMargin(int marginLeft)
Sets the output left margin.
void setPaperHeight(int paperHeight)
Sets the output paper height.
void setTitle(const QString &title)
Sets the title of the PS Document.
void setPageList(const QList< int > &pageList)
Sets the list of pages to print.
void setForceRasterize(bool forceRasterize)
Defines if the page will be rasterized to an image before printing.
void setHDPI(double hDPI)
Sets the horizontal DPI.
void setPaperWidth(int paperWidth)
Sets the output paper width.
void setRotate(int rotate)
Sets the rotate.
PSOptions psOptions() const
The currently set options for the PS export.
Describes how a PDF file viewer shall perform the transition from one page to another.
Definition poppler-page-transition.h:48
A page in a document.
Definition poppler-qt6.h:423
void defaultCTM(double *CTM, double dpiX, double dpiY, int rotate, bool upsideDown)
The default CTM.
bool(*)(const QVariant &) ShouldRenderToImagePartialQueryFunc
Partial Update query renderToImage callback.
Definition poppler-qt6.h:531
Orientation
Types of orientations that are possible.
Definition poppler-qt6.h:842
@ Seascape
Seascape orientation (portrait, with 270 degrees clockwise rotation)
Definition poppler-qt6.h:845
@ Landscape
Landscape orientation (portrait, with 90 degrees clockwise rotation )
Definition poppler-qt6.h:843
@ Portrait
Normal portrait orientation.
Definition poppler-qt6.h:844
SearchFlag
Flags to modify the search behaviour.
Definition poppler-qt6.h:736
std::vector< std::unique_ptr< FormField > > formFields() const
Returns the form fields on the page.
std::vector< std::unique_ptr< Annotation > > annotations() const
Returns the annotations of the page.
void addAnnotation(const Annotation *ann)
Adds an annotation to the page.
std::vector< std::unique_ptr< Link > > links() const
Gets the links of the page.
int index() const
Returns the index of the page.
SearchDirection
The starting point for a search.
Definition poppler-qt6.h:717
@ FromTop
Start sorting at the top of the document.
Definition poppler-qt6.h:718
@ NextResult
Find the next result, moving "down the page".
Definition poppler-qt6.h:719
PainterFlag
Additional flags for the renderToPainter method.
Definition poppler-qt6.h:465
Rotation
The type of rotation to apply for an operation.
Definition poppler-qt6.h:436
~Page()
Destructor.
Orientation orientation() const
The orientation of the page.
SearchMode
The type of search to perform.
Definition poppler-qt6.h:727
@ CaseSensitive
Case differences cause no match in searching.
Definition poppler-qt6.h:728
std::vector< std::unique_ptr< Annotation > > annotations(const QSet< Annotation::SubType > &subtypes) const
Returns the annotations of the page.
TextLayout
How the text is going to be returned.
Definition poppler-qt6.h:456
@ PhysicalLayout
The text is layouted to resemble the real page layout.
Definition poppler-qt6.h:457
PageAction
The kinds of page actions.
Definition poppler-qt6.h:447
@ Opening
The action when a page is "opened".
Definition poppler-qt6.h:448
double duration() const
Returns the page duration.
void(*)(const QImage &, const QVariant &) RenderToImagePartialUpdateFunc
Partial Update renderToImage callback.
Definition poppler-qt6.h:523
QString label() const
Returns the label of the page, or a null string is the page has no label.
void removeAnnotation(const Annotation *ann)
Removes an annotation from the page and destroys the annotation object.
bool(*)(const QVariant &) ShouldAbortQueryFunc
Abort query function callback.
Definition poppler-qt6.h:588
Container class for a sound file in a PDF document.
Definition poppler-qt6.h:2163
double samplingRate() const
The sampling rate of the sound.
SoundEncoding soundEncoding() const
The encoding used for the sound.
int channels() const
The number of sound channels to use to play the sound.
SoundType soundType() const
Is the sound embedded (SoundObject::Embedded) or external (SoundObject::External)?
QString url() const
The URL of the sound file to be played, in case of SoundObject::External.
SoundEncoding
The encoding format used for the sound.
Definition poppler-qt6.h:2178
@ muLaw
mu-law-encoded samples
Definition poppler-qt6.h:2181
@ Signed
Twos-complement values.
Definition poppler-qt6.h:2180
@ Raw
Raw encoding, with unspecified or unsigned values in the range [ 0, 2^B - 1 ].
Definition poppler-qt6.h:2179
SoundType
The type of sound.
Definition poppler-qt6.h:2169
@ External
The real sound file is external.
Definition poppler-qt6.h:2170
int bitsPerSample() const
The number of bits per sample value per channel.
QByteArray data() const
The data of the sound, in case of SoundObject::Embedded.
Describes the physical location of text on a document page.
Definition poppler-qt6.h:121
bool hasSpaceAfter() const
Returns whether there is a space character after this text box.
TextBox(const QString &text, const QRectF &bBox)
The default constructor sets the text and the rectangle that contains the text.
QString text() const
Returns the text of this text box.
~TextBox()
Destructor.
QRectF charBoundingBox(int i) const
Returns the bounding box of the i -th characted of the word.
TextBox * nextWord() const
Returns the pointer to the next text box, if there is one.
QRectF boundingBox() const
Returns the position of the text, in point, i.e., 1/72 of an inch.
The Poppler Qt6 binding.
Definition poppler-annotation.h:49
QDateTime convertDate(const char *dateString)
Conversion from PDF date string format to QDateTime.
void(*)(const QString &, const QVariant &) PopplerDebugFunc
Debug/error function.
Definition poppler-qt6.h:98
bool isOverprintPreviewAvailable()
Whether the overprint preview functionality is available.
bool isCmsAvailable()
Whether the color management functions are available.
void setDebugErrorFunction(PopplerDebugFunc debugFunction, const QVariant &closure)
Set a new debug/error output function.
The version specification of a pdf file.
Definition poppler-qt6.h:1522