Python +Pyqt5 多页预览PDF内容的两种方法

最近因为兴趣做一个内置PDF预览功能的软件,对Pyqt窗口预览多页PDF进行总结。

浏览网上很多资料,最后试验成功了两种控件的显示方案:

方案一:scrollArea控件

scrollArea可以作为一个容器,存放多种控件,将pdf转换为imag,并保存于Qlabel中,将此Qlabel添加到scrollArea

widget = QWidget(self)
vboxLayout = QVBoxLayout()  # 垂直分布
widget.setLayout(vboxLayout)
for i in range(0, docDoc.page_count):
    page = docDoc[i]  # 当前页
    zoom = int(70)
    rotate = int(0)
    trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).prerotate(rotate)
    pix = page.get_pixmap(matrix=trans, alpha=False)
    fmt = QImage.Format_RGBA8888 if pix.alpha else QImage.Format_RGB888
    # 当前页转换为QImage对象
    qtimg = QImage(pix.samples, pix.width, pix.height, pix.stride, fmt)
    labelimg.setpix(QPixmap.fromImage(qtimg).scaled(QSize(pix.width, pix.height)))
    labelimg.setAlignment(Qt.AlignTop | Qt.AlignHCenter)
    # 图片加入vboxLayout
    vboxLayout.addWidget(labelim

你可能感兴趣的:(PyQt,qt,python,pdf)