使用pymupdf開發pdf查看編輯器

    第三方庫 PyMuPDF 在 python 環境下對 PDF 文件的操作,特別是圖片和pdf之間相互轉換比較方便,並且能較方便的執行一些如追加刪除之類的功能。開發文檔見:https://pymupdf.readthedocs.io/en/latest/

    我寫的一個demo已上傳到我的資源中,實現的功能爲:查看 pdf文件、追加pdf文檔、刪除pdf頁面、將當前頁面放到剪貼板等功能。界面左邊欄爲頁面導航,點擊縮略圖後顯示頁面,按ctrl+鼠標滾輪後可縮放頁面 ,使用了pyqt5框架。CSDN資源下載:https://download.csdn.net/detail/zhoury/11222542,github上的連接爲:https://github.com/tzous/pdfedit.git。歡迎下載參考。

1、建議使用pip安裝

pip install [--upgrade] PyMuPDF

然後在py文件中import:

import fitz

2、打開文檔

doc = fitz.open(filename) 

3、pdf頁面轉換爲圖片

# 得到當前頁,並轉換爲圖片
page = self.docDoc[self.nCurr]
zoom = int(200)
rotate = int(0)
trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).preRotate(rotate)
pix = page.getPixmap(matrix=trans, alpha=False)
fmt = QImage.Format_RGBA8888 if pix.alpha else QImage.Format_RGB888
qtimg = QImage(pix.samples, pix.width, pix.height, pix.stride, fmt) # 當前頁轉換爲QImage對象
# 準備顯示控件
widget = QWidget(self)
vboxLayout = QVBoxLayout()
labelimg = ShowImageWidget(widget)  # 使用一個自定義的QLabel控件
labelimg.setpix(QPixmap.fromImage(qtimg).scaled(QSize(pix.width, pix.height)))
labelimg.setAlignment(Qt.AlignTop | Qt.AlignHCenter)
vboxLayout.addWidget(labelimg)
widget.setLayout(vboxLayout)
self.showArea.setWidget(widget)    # 添加到showArea

4、其他功能見開發文檔及demo

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章