Python實(shí)現(xiàn)將pdf文檔保存成圖片格式
有時(shí)候我們會碰到只支持圖片上傳的場景,如何編程快速將pdf轉(zhuǎn)成圖片呢?
可以使用 Python 的 pdf2image
庫僅10行代碼就能將 PDF 文檔保存為圖片格式。如果 PDF 文檔包含多頁,則每一頁可以保存為單獨(dú)的圖片。以下是實(shí)現(xiàn)該功能的步驟:
步驟:
安裝所需的庫:
可以使用以下命令來安裝:
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 代碼:
- 下面的代碼示例可以將多頁的 PDF 保存為多張圖片,每頁生成一個(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) # 保存每一頁為單獨(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
庫中導(dǎo)入convert_from_path
函數(shù),用于將 PDF 文件轉(zhuǎn)換為圖片。
- 從
images = convert_from_path(pdf_path, dpi=150)
:- 將 PDF 文件轉(zhuǎn)換為圖片對象列表。
dpi
參數(shù)用于設(shè)置圖片的質(zhì)量(DPI 越高,質(zhì)量越好)。 - 每一頁的圖片都會被存儲在
images
列表中。
- 將 PDF 文件轉(zhuǎn)換為圖片對象列表。
for i, image in enumerate(images)
:- 遍歷
images
列表,逐頁保存。 - 使用
image.save(output_path, 'PNG')
保存每頁為 PNG 格式。文件名由output_path
指定,例如page_1.png
,page_2.png
等。
- 遍歷
示例輸出:
- 如果 PDF 文檔有 5 頁,代碼會生成 5 張圖片:
page_1.png
page_2.png
page_3.png
page_4.png
page_5.png
這樣可以實(shí)現(xiàn)將 PDF 中的每一頁保存為單獨(dú)的圖片,非常適合需要將 PDF 分割成多張圖片的場景。
如上輕松生成了我想要的圖片,把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
,它會導(dǎo)致 Python 誤認(rèn)為你在導(dǎo)入的模塊是你自己的文件,而不是實(shí)際的庫模塊。為了解決這個(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
,請將其更改為其他名字,例如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) # 保存每一頁為單獨(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)屬性。 - 在 高級 選項(xiàng)卡中,點(diǎn)擊 環(huán)境變量。
- 在系統(tǒng)變量中找到 Path,點(diǎn)擊 編輯。
- 添加 Poppler 的
bin
文件夾路徑(例如:C:\poppler\bin
)。
- 按
- 驗(yàn)證 Poppler 是否安裝成功:
- 打開命令提示符,輸入以下命令:
pdfinfo
- 如果成功安裝,你會看到
pdfinfo
的相關(guān)信息輸出。
- 如果成功安裝,你會看到
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í)通常會自動(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) # 保存每一頁為單獨(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保存成圖片的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Cpython編譯后再使用Pyinstaller打包的詳細(xì)教程
pyinstaller是一個(gè)第三方庫,它能夠在Windows、Linux、 Mac OS X 等操作系統(tǒng)下將 Python 源文件打包,通過對源文件打包,這篇文章主要介紹了Cpython編譯后再使用Pyinstaller打包的詳細(xì)教程,需要的朋友可以參考下2023-11-11Python爬蟲模擬登陸嗶哩嗶哩(bilibili)并突破點(diǎn)選驗(yàn)證碼功能
這篇文章主要介紹了Python爬蟲模擬登陸嗶哩嗶哩(bilibili)并突破點(diǎn)選驗(yàn)證碼功能,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12Python requests接口測試實(shí)現(xiàn)代碼
這篇文章主要介紹了Python requests接口測試實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09Python+matplotlib實(shí)現(xiàn)堆疊圖的繪制
Matplotlib作為Python的2D繪圖庫,它以各種硬拷貝格式和跨平臺的交互式環(huán)境生成出版質(zhì)量級別的圖形。本文將利用Matplotlib庫繪制堆疊圖,感興趣的可以了解一下2022-03-03