diff options
author | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2014-12-15 13:34:00 +0100 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2019-11-25 12:01:38 +0100 |
commit | c03b6371db5c82cb19a5122a3159e46fab2d3a38 (patch) | |
tree | 0ca72115f85aec6443f6747fb5c9b306e29b2a50 /src | |
parent | ec484f4756c8814a11420ad48c0bcc1e04b92910 (diff) |
Added basic rendering and page size getter
Diffstat (limited to 'src')
-rw-r--r-- | src/pdf/qpdfdocument.cpp | 28 | ||||
-rw-r--r-- | src/pdf/qpdfdocument.h | 5 |
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; }; |