赞
踩
pip install PyMuPDF==1.18.17
import fitz
def pdf2img(pdf_path, img_dir):
doc = fitz.open(pdf_path) # 打开pdf
for page in doc: # 遍历pdf的每一页
zoom_x = 2.0 # 设置每页的水平缩放因子
zoom_y = 2.0 # 设置每页的垂直缩放因子
mat = fitz.Matrix(zoom_x, zoom_y)
pix = page.get_pixmap(matrix=mat)
pix.save(r"{}page-{}.png".format(img_dir, page.number)) # 保存
if __name__ == '__main__':
# pdf路径
pdf_path = r"./赵季平影视音乐成功因素分析.pdf"
# 图片保存位置
img_dir = r"./img/"
# pdf转图片
pdf2img(pdf_path, img_dir)
ps:将缩放因子 zoom_x 和 zoom_y 设为 2.0 之后,可以将转换出来的图片大小提高四倍
pip install PySimpleGUI==4.47.0
import os, fitz
import PySimpleGUI as psg # for showing a progress bar
def img2pdf(pdf_path, imgdir):
doc = fitz.open() # PDF with the pictures
imglist = os.listdir(imgdir) # list of them
imgcount = len(imglist) # pic count
for i, f in enumerate(imglist):
img = fitz.open(os.path.join(imgdir, f)) # open pic as document
rect = img[0].rect # pic dimension
pdfbytes = img.convert_to_pdf() # make a PDF stream
img.close() # no longer needed
imgPDF = fitz.open("tar_pdf", pdfbytes) # open stream as PDF
page = doc.new_page(width=rect.width, # new page with ...
height=rect.height) # pic dimension
page.show_pdf_page(rect, imgPDF, 0) # image fills the page
psg.OneLineProgressMeter("Import Images", # show our progress
i + 1, imgcount)
doc.save(pdf_path)
def clear_dir(imgdir):
imglist = os.listdir(imgdir)
for img in imglist:
img_path = os.path.join(imgdir, img)
os.remove(img_path)
if __name__ == '__main__':
# 图片文件夹路径
img_dir = r"./img/"
# 要生成的pdf路径
pdf_path = r"./赵季平影视音乐成功因素分析.pdf"
# 图片转pdf
img2pdf(pdf_path, img_dir)
# 清空图片
# clear_dir(img_dir)
ps:其实这个 PyMuPDF 包还有很多功能,具体可以参考官网文档
https://pymupdf.readthedocs.io/en/latest/faq.html#how-to-make-images-from-document-pages
pip install img2pdf
import os
import img2pdf
def img2pdf_(pdf_path, img_dir):
try:
with open(pdf_path, 'wb+') as f:
img_list =[]
for img_name in os.listdir(img_dir):
img_path = os.path.join(img_dir, img_name)
img_list.append(img_path)
f.write(img2pdf.convert(img_list))
print(f"pdf保存成功: {pdf_path}")
except OSError as err:
print("OS error: {0}".format(err))
def clear_dir(imgdir):
imglist = os.listdir(imgdir)
for img in imglist:
img_path = os.path.join(imgdir, img)
os.remove(img_path)
if __name__ == '__main__':
# 图片文件夹路径
img_dir = r"../mid_img/"
# 要生成的pdf路径
pdf_path = r"./测试.pdf"
# 图片转pdf
img2pdf_(pdf_path, img_dir)
# 清空图片
# clear_dir(img_dir)
ps:千万注意 自己的方法名不要和包名重复了,方法名 和 方法的文件名 都不要叫 img2pdf,否则会报错
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。