相关文章推荐
曾深爱过的八宝粥  ·  Flink ...·  11 月前    · 

1.本篇给大家封装了一个函数,用来将pdf转化为png图片,可以转化全部,也可以转化单页;

代码如下:

pdf文件转化为png照片 (PyMuPDF下面的fitz)_文件路径 pdf文件转化为png照片 (PyMuPDF下面的fitz)_裁剪图片_02

import fitz
import os

def pyMuPDF_fitz(pdfPath, imagePath, num, all=True):
"""
:param pdfPath: pdf文件路径
:param imagePath: 图片存放目录
:param num: 第几页,索引从0开始
:param all: 是否转化所有页面
:return:
"""
pdfDoc = fitz.open(pdfPath)
if all:
start = 0
end = pdfDoc.pageCount
else:
start = num
end = num+1
for i in range(start,end):
page = pdfDoc[i]
rotate = int(0)
zoom_xy = (1.3333,1.3333)
mat = fitz.Matrix(zoom_xy[0],zoom_xy[1]).prerotate(rotate)
pix = page.getPixmap(matrix=mat,alpha=False)
if not os.path.exists(imagePath):
os.makedirs(imagePath)
pix.writePNG(f"{imagePath}{i}.png")

pdfPath = 'E://a.pdf'
imagePath = 'E://'
pyMuPDF_fitz(pdfPath, imagePath ,0,False)

View Code

2.此模块可以直接裁剪图片,然后转成字节类型

pdf文件转化为png照片 (PyMuPDF下面的fitz)_文件路径 pdf文件转化为png照片 (PyMuPDF下面的fitz)_裁剪图片_02

pdf_doc = fitz.Document(stream=pdf_req, filetype="pdf")
page = pdf_doc[num]
mat = fitz.Matrix(zoom_x, zoom_y).preRotate(0)
clip = fitz.Rect(Point(coordinate[0] / k_y, coordinate[1] / k_x), Point(coordinate[2] / k_y, coordinate[3] / k_x))
pix = page.getPixmap(matrix=mat, clip=clip)
img_bytes = pix.getImageData()
return BytesIO(img_bytes)

View Code

-----------------------------------------------------------------------------------------------------------------------------------------