Python使用PyMuPDF实现PDF与图片互转
本文介绍如何利用Python第三方库PyMuPDF(fitz)实现PDF文件与图片之间的相互转换。内容涵盖将PDF页面导出为PNG图片的完整代码,包括页面选择逻辑与高清渲染设置;以及将指定文件夹内的图片按顺序合并生成PDF文件的实现方法。通过具体代码示例,帮助开发者快速掌握文档处理的核心功能。
Python使用PyMuPDF实现PDF与图片互转
本文主要介绍如何使用Python进行图片与PDF文件之间的相互转换操作。
实现该功能需要依赖第三方库PyMuPDF,在Python环境中对PDF文件进行解析和处理。
PDF转为图片
首先介绍将PDF文件转换为图片的方法。
在开始转换前,需预先新建一个名为pdf2png的文件夹,用于存放转换生成的图片文件。
import fitz
import glob
def rightinput(desc):
flag=True
while(flag):
instr = input(desc)
try:
intnum = eval(instr)
if type(intnum)==int:
flag = False
except:
print('请输入正整数!')
pass
return intnum
pdffile = glob.glob("*.pdf")[0]
doc = fitz.open(pdffile)
flag = rightinput("输入:1:全部页面;2:选择页面\t")
if flag == 1:
strat = 0
totaling = doc.pageCount
else:
strat = rightinput('输入起始页面:') - 1
totaling = rightinput('输入结束页面:')
for pg in range(strat, totaling):
page = doc[pg]
zoom = int(100)
rotate = int(0)
trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).preRotate(rotate)
pm = page.getPixmap(matrix=trans, alpha=False)
pm.writePNG('pdf2png/%s.png' % str(pg+1))
图片合并为PDF文件
接下来介绍如何将多张图片合并为一个PDF文件。
将需要合并的所有图片放置到名为pic2pdf的文件夹中,确保文件路径正确。
import glob
import fitz
import os
def pic2pdf():
doc = fitz.open()
for img in sorted(glob.glob("pic2pdf/*")): # 读取图片,确保按文件名排序
print(img)
imgdoc = fitz.open(img) # 打开图片
pdfbytes = imgdoc.convertToPDF() # 使用图片创建单页的 PDF
imgpdf = fitz.open("pdf", pdfbytes)
doc.insertPDF(imgpdf) # 将当前页插入文档
if os.path.exists("allimages.pdf"):
os.remove("allimages.pdf")
doc.save("allimages.pdf") # 保存pdf文件
doc.close()
if __name__ == '__main__':
pic2pdf()
以上介绍的内容较为简单实用,希望读者能够掌握并应用于实际开发中。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













