欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)將pdf文檔保存成圖片格式

 更新時(shí)間:2024年10月31日 09:09:02   作者:IT小甌  
有時(shí)候我們會碰到只支持圖片上傳的場景,如何編程快速將pdf轉(zhuǎn)成圖片呢?可以使用 Python 的 pdf2image 庫僅10行代碼就能將 PDF 文檔保存為圖片格式,所以本文給大家介紹了如何使用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}')

代碼解析:

  1. from pdf2image import convert_from_path

    • 從 pdf2image 庫中導(dǎo)入 convert_from_path 函數(shù),用于將 PDF 文件轉(zhuǎn)換為圖片。
  2. images = convert_from_path(pdf_path, dpi=150)

    • 將 PDF 文件轉(zhuǎn)換為圖片對象列表。dpi 參數(shù)用于設(shè)置圖片的質(zhì)量(DPI 越高,質(zhì)量越好)。
    • 每一頁的圖片都會被存儲在 images 列表中。
  3. 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ù):

解決步驟:

  1. 重命名本地文件

    • 確保你沒有將你的腳本或工作目錄中的任何文件命名為 pdf2image.py。
    • 比如,將你的文件重命名為 convert_pdf_to_image.py 或者其他不包含 pdf2image 的名字。
  2. 檢查.pyc 文件

    • 重命名后,也需要?jiǎng)h除由 Python 生成的編譯文件(.pyc 文件),這些文件可能仍在指向錯(cuò)誤的模塊版本。
    • 刪除 __pycache__ 文件夾,或者直接刪除目錄中的 .pyc 文件。
  3. 重新運(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 中。

驗(yàn)證安裝

  • 在終端中運(yùn)行以下命令,確保 Poppler 工具可以被找到:
pdfinfo --version
    • 如果 Poppler 安裝正確并且在 PATH 中,你將看到 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ì)教程

    Cpython編譯后再使用Pyinstaller打包的詳細(xì)教程

    pyinstaller是一個(gè)第三方庫,它能夠在Windows、Linux、 Mac OS X 等操作系統(tǒng)下將 Python 源文件打包,通過對源文件打包,這篇文章主要介紹了Cpython編譯后再使用Pyinstaller打包的詳細(xì)教程,需要的朋友可以參考下
    2023-11-11
  • Python爬蟲模擬登陸嗶哩嗶哩(bilibili)并突破點(diǎn)選驗(yàn)證碼功能

    Python爬蟲模擬登陸嗶哩嗶哩(bilibili)并突破點(diǎn)選驗(yàn)證碼功能

    這篇文章主要介紹了Python爬蟲模擬登陸嗶哩嗶哩(bilibili)并突破點(diǎn)選驗(yàn)證碼功能,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • python中的關(guān)鍵字(pass)使用

    python中的關(guān)鍵字(pass)使用

    這篇文章主要介紹了python中的關(guān)鍵字(pass)使用,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Python是怎樣處理json模塊的

    Python是怎樣處理json模塊的

    這篇文章主要介紹了Python是怎樣處理json模塊的,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • pytorch 加載(.pth)格式的模型實(shí)例

    pytorch 加載(.pth)格式的模型實(shí)例

    今天小編就為大家分享一篇pytorch 加載(.pth)格式的模型實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python requests接口測試實(shí)現(xiàn)代碼

    Python requests接口測試實(shí)現(xiàn)代碼

    這篇文章主要介紹了Python requests接口測試實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 一篇文章帶你入門python之推導(dǎo)式

    一篇文章帶你入門python之推導(dǎo)式

    這篇文章主要為大家詳細(xì)介紹了python的推導(dǎo)式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 編寫簡單的Python程序來判斷文本的語種

    編寫簡單的Python程序來判斷文本的語種

    這篇文章主要介紹了編寫簡單的Python程序來判斷語種,代碼非常簡單,主要用到了langid工具包,需要的朋友可以參考下
    2015-04-04
  • Python+matplotlib實(shí)現(xiàn)堆疊圖的繪制

    Python+matplotlib實(shí)現(xiàn)堆疊圖的繪制

    Matplotlib作為Python的2D繪圖庫,它以各種硬拷貝格式和跨平臺的交互式環(huán)境生成出版質(zhì)量級別的圖形。本文將利用Matplotlib庫繪制堆疊圖,感興趣的可以了解一下
    2022-03-03
  • Python自動(dòng)化測試中yaml文件讀取操作

    Python自動(dòng)化測試中yaml文件讀取操作

    這篇文章主要介紹了Python自動(dòng)化測試中yaml文件讀取操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評論