【python】提取pdf文件中的所有图片

写在前面

一个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
posted @ 2020-11-10 23:38  XavierJ  阅读(2146)  评论(3编辑  收藏  举报