Python實現把PDF文件轉換成長圖PNG格式輸出圖片
在日常工作中,我們經常會遇到這樣的需求:將一個 PDF 文件轉換為一張長圖(PNG 格式),方便在網頁、文檔或社交媒體上展示。比如,將一份報告、合同、教程以圖片的形式分享,而不是附件。本文將手把手教你如何使用 Python 實現 PDF → PNG 長圖的轉換,并附上完整示例代碼。
一、為什么要把 PDF 轉換成長圖
- 方便預覽:很多即時通訊工具或社交平臺不支持 PDF 直接預覽,但圖片可以直接展示。
- 便于分享:將 PDF 轉成長圖,用戶無需安裝 PDF 閱讀器,直接在瀏覽器或手機中查看即可。
- 統一排版:長圖在不同平臺上不會因為字體缺失、排版不兼容而錯位。
二、實現思路
要把 PDF 轉換成長圖,主要分為兩步:
- 將 PDF 每一頁轉為單獨的圖片。
- 將這些圖片縱向拼接成長圖。
Python 中有兩個非常好用的庫:
三、環(huán)境準備
首先,你需要安裝必要的依賴。
1. 安裝 Python 包
pip install pdf2image pillow
2. 安裝 Poppler
pdf2image 底層依賴 Poppler 來解析 PDF。
macOS:
brew install poppler
Ubuntu / Debian:
sudo apt-get install poppler-utils
Windows:
- 下載 Poppler for Windows
- 解壓到本地目錄,例如
C:\poppler-xx\ - 將
C:\poppler-xx\bin添加到系統環(huán)境變量PATH
四、完整代碼示例
下面是一個完整的 Python 程序,可以直接運行:
from pdf2image import convert_from_path
from PIL import Image
def pdf_to_long_png(pdf_path, output_path="output.png", dpi=200):
# 1. 將 PDF 轉為圖片列表
pages = convert_from_path(pdf_path, dpi=dpi)
# 獲取寬度和總高度
widths, heights = zip(*(i.size for i in pages))
max_width = max(widths)
total_height = sum(heights)
# 2. 創(chuàng)建一個空白長圖
long_image = Image.new("RGB", (max_width, total_height), "white")
# 3. 拼接每一頁
y_offset = 0
for page in pages:
long_image.paste(page, (0, y_offset))
y_offset += page.height
# 4. 保存為 PNG
long_image.save(output_path, "PNG")
print(f"? 已生成長圖: {output_path}")
if __name__ == "__main__":
pdf_file = "example.pdf" # 輸入 PDF 文件
pdf_to_long_png(pdf_file, "long_image.png")
代碼說明
- convert_from_path(pdf_path, dpi):將 PDF 轉換為 PIL 圖片對象列表,
dpi決定分辨率。 - Image.new():創(chuàng)建一個空白畫布(寬度 = 最大頁寬度,高度 = 所有頁高度總和)。
- paste():逐頁粘貼到畫布上,從而拼成長圖。
- save():最終輸出 PNG 文件。
五、運行效果
- 輸入:一個多頁 PDF 文件。
- 輸出:一張
long_image.png,包含 PDF 所有頁面的完整內容。
這樣,你就可以在社交平臺、微信公眾號、博客里直接展示一份 PDF 內容,而無需上傳 PDF 文件本身。
六、進階優(yōu)化
1.支持命令行參數
使用 argparse,讓用戶通過命令行輸入 PDF 路徑和輸出文件名。
2.分段長圖
如果 PDF 頁數太多,長圖可能過大,可以考慮分段拼接成多張圖。
3.背景透明
將 Image.new("RGB", ...) 改成 Image.new("RGBA", ...),可以生成帶透明背景的 PNG。
4.指定頁碼范圍
convert_from_path(pdf_path, first_page=1, last_page=5) 可只轉換前 5 頁。
七、總結
通過 Python 的 pdf2image + Pillow,我們可以輕松實現 PDF → PNG 長圖 的轉換:
- 適用于合同、簡歷、教程、報告等文件。
- 代碼簡潔,幾行即可實現。
- 可擴展性強,可以根據需求做更多定制化優(yōu)化。
如果你也有類似需求,不妨嘗試一下這段代碼,把你的 PDF 文件轉成長圖吧!
到此這篇關于Python實現把PDF文件轉換成長圖PNG格式輸出圖片的文章就介紹到這了,更多相關Python PDF轉長圖PNG內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python中使用smtplib和email模塊發(fā)送郵件實例
python腳本發(fā)郵件,一般會用到smtplib和email這兩個模塊??纯丛撃K怎么使用,先看smtplib模塊。 smtplib模塊定義了一個簡單的SMTP客戶端,可以用來在互聯網上發(fā)送郵件2014-04-04
如何用Python中Tushare包輕松完成股票篩選(詳細流程操作)
這篇文章主要介紹了如何用Python中Tushare包輕松完成股票篩選(詳細流程操作),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03
讓Django的BooleanField支持字符串形式的輸入方式
這篇文章主要介紹了讓Django的BooleanField支持字符串形式的輸入方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05

