当前位置:  首页>> 技术小册>> Python与办公-玩转PDF

很遗憾,pypdf2库主要是用来处理PDF文档页面的,对于文档内容它却基本上不涉及,所以也没有提供提取图片的相关方法,想要提取图片,又只能另辟蹊径了。

巧了,上一小节使用到的pymupdf库就有提取图片的功能,那么还是用它来处理吧,如果想学习更多的库,可以尝试找一下还有哪些库也可以提取PDF文件的图片,自己动手尝试,实现提取图片的需求。

使用pymupdf提取一个PDF文档的全部图片的参考代码如下:

  1. import os
  2. import fitz
  3. pdf = fitz.open"./pdf_ files/练习文档.pdf"
  4. save_path = "./pdf_images"
  5. for index,page in enumerate(pdf.pages()):
  6. printf"正确提取第{index}页"
  7. for image in page.get_images():
  8. xref = image[0]
  9. pix = fitz.Pixmap(pdf,xref)
  10. if not os.path.exists(save_path):
  11. os.mkdir(save_path)
  12. path = os.path.join(save_path,f"page{index}_{xref}.png")
  13. pix.save(path)

提取图片的过程也很清晰,首先打开一个PDF文档,遍历它的所有页面,页面对象有一个get_images()方法可以获取到所有图片的信息,返回的是一个元组套元组,即一个元组代表一张图片的信息。

图片信息里最主要的是图片的xref,其实xref就是一个数字,表示图片的编号,我们可以根据文档对象和xref调用f i tz.Pixmap()获取到一个Pixmap对象,即一张图片,最后调用Pixmap对象的save()方法把它保存到指定路径即可。Pixmap的save()方法的第一个参数是路径,第二个参数是图片格式,支持的格式有png(默认)、pnm、tga、psd、ps等,不过我们一般采用默认的png格式就行了。


该分类下的相关小册推荐: