From c03b6371db5c82cb19a5122a3159e46fab2d3a38 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Mon, 15 Dec 2014 13:34:00 +0100 Subject: Added basic rendering and page size getter --- src/pdf/qpdfdocument.cpp | 28 ++++++++++++++++++++++++++++ src/pdf/qpdfdocument.h | 5 +++++ 2 files changed, 33 insertions(+) (limited to 'src') 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 +#include #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 d; }; -- cgit v1.2.3