admin管理员组文章数量:1621126
读取PDF文件显示窗口上
- 1、实现功能
- 2、需要模块
- 3、实现思路
- 4、效果展示
- 5、代码展示
- 6、扩展
1、实现功能
打开一个指定pdf文件,将pdf文件中第一页显示在窗口上。
2、需要模块
模块名称 | 版 本 | 功能 |
---|---|---|
PyMuPDF | 1.18.19 | 操作pdf文件 |
PyQt5 | 5.15.4 | UI |
PyMupdf网站
PyQt5网站
3、实现思路
- 使用PyMuPDF模块打开文件。
- 读取第一页pdf文件第一页。
- 从第一页获取图像,是Pixmap类。
- 使用PyQt5的QImage将上面的Pixmap转换为QImage。
- 将QImage转换为QPixmap。
- 将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文件导出图像。
版权声明:本文标题:Python-读取PDF文件显示在窗口上-Pdf阅读器 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1728836223a1176063.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论