• 6
    回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

python实现pdf转image

前段时间折腾了很久终于把image和文字做成pdf并保存成功了(其实就是一个简单的报表功能),但是在qml下想显示pdf一直也没成功,网上说用poppler库,我尝试了很久,虽然编译成功,但是不知道咋用,所以最后就选个折中的办法,先把pdf转成图片,然后再去qml中显示pdf转成的图片。

下面说说实现过程:

实现环境:Ubuntu20.04

实现语言:python3.8.10

实现需要的库:fitz   # fitz就是pip install PyMuPDF

def pyMuPDF_fitz(pdfPath, imagePath):
    startTime_pdf2img = datetime.datetime.now()  # 开始时间

    print("imagePath=" + imagePath)
    pdfDoc = fitz.open(pdfPath)
    for pg in range(pdfDoc.pageCount):
        page = pdfDoc[pg]
        rotate = int(0)
        # 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。
        # 此处若是不做设置,默认图片大小为:792X612, dpi=96
        zoom_x = 1.33333333  # (1.33333333-->1056x816)   (2-->1584x1224)
        zoom_y = 1.33333333
        mat = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
        pix = page.getPixmap(matrix=mat, alpha=False)

        if not os.path.exists(imagePath):  # 判断存放图片的文件夹是否存在
            os.makedirs(imagePath)  # 若图片文件夹不存在就创建

        pix.writePNG(imagePath + '/' + 'images_%s.png?x-oss-process=image/watermark,g_center,image_YXJ0aWNsZS9wdWJsaWMvd2F0ZXJtYXJrLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSxQXzQwCg,t_20' % pg)  # 将图片写入指定的文件夹内

    endTime_pdf2img = datetime.datetime.now()  # 结束时间
    print('pdf2img时间=', (endTime_pdf2img - startTime_pdf2img).seconds)

这个是我感觉目前安装的库最少,实现起来最方便的实现方法,小伙伴们有更好的方法和途径,欢迎评论

全部回复(6)
正序查看
倒序查看
米修儿
LV.4
2
2022-03-21 14:46

pix.writePNG(imagePath + '/' + 'images_%s.png?x-oss-process=image/watermark,g_center,image_YXJ0aWNsZS9wdWJsaWMvd2F0ZXJtYXJrLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSxQXzQwCg,t_20' % pg)  # 将图片写入指定的文件夹内

0
回复
2022-03-25 11:26

源码有吗

0
回复
米修儿
LV.4
4
2022-04-22 11:17
@dy-lgC7wxPW
源码有吗

这个就是源码,只是pix.writePNG这个函数在论坛发帖会自动后面加一长串的字符,应该是这样

0
回复
2022-04-22 11:18

python是真的强大,有很多转的库,但这个最省事

0
回复
2022-04-22 11:19

尝试了,非常好用,多谢

0
回复
2022-08-11 16:23

利用python转PDF为图片的方法很多,安装个anaconda,用很多插件可以开发实现

0
回复