2016-03-29 17 views
0

Oluşturulamadı Bu işlevin çalışmasını sağlamaya çalışıyorum, ancak şu anda pixmap nesnesine boyamaya çalıştığında çıktı her zaman yanlıştır.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); 
} 

Birisi bana yardım edebilir mi?

cevap

0

Poppler, PDF'yi Qt4'te iki farklı arka uç kullanarak gerçekleştirir: Arthur ve Splash. Bu nedenle yöntemler ArthurBackend ve bazı SplashBackend içinde uygulanmadı. Senin hatan belki de bunun sonucudur. Poppler::Page::renderToPainter(...) yalnızca Arthur Backend için uygulanmıştır. Benim durumumda, işleme arka yüzünün Splash olduğunu ve dolayısıyla ::renderToPainter(...)'un false döndürdüğünü tahmin ediyorum. (Documentation)

Arka ucunu Poppler::Document::renderBackend() kullanarak kontrol edebilirsiniz. Varsayılan olarak, oluşturma işlemi Splash Backend tarafından yapılır. (Documentation)