寫在前面
一個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