Poppler Qt6 23.05.0
The Poppler Qt6 interface library

The Poppler Qt6 interface library, libpoppler-qt6, is a library that allows Qt6 programmers to easily load and render PDF files. The Poppler Qt6 interface library uses poppler internally to do its job, but the Qt6 programmer will never have to worry about poppler internals.

Current Status

The Poppler Qt6 interface library is quite stable and working.

Example Programs

Examples programs can be found in the qt6/test directory. The Poppler Qt6 interface library is also used in the KDE's document viewer Okular. The source files for Okular's PDF plugin (Poppler-based) can be found on the git server of the KDE project, under this URL.

How to use the Poppler Qt6 interface library in three easy steps

Programmer who would like to use the Poppler Qt6 interface library simply need to add the following line to their C++ source files:

#include <poppler-qt6.h>

A PDF document can then be loaded as follows:

QString filename;
if (!document || document->isLocked()) {
// ... error message ....
delete document;
PDF document.
Definition: poppler-qt6.h:1053
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 isLocked() const
Determine if the document is locked.

Pages can be rendered to QImages with the following commands:

// Paranoid safety check
if (document == 0) {
// ... error message ...
// Access page of the PDF file
Poppler::Page* pdfPage = document->page(pageNumber); // Document starts at page 0
if (pdfPage == 0) {
// ... error message ...
// Generate a QImage of the rendered page
QImage image = pdfPage->renderToImage(xres, yres, x, y, width, height);
if (image.isNull()) {
// ... error message ...
// ... use image ...
// after the usage, the page must be deleted
delete pdfPage;
std::unique_ptr< Page > page(int index) const
Get a specified Page.
A page in a document.
Definition: poppler-qt6.h:422
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
Render the page to a QImage using the current Document renderer.

Finally, don't forget to destroy the document:

delete document;