实现快速PDF文件转为png图片
需要安装第三方库 PyMuPDF
pip install PyMuPDF
看好了,是PyMuPDF,不是fitz!!!
导入的和安装的不是同一个,请务必看清楚了,安装错了就不能用;卸载重新安装
最简单的处理方法,直接读取,保存
# -*- coding:utf-8 -*-
import fitz
# 直接保存,速度快,不过清晰度或许不好
path = r'123.pdf'
name = path[:path.rfind('.')]
pdf = fitz.open(path)
for i, page in enumerate(pdf):
pix = page.getPixmap()
pix.writePNG(f'{name}_{i}.png')
放大一定的比例保存,清晰度好【推荐】
# -*- coding:utf-8 -*-
import fitz
# 放大一定的比例保存,清晰度好
path = r'123.pdf'
name = path[:path.rfind('.')]
pdf = fitz.open(path)
zx = zy = 2 # 比较推荐放大1.5-2倍,清晰度会好一些
for i, page in enumerate(pdf):
mat = fitz.Matrix(zx, zy).preRotate(0)
pix = page.getPixmap(matrix=mat)
pix.writePNG(f'{name}_{i}.png')
放大+裁剪,满足个性化需求
# -*- coding:utf-8 -*-
import fitz
# 放大+裁剪,根据自己的需求来
path = r'123.pdf'
name = path[:path.rfind('.')]
pdf = fitz.open(path)
zx = zy = 2 # 比较推荐放大1.5-2倍,清晰度会好一些
for i, page in enumerate(pdf):
mat = fitz.Matrix(zx, zy).preRotate(0)
rect = page.rect
mp = rect.tl + (rect.br - rect.tl) * 0.5 # 切左上角1/4的区域,所以这里取图片中点
clip = fitz.Rect(rect.tl, mp) # 左上角点,右下角点
pix = page.getPixmap(matrix=mat, clip=clip)
pix.writePNG(f'{name}_{i}.png')