#include #include #include #include #include int main(int argc, char **argv) { QGuiApplication a(argc, argv); // QApplication required! if (argc < 2 || (argc == 3 && strcmp(argv[2], "-qpainter") != 0) || argc > 3) { // use argument as file name qWarning() << "usage: test-render-to-file-qt6 filename [-qpainter]"; exit(1); } std::unique_ptr doc = Poppler::Document::load(QFile::decodeName(argv[1])); if (!doc) { qWarning() << "doc not loaded"; exit(1); } if (doc->isLocked()) { qWarning() << "document locked (needs password)"; exit(0); } if (doc->numPages() <= 0) { qDebug() << "Doc has no pages"; return 0; } QString backendString; if (argc == 3 && strcmp(argv[2], "-qpainter") == 0) { backendString = QStringLiteral("QPainter"); doc->setRenderBackend(Poppler::Document::QPainterBackend); } else { backendString = QStringLiteral("Splash"); doc->setRenderBackend(Poppler::Document::SplashBackend); } doc->setRenderHint(Poppler::Document::Antialiasing, true); doc->setRenderHint(Poppler::Document::TextAntialiasing, true); for (int i = 0; i < doc->numPages(); ++i) { std::unique_ptr page = doc->page(i); if (page) { qDebug() << "Rendering page using" << backendString << "backend: " << i; QTime t = QTime::currentTime(); QImage image = page->renderToImage(); qDebug() << "Rendering took" << t.msecsTo(QTime::currentTime()) << "msecs"; image.save(QStringLiteral("test-render-to-file%1.png").arg(i)); } } return 0; }