summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@theqtcompany.com>2014-12-15 13:34:00 +0100
committerMichal Klocek <michal.klocek@qt.io>2019-11-25 12:01:38 +0100
commitc03b6371db5c82cb19a5122a3159e46fab2d3a38 (patch)
tree0ca72115f85aec6443f6747fb5c9b306e29b2a50 /src
parentec484f4756c8814a11420ad48c0bcc1e04b92910 (diff)
Added basic rendering and page size getter
Diffstat (limited to 'src')
-rw-r--r--src/pdf/qpdfdocument.cpp28
-rw-r--r--src/pdf/qpdfdocument.h5
2 files changed, 33 insertions, 0 deletions
diff --git a/src/pdf/qpdfdocument.cpp b/src/pdf/qpdfdocument.cpp
index f05310d4a..738f896cb 100644
--- a/src/pdf/qpdfdocument.cpp
+++ b/src/pdf/qpdfdocument.cpp
@@ -94,3 +94,31 @@ int QPdfDocument::pageCount() const
return 0;
return FPDF_GetPageCount(d->doc);
}
+
+QSizeF QPdfDocument::pageSize(int page) const
+{
+ QSizeF result;
+ if (!d->doc)
+ return result;
+ FPDF_GetPageSizeByIndex(d->doc, page, &result.rwidth(), &result.rheight());
+ return result;
+}
+
+QImage QPdfDocument::render(int page, const QSizeF &pageSize)
+{
+ if (!d->doc)
+ return QImage();
+
+ FPDF_PAGE pdfPage = FPDF_LoadPage(d->doc, page);
+ if (!pdfPage)
+ return QImage();
+
+ QImage result(pageSize.toSize(), QImage::Format_ARGB32);
+ result.fill(Qt::transparent);
+ FPDF_BITMAP bitmap = FPDFBitmap_CreateEx(result.width(), result.height(), FPDFBitmap_BGRA, result.bits(), result.bytesPerLine());
+
+ FPDF_RenderPageBitmap(bitmap, pdfPage, 0, 0, result.width(), result.height(), 0, 0);
+
+ FPDFBitmap_Destroy(bitmap);
+ return result;
+}
diff --git a/src/pdf/qpdfdocument.h b/src/pdf/qpdfdocument.h
index 32baebbcb..c389ab570 100644
--- a/src/pdf/qpdfdocument.h
+++ b/src/pdf/qpdfdocument.h
@@ -2,6 +2,7 @@
#define QPDFDOCUMENT_H
#include <QObject>
+#include <QImage>
#include "qtpdfglobal.h"
class QPdfDocumentPrivate;
@@ -28,6 +29,10 @@ public:
int pageCount() const;
+ QSizeF pageSize(int page) const;
+
+ QImage render(int page, const QSizeF &pageSize);
+
private:
QScopedPointer<QPdfDocumentPrivate> d;
};