Python實(shí)現(xiàn)將pdf文檔保存成圖片格式
有時(shí)候我們會(huì)碰到只支持圖片上傳的場(chǎng)景,如何編程快速將pdf轉(zhuǎn)成圖片呢?
可以使用 Python 的 pdf2image 庫(kù)僅10行代碼就能將 PDF 文檔保存為圖片格式。如果 PDF 文檔包含多頁(yè),則每一頁(yè)可以保存為單獨(dú)的圖片。以下是實(shí)現(xiàn)該功能的步驟:
步驟:
安裝所需的庫(kù):
可以使用以下命令來安裝:
pdf2image: 用于將 PDF 轉(zhuǎn)換為圖片。poppler-utils(非 Python 包,需要系統(tǒng)安裝):用于支持 PDF 的渲染,pdf2image依賴它。
pip install pdf2image
Poppler 安裝(根據(jù)系統(tǒng)不同):
- 在 Windows 上,你可以下載 Poppler for Windows 并將其路徑添加到系統(tǒng)環(huán)境變量中。
- 在 Linux 上,通??梢酝ㄟ^包管理器安裝:
sudo apt-get install poppler-utils
Python 代碼:
- 下面的代碼示例可以將多頁(yè)的 PDF 保存為多張圖片,每頁(yè)生成一個(gè)獨(dú)立的 PNG 文件。
from pdf2image import convert_from_path
# PDF 文件路徑
pdf_path = 'your_pdf_file_path.pdf'
# 將 PDF 轉(zhuǎn)換為圖片
images = convert_from_path(pdf_path, dpi=150)
# 保存每一頁(yè)為單獨(dú)的圖片
for i, image in enumerate(images):
output_path = f'page_{i + 1}.png'
image.save(output_path, 'PNG')
print(f'Saved: {output_path}')
代碼解析:
from pdf2image import convert_from_path:- 從
pdf2image庫(kù)中導(dǎo)入convert_from_path函數(shù),用于將 PDF 文件轉(zhuǎn)換為圖片。
- 從
images = convert_from_path(pdf_path, dpi=150):- 將 PDF 文件轉(zhuǎn)換為圖片對(duì)象列表。
dpi參數(shù)用于設(shè)置圖片的質(zhì)量(DPI 越高,質(zhì)量越好)。 - 每一頁(yè)的圖片都會(huì)被存儲(chǔ)在
images列表中。
- 將 PDF 文件轉(zhuǎn)換為圖片對(duì)象列表。
for i, image in enumerate(images):- 遍歷
images列表,逐頁(yè)保存。 - 使用
image.save(output_path, 'PNG')保存每頁(yè)為 PNG 格式。文件名由output_path指定,例如page_1.png,page_2.png等。
- 遍歷
示例輸出:
- 如果 PDF 文檔有 5 頁(yè),代碼會(huì)生成 5 張圖片:
page_1.pngpage_2.pngpage_3.pngpage_4.pngpage_5.png
這樣可以實(shí)現(xiàn)將 PDF 中的每一頁(yè)保存為單獨(dú)的圖片,非常適合需要將 PDF 分割成多張圖片的場(chǎng)景。

如上輕松生成了我想要的圖片,把convert_pdf_to_image.py文件保留下來,這樣就多了一個(gè)可以把pdf轉(zhuǎn)成圖片的工具了,編程就是如此快樂~
常見錯(cuò)誤1:ImportError
ImportError: cannot import name 'convert_from_path' from partially initialized module 'pdf2image' (most likely due to a circular import) (C:\workspace\python\pdf2image\pdf2image.py)
這個(gè)錯(cuò)誤通常是因?yàn)槲募麤_突引起的。如果你的腳本或者工作目錄中有文件名叫 pdf2image.py,它會(huì)導(dǎo)致 Python 誤認(rèn)為你在導(dǎo)入的模塊是你自己的文件,而不是實(shí)際的庫(kù)模塊。為了解決這個(gè)問題,可以按以下步驟進(jìn)行修復(fù):
解決步驟:
重命名本地文件:
- 確保你沒有將你的腳本或工作目錄中的任何文件命名為
pdf2image.py。 - 比如,將你的文件重命名為
convert_pdf_to_image.py或者其他不包含pdf2image的名字。
- 確保你沒有將你的腳本或工作目錄中的任何文件命名為
檢查.pyc 文件:
- 重命名后,也需要?jiǎng)h除由 Python 生成的編譯文件(
.pyc文件),這些文件可能仍在指向錯(cuò)誤的模塊版本。 - 刪除
__pycache__文件夾,或者直接刪除目錄中的.pyc文件。
- 重命名后,也需要?jiǎng)h除由 Python 生成的編譯文件(
重新運(yùn)行代碼:
- 重命名文件后,重新運(yùn)行代碼。
示例:
- 如果你的文件原名是
pdf2image.py,請(qǐng)將其更改為其他名字,例如convert_pdf_images.py。 - 刪除當(dāng)前目錄下的
__pycache__文件夾:- 在 Windows 上,你可以手動(dòng)刪除文件夾。
- 在 Linux 或 macOS 上,運(yùn)行:
rm -rf __pycache__
修復(fù)后的代碼:
確認(rèn)文件重命名和緩存清除后,可以重新運(yùn)行以下代碼:
from pdf2image import convert_from_path
# PDF 文件路徑
pdf_path = 'your_pdf_file_path.pdf'
# 將 PDF 轉(zhuǎn)換為圖片
images = convert_from_path(pdf_path, dpi=150)
# 保存每一頁(yè)為單獨(dú)的圖片
for i, image in enumerate(images):
output_path = f'page_{i + 1}.png'
image.save(output_path, 'PNG')
print(f'Saved: {output_path}')
額外建議:
- 如果仍然遇到問題,可以嘗試創(chuàng)建一個(gè)全新的 Python 虛擬環(huán)境來確保沒有命名沖突,方法如下:
python -m venv new_env
然后激活虛擬環(huán)境,并安裝依賴:
new_env\Scripts\activate # Windows source new_env/bin/activate # Linux/macOS pip install pdf2image
這應(yīng)該可以解決 ImportError,避免模塊命名沖突的問題。
常見錯(cuò)誤2:pdf2image.exceptions.
pdf2image.exceptions.PDFInfoNotInstalledError: Unable to get page count. Is poppler installed and in PATH?
這個(gè)錯(cuò)誤是因?yàn)?pdf2image 依賴于 Poppler,而 Poppler 沒有安裝或沒有被正確添加到系統(tǒng)的 PATH 環(huán)境變量中。Poppler 是一個(gè) PDF 渲染工具,pdf2image 使用它來處理 PDF 轉(zhuǎn)換。下面是如何安裝和配置 Poppler 的步驟:
在不同系統(tǒng)上安裝 Poppler
1. Windows
- 你需要下載 Poppler 的 Windows 版本并將其路徑添加到系統(tǒng)環(huán)境變量中。
- 下載地址:Poppler for Windows
- 下載 ZIP 文件并解壓到某個(gè)目錄(例如:
C:\poppler)。 - 將解壓目錄的
bin文件夾路徑添加到系統(tǒng)的PATH環(huán)境變量中:- 按
Win + R,輸入sysdm.cpl,進(jìn)入 系統(tǒng)屬性。 - 在 高級(jí) 選項(xiàng)卡中,點(diǎn)擊 環(huán)境變量。
- 在系統(tǒng)變量中找到 Path,點(diǎn)擊 編輯。
- 添加 Poppler 的
bin文件夾路徑(例如:C:\poppler\bin)。
- 按
- 驗(yàn)證 Poppler 是否安裝成功:
- 打開命令提示符,輸入以下命令:
pdfinfo
- 如果成功安裝,你會(huì)看到
pdfinfo的相關(guān)信息輸出。
- 如果成功安裝,你會(huì)看到
2. Linux
- 大多數(shù) Linux 發(fā)行版可以通過包管理器安裝 Poppler:
sudo apt-get install poppler-utils
或者在基于 Fedora 的系統(tǒng)上:
sudo dnf install poppler-utils
3. macOS
- 你可以使用 Homebrew 來安裝 Poppler:
添加 Poppler 到 PATH
- 如果在安裝之后還是遇到錯(cuò)誤,需要確保 Poppler 的可執(zhí)行文件在系統(tǒng)的
PATH環(huán)境變量中,具體步驟如下:- 在 Windows 上,確保 Poppler 安裝目錄的
bin文件夾路徑(如C:\poppler\bin)已添加到環(huán)境變量中。 - 在 Linux/macOS 上,安裝時(shí)通常會(huì)自動(dòng)添加到
PATH中。
- 在 Windows 上,確保 Poppler 安裝目錄的
驗(yàn)證安裝
- 在終端中運(yùn)行以下命令,確保 Poppler 工具可以被找到:
pdfinfo --version
- 如果 Poppler 安裝正確并且在
PATH中,你將看到 Poppler 的版本信息。
- 如果 Poppler 安裝正確并且在
再次運(yùn)行代碼
完成 Poppler 的安裝和環(huán)境變量配置之后,可以重新運(yùn)行你的 Python 代碼:
from pdf2image import convert_from_path
# PDF 文件路徑
pdf_path = 'your_pdf_file_path.pdf'
# 將 PDF 轉(zhuǎn)換為圖片
images = convert_from_path(pdf_path, dpi=150)
# 保存每一頁(yè)為單獨(dú)的圖片
for i, image in enumerate(images):
output_path = f'page_{i + 1}.png'
image.save(output_path, 'PNG')
print(f'Saved: {output_path}')
這個(gè)過程應(yīng)該可以解決 PDFInfoNotInstalledError,確保 pdf2image 可以正常調(diào)用 Poppler 進(jìn)行 PDF 轉(zhuǎn)換。
以上就是Python實(shí)現(xiàn)將pdf文檔保存成圖片格式的詳細(xì)內(nèi)容,更多關(guān)于Python pdf保存成圖片的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Cpython編譯后再使用Pyinstaller打包的詳細(xì)教程
pyinstaller是一個(gè)第三方庫(kù),它能夠在Windows、Linux、 Mac OS X 等操作系統(tǒng)下將 Python 源文件打包,通過對(duì)源文件打包,這篇文章主要介紹了Cpython編譯后再使用Pyinstaller打包的詳細(xì)教程,需要的朋友可以參考下2023-11-11
Python爬蟲模擬登陸嗶哩嗶哩(bilibili)并突破點(diǎn)選驗(yàn)證碼功能
這篇文章主要介紹了Python爬蟲模擬登陸嗶哩嗶哩(bilibili)并突破點(diǎn)選驗(yàn)證碼功能,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
Python requests接口測(cè)試實(shí)現(xiàn)代碼
這篇文章主要介紹了Python requests接口測(cè)試實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
Python+matplotlib實(shí)現(xiàn)堆疊圖的繪制
Matplotlib作為Python的2D繪圖庫(kù),它以各種硬拷貝格式和跨平臺(tái)的交互式環(huán)境生成出版質(zhì)量級(jí)別的圖形。本文將利用Matplotlib庫(kù)繪制堆疊圖,感興趣的可以了解一下2022-03-03
Python自動(dòng)化測(cè)試中yaml文件讀取操作
這篇文章主要介紹了Python自動(dòng)化測(cè)試中yaml文件讀取操作,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08

