PyQt4應用程式的PDF檢視器
最近因為專案需要建立一個基於PyQt4的PDF檢視器應用程式,正常來說,我們可以使用PyQt4的QtWebKit模組來顯示PDF檔案。那麼具體怎麼實現呢 ?以下就是我寫的一個簡單的示例程式碼,演示如何建立一個PyQt4應用程式的PDF檢視器:
我想編寫一個Python+Qt4應用程式,該應用程式需要時不時地彈出一個視窗,以顯示PDF文件並允許一些非常基本的操作,包括滾動瀏覽不同頁面和列印文件。
我已經找到了用於建立PDF檔案的ReportLab,但沒有關於PDF檢視器的任何資訊。是否有任何可以幫助到我的資訊。我真的希望存在像QWebView小部件之類的東西...
2、解決方案
您可以使用Poppler庫來實現此目的。
Poppler是一個用於渲染PDF文件的庫。它提供了許多有用的功能,包括:
-
將PDF文件渲染到記憶體或X11視窗
-
允許使用者滾動、平移和縮放文件
-
允許使用者列印文件
Poppler庫可以與Python繫結在一起,以便在Python應用程式中使用。
以下是一個使用Poppler庫在PyQt4應用程式中建立PDF檢視器的示例程式碼:
import PyQt4
from PyQt4 import QtCore, QtGui
from poppler import Document, Page
class PDFViewer( QtGui. QMainWindow):
def __init__( self):
super(). __init__()
self. setWindowTitle( "PDF Viewer")
self. document = None
self. page = None
self. viewer = QtGui. QGraphicsView()
self. setCentralWidget( self. viewer)
self. open_action = QtGui. QAction( "Open", self)
self. open_action. triggered. connect( self. open_file)
self. print_action = QtGui. QAction( "Print", self)
self. print_action. triggered. connect( self. print_document)
self. toolbar = QtGui. QToolBar()
self. toolbar. addAction( self. open_action)
self. toolbar. addAction( self. print_action)
self. addToolBar( self. toolbar)
def open_file( self):
filename, _ = QtGui. QFileDialog. getOpenFileName( self, "Open PDF File")
if filename:
self. document = Document. load( filename)
self. page = self. document. get_page( 0)
self. viewer. setScene( QtGui. QGraphicsScene())
self. viewer. scene(). addItem( QtGui. QGraphicsPixmapItem( QtGui. QPixmap. fromImage( self. page. render())))
def print_document( self):
if self. document:
printer = QtGui. QPrinter()
printer. setOutputFileName( "output.pdf")
painter = QtGui. QPainter()
painter. begin( printer)
for i in range( self. document. num_pages):
page = self. document. get_page( i)
painter. drawPixmap( QtCore. QPoint(), QtGui. QPixmap. fromImage( page. render()))
painter. end()
if __name__ == "__main__":
app = QtGui. QApplication([])
viewer = PDFViewer()
viewer. show()
app. exec_()
這段程式碼首先建立了一個PDF檢視器視窗。然後,它建立了一個開啟檔案操作和一個列印文件操作。當使用者單擊開啟檔案操作時,將開啟一個檔案對話方塊,以便使用者可以選擇要開啟的PDF檔案。當使用者選擇一個檔案後,該檔案將被載入到PDF檢視器中。當使用者單擊列印文件操作時,將開啟一個列印對話方塊,以便使用者可以選擇要列印的PDF文件。
這段程式碼使用了Poppler庫的Python繫結來渲染PDF文件。Poppler庫提供了許多有用的功能,包括將PDF文件渲染到記憶體或X11視窗、允許使用者滾動、平移和縮放文件以及允許使用者列印文件。
執行這段程式碼將顯示一個簡單的PyQt4 PDF檢視器應用程式,可以在視窗中檢視指定的PDF檔案。PyQt4已經比較老舊,建議升級到PyQt5或PyQt6以獲得更好的效能和功能支援。如有更多的問題可以留言討論。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70034537/viewspace-3008916/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mac小技巧 快速檢視指定應用程式的所有視窗Mac
- 在 React 應用程式中實現簡單的頁面檢視跟蹤器React
- 瀏覽器檢視Base64的PDF檔案內容瀏覽器
- .net core EF Core 檢視的應用
- win10ltsc版本恢復照片檢視器應用Win10
- [機器視覺]halcon應用例項 邊緣檢測視覺
- 檢視佔用磁碟空間的程式
- mac電腦上快速且簡約的 PDF 檢視器Reader for macMac
- ?iOS移動應用程式的備案與SHA-1值檢視iOS
- 如何在Web應用中新增一個JavaScript Excel檢視器WebJavaScriptExcel
- 【機器視覺】機器人及視覺檢測系統在螺絲檢測包裝生產線上的應用視覺機器人
- 機器視覺技術在木材加工質量檢測中的應用視覺
- 怎麼檢視mac電腦的應用程式與M1是否相容Mac
- 快速檢視 Mac 應用程式是否與 M1相容的方法Mac
- android檢視當前應用的的包名和activityAndroid
- win10 自帶程式在哪裡_win10如何檢視自帶應用程式Win10
- 如何在Mac的日曆應用程式中以列表形式檢視所有事件Mac事件
- WordPress線上檢視PDF外掛:PDFjs ViewerJSView
- [譯] 通過檢視控制器容器和子檢視控制器避免龐大的檢視控制器
- 機器視覺產品尺寸測量與外觀缺陷檢測應用視覺
- 如何檢視埠被哪個程式佔用?
- Linux檢視埠被哪個程式佔用Linux
- react 的pdf預覽外掛應用React
- 機器視覺應用例項視覺
- Oracle檢視歸檔是否被備庫應用Oracle
- 第 5 篇:用檢視集,簡化你的程式碼
- 檢視瀏覽器請求的session 瀏覽器怎麼檢視session瀏覽器Session
- 使用 coverlet 檢視.NET Core應用的測試覆蓋率
- Android顯示框架:Android應用檢視的管理者WindowAndroid框架
- Linux檢視程式PID的方法?Linux
- linux 檢視程式 kill程式Linux
- MySQL / MariaDB 觸發器的建立、使用、檢視、刪除教程及應用場景實戰案例MySql觸發器
- 檢視 Linux 檔案佔用程式寫資料?Linux
- day04-檢視和檢視解析器
- 如何在iOS手機上檢視應用日誌iOS應用日誌
- jmap檢視java程式佔用的資料庫連線數Java資料庫
- 檢視控制器
- 透過機器人應用視覺機器人視覺