Python-读取PDF文件显示在窗口上-Pdf阅读器

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文件导出图像。

在这里插入图片描述

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值