Python 实现 PDF转图片 & 图片转PDF

您所在的位置:网站首页 pdf转tif文件 Python 实现 PDF转图片 & 图片转PDF

Python 实现 PDF转图片 & 图片转PDF

2024-06-18 13:17| 来源: 网络整理| 查看: 265

这里使用了三个工具包分别为 PyMuPDF、reportlab 以及 PIL,所以这三个工具包需要提前安装,但是注意不要使用 pip install fitz 安装 fitz,因为这里使用的 fitz 是 PyMuPDF 里的,如果再安装 fitz, 会因为命名冲突导致调用失败。

首先是库的导入:

import os import sys import fitz from reportlab.lib.pagesizes import portrait from reportlab.pdfgen import canvas from PIL import Image

先进行 PDF 转图片的操作,使用 fitz 打开后缩放保存:

def pdf2img(filename=r'./document.pdf'): # 打开PDF文件,生成一个对象 doc = fitz.open(filename) print("共",doc.pageCount,"页") for pg in range(doc.pageCount): print("\r转换为图片",pg+1,"/",doc.pageCount,end="") page = doc[pg] rotate = int(0) # 每个尺寸的缩放系数为8,这将为我们生成分辨率提高64倍的图像。 zoom_x = 8.0 zoom_y = 8.0 trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate) pm = page.getPixmap(matrix=trans, alpha=False) pm.writePNG(r'./tu'+'{:02}.png' .format(pg)) print()

然后是图片转 PDF ,使用 PIL.Image 获取图片大小后使用 reportlab.pdfgen.canvas 保存为 PDF:

def getimgfile(input_paths, file_type=".png"): pathDir = os.listdir(input_paths) imglist = list() for i in pathDir: if file_type in i: imglist.append(i) return imglist def imgtopdf(input_paths="./", outputpath="./docimg.pdf", file_type=".png"): imglist = getimgfile(input_paths, file_type) (maxw, maxh) = Image.open(input_paths + imglist[0]).size c = canvas.Canvas(outputpath, pagesize=portrait((maxw, maxh))) for i in range(len(imglist)): print("\r转换为PDF",i+1,"/",len(imglist),end="") c.drawImage(imglist[i], 0, 0, maxw, maxh) c.showPage() os.remove(imglist[i]) c.save()

最后使用一下语句便可实现转换:

if __name__ == "__main__": pdf2img(filename=r'./document.pdf') imgtopdf(input_paths="./", outputpath="./docimg.pdf", file_type=".png") print("\n转换完成!")

当然如果使用图片转PDF时的图片类型不是 .png 的话,可以修改 getimgfile 中的文件类型 file_type 。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3