Poppler-Qt5无法渲染到

Poppler-Qt5 Failing to renderto

本文关键字:Poppler-Qt5      更新时间:2023-10-16

我正试图让这个函数工作,但现在当它试图绘制到pixmap对象时,输出总是错误的。

void MainWindow::PDF(){
    QString path = "D:\Translation.pdf";
    Poppler::Document *doc = Poppler::Document::load(path);
    Poppler::Page* pdfPage1 = doc->page(0);
    Poppler::Page* pdfPage2 = doc->page(1);
    //QImage image = pdfPage->renderToImage(1080,1080,-1,-1,-1,-1);
    QPixmap *pix = new QPixmap(1080,1080);
    QPainter *paint1 = new QPainter(pix);
    if (pdfPage1->renderToPainter(paint1 ,1080,1080,-1,-1,-1,-1)){
        qDebug() << true;
    }
    else{
        qDebug() << false;
    }
    QGraphicsScene *scene = new QGraphicsScene();
    scene->addPixmap(*pix);
    ui->graphicsView->setScene(scene);
}

有人能帮我吗?

Poppler使用两个不同的后端:ArthurSplash在Qt4中渲染PDF。因此,有些方法没有在ArthurBackend中实现,有些方法在SplashBackend中实现。你的错误也许就是这样的结果。Poppler::Page::renderToPainter(...)仅针对Arthur Backend实现。我的猜测是,在您的情况下,渲染后端是Splash,因此::renderToPainter(...)返回false。(文档)

您可以使用Poppler::Document::renderBackend()检查后端。默认情况下,渲染由Splash Backend完成。(文档)