写在前面
一个pdf
文件中有很多页,每页有若干张图片,如何将pdf
文件中的所有图片提取出来?
安装模块
pip install pymupdf
示例代码
import fitz
def func(doc):
for i in range(len(doc)):
imglist = doc.getPageImageList(i)
for j, img in enumerate(imglist):
xref = img[0]
pix = fitz.Pixmap(doc, xref) # make pixmap from image
if pix.n - pix.alpha < 4: # can be saved as PNG
pix.writePNG("p%s-%s.png" % (i+1, j+1))
else: # CMYK: must convert first
pix0 = fitz.Pixmap(fitz.csRGB, pix)
pix0.writePNG("p%s-%s.png" % (i+1, j+1))
pix0 = None # free Pixmap resources
pix = None # free Pixmap resources
if __name__ == "__main__":
func(doc=fitz.open('xxx.pdf')) # input the path of pdf file
参数说明
func(doc=fitz.open('xxx.pdf'))
中xxx.pdf
更改为你的pdf
文件所在的路径即可。
pix.writePNG()
中设置提取的图片的保存路径。
业务逻辑
代码逻辑很简单:对pdf
文件进行for
循环,遍历每一页;然后对每一页进行for
循环,遍历每一页中的图片。
引用参考
https://pymupdf.readthedocs.io/en/latest/document.html#other-examples