2016-03-29 5 views
0

私はこの関数を動作させようとしていますが、今はpixmapオブジェクトにペイントしようとすると出力は常にfalseになります。Poppler-Qt5レンダリングに失敗しました

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); 
} 

誰かが私にこれを手伝ってもらえますか?

答えて

0

ポップラーは、2種類のバックエンド、すなわちArthurSplashを使用してQt4でPDFをレンダリングします。したがって、メソッドはArthurBackendに実装されておらず、一部はSplashBackendに実装されています。あなたのエラーはおそらくそれの結果です。 Poppler::Page::renderToPainter(...)Arthur Backendに対してのみ実装されています。私の推測では、あなたのケースでは、レンダリングバックエンドはSplashであり、したがって::renderToPainter(...)falseを返します。 (Documentation

Poppler::Document::renderBackend()を使用してバックエンドを確認できます。既定では、レンダリングはSplash Backendによって行われます。 (Documentation

関連する問題