Python實現獲取PDF中的圖片


背景是小舅子要想要截取PDF里面的圖片。在網上找了一段代碼,如下

import fitz

import re
import os
 
file_path = r 'C:\xxx\xxx.pdf' # PDF 文件路徑
dir_path = r 'C:\xxx' # 存放圖片的文件夾
 
def pdf2image1(path, pic_path):
   checkIM = r "/Subtype(?= */Image)"
   pdf = fitz. open (path)
   lenXREF = pdf._getXrefLength()
   count = 1
   for i in range ( 1 , lenXREF):
     text = pdf._getXrefString(i)
     isImage = re.search(checkIM, text)
     if not isImage:
       continue
     pix = fitz.Pixmap(pdf, i)
     new_name = f "img_{count}.png"
     pix.writePNG(os.path.join(pic_path, new_name))
     count + = 1
     pix = None
 
pdf2image1(file_path, dir_path)
 
運行的時候報錯 Decument 沒有 _getXrefString 、_getXrefLength方法,然后網上沒有找到解決辦法,找我看了一下

 

 

 
然后去第三方庫里面 fitz 里面看了一下
發現 _getXrefString 這個方法確實沒有
 
然后理解了一下代碼_getXrefLength 這個函數大概是獲取PDF總頁數
_getXrefString 這個是獲取PDF對應頁內容的
在fitz 庫里面找到了實現這獲取總頁數的函數 和 一個替代函數  獲取當前頁的image 函數。如果當前頁沒有image返回null
分別是 xref_length 和 extract_image
然后改了一下代碼,運行,發現  search 這里也報錯
找到第三方庫的這個函數,發現傳參的時候,第二個參數是String類型的,而我替換的函數extract_image 返回的是個數組。所以 做了一下強轉。修改后代碼如下
# -*- coding: utf-8 -*-

import fitz
import re
import os

file_path = r'C:\Users\xxx\Desktop\新建文件夾\xxx.pdf' # PDF 文件路徑
dir_path = r'C:\Users\xxx\Desktop\test' # 存放圖片的文件夾

def pdf2image1(path, pic_path):
checkIM = r"image"
pdf = fitz.open(path)
lenXREF = pdf.xref_length()
count = 1
for i in range(1, lenXREF):
text = pdf.extract_image(i)
print(text)
isImage = re.search(checkIM, str(text))
if not isImage:
continue
pix = fitz.Pixmap(pdf, i)
new_name = f"img_{count}.png"
pix.writePNG(os.path.join(pic_path, new_name))
count += 1
pix = None

pdf2image1(file_path, dir_path)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM