admin管理员组

文章数量:1621105

读取PDF文件显示窗口上

    • 1、实现功能
    • 2、需要模块
    • 3、实现思路
    • 4、效果展示
    • 5、代码展示
    • 6、扩展

1、实现功能

打开一个指定pdf文件,将pdf文件中第一页显示在窗口上。

2、需要模块

模块名称版 本功能
PyMuPDF1.18.19操作pdf文件
PyQt55.15.4UI

PyMupdf网站
PyQt5网站

3、实现思路

  1. 使用PyMuPDF模块打开文件。
  2. 读取第一页pdf文件第一页。
  3. 从第一页获取图像,是Pixmap类。
  4. 使用PyQt5的QImage将上面的Pixmap转换为QImage。
  5. 将QImage转换为QPixmap。
  6. 将QPixmap设置给Label。

4、效果展示

5、代码展示

__author__ = "小明"
"""
qt窗体基本代码
"""
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
from PyQt5.QtGui import QImage, QPixmap, QTransform
import fitz


class Window(QWidget):  # 定义类继承自
    def __init__(self):
        super().__init__()  # 调用父类init方法
        self.setWindowTitle("我的窗口")
        self.resize(400, 300)
        self.setup_ui()
        self.image()

    def setup_ui(self):
        self.label = QLabel("标签显示文字", self)
        self.label.move(100,20)

    def image(self):
        file = "2.pdf"
        # 打开文件
        doc = fitz.open(file)
        # 读取一页 0代表第1页
        page_one = doc.loadPage(0)
        #将第一页转换为Pixmap
        page_pixmap = page_one.getPixmap()
        #将Pixmap转换为QImage
        image_format = QImage.Format_RGBA8888 if page_pixmap.alpha else QImage.Format_RGB888
        page_image = QImage(page_pixmap.samples, page_pixmap.width,
                            page_pixmap.height, page_pixmap.stride, image_format)
        width = page_image.width()
        height = page_image.height()
        #QImage 转为QPixmap
        pix = QPixmap.fromImage(page_image)
        trans = QTransform()
        trans.rotate(90)  # 这里设置旋转角度
        new = pix.transformed(trans)
        # 设置标签宽和高
        self.label.setFixedSize(200, 250)
        # 设置图片大小自适应标签
        self.label.setScaledContents(True)
        #给标签设置图像
        self.label.setPixmap(new)

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())


6、扩展

可利用上面基本代码,制作pdf阅读器和编辑器。
可以对pdf文件进行简单的删除页面、旋转页面,合并多个pdf文件,还可将图像转为pdf,或将pdf文件导出图像。

本文标签: 阅读器窗口文件PythonPDF