2012-05-12 62 views
2

我已經下載並安裝了python-poppler-qt4,我正在試用一個簡單的Qt應用程序來顯示PDF頁面。我遵循我已經能夠從網上獲得的內容,即將PDF轉換爲QImage,然後轉換爲QPixMap,但它不起作用(我得到的只是一個沒有可見內容的小窗口)。如何使用python-poppler-qt4顯示PDF?

我可能在某些時候失敗(QImage.width()返回我輸入的寬度,QPixMap.width()返回0)。

下面是代碼:

#!/usr/bin/env python 

import sys 
from PyQt4 import QtGui, QtCore 
import popplerqt4 

class Application(QtGui.QApplication): 
    def __init__(self): 
     QtGui.QApplication.__init__(self, sys.argv)  
     self.main = MainWindow() 
     self.main.show() 

    class MainWindow(QtGui.QFrame): 
     def __init__(self, parent=None): 
      QtGui.QWidget.__init__(self, parent) 
      self.layout = QtGui.QVBoxLayout() 
      self.doc = popplerqt4.Poppler.Document.load('/home/benjamin/test.pdf') 
      self.page = self.doc.page(1) 
# here below i entered almost random dpi, position and size, just to test really 
      self.image = self.page.renderToImage(150, 150, 0, 0, 210, 297) 
      self.pixmap = QtGui.QPixmap() 
      self.pixmap.fromImage(self.image) 
      self.label = QtGui.QLabel(self) 
        self.label.setPixmap(self.pixmap) 
      self.layout.addWidget(self.label) 
      self.setLayout(self.layout) 

    if __name__ == "__main__": 
      application = Application() 
      sys.exit(application.exec_()) 

它在哪裏去錯在這裏?謝謝。

+0

這些轉換(可能會導致分辨率的損失)並不是必需的。看到這個例子顯示PDF:http://bazaar.launchpad.net/~j-corwin/openlp/pdf/annotate/head:/openlp/plugins/presentations/lib/pdfcontroller.py –

回答

4

我對python不熟悉,所以這可能不直接適用,但QPixmap::fromImage是一個靜態函數,返回QPixmap。所以,你的代碼應該讀的東西,如:

self.pixmap = QtGui.QPixmap.fromImage(self.image) 

換句話說,self.pixmap.fromImage不改變self.pixmap,它返回從你給它作爲一個參數的圖像生成新的像素圖。

+0

賓果! :)這是做到了。 – Benjamin

相關問題