最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)把PDF文件轉(zhuǎn)換成長(zhǎng)圖PNG格式輸出圖片

 更新時(shí)間:2025年09月17日 08:42:17   作者:貓頭虎  
在日常工作中,我們經(jīng)常會(huì)需要將一個(gè) PDF 文件轉(zhuǎn)換為一張長(zhǎng)圖(PNG 格式),本文將手把手教你如何使用 Python 實(shí)現(xiàn) PDF和 PNG 長(zhǎng)圖的轉(zhuǎn)換,需要的小伙伴可以了解下

在日常工作中,我們經(jīng)常會(huì)遇到這樣的需求:將一個(gè) PDF 文件轉(zhuǎn)換為一張長(zhǎng)圖(PNG 格式),方便在網(wǎng)頁(yè)、文檔或社交媒體上展示。比如,將一份報(bào)告、合同、教程以圖片的形式分享,而不是附件。本文將手把手教你如何使用 Python 實(shí)現(xiàn) PDF → PNG 長(zhǎng)圖的轉(zhuǎn)換,并附上完整示例代碼。

一、為什么要把 PDF 轉(zhuǎn)換成長(zhǎng)圖

  • 方便預(yù)覽:很多即時(shí)通訊工具或社交平臺(tái)不支持 PDF 直接預(yù)覽,但圖片可以直接展示。
  • 便于分享:將 PDF 轉(zhuǎn)成長(zhǎng)圖,用戶無(wú)需安裝 PDF 閱讀器,直接在瀏覽器或手機(jī)中查看即可。
  • 統(tǒng)一排版:長(zhǎng)圖在不同平臺(tái)上不會(huì)因?yàn)樽煮w缺失、排版不兼容而錯(cuò)位。

二、實(shí)現(xiàn)思路

要把 PDF 轉(zhuǎn)換成長(zhǎng)圖,主要分為兩步:

  • 將 PDF 每一頁(yè)轉(zhuǎn)為單獨(dú)的圖片。
  • 將這些圖片縱向拼接成長(zhǎng)圖

Python 中有兩個(gè)非常好用的庫(kù):

  • pdf2image:把 PDF 轉(zhuǎn)換為圖片。
  • Pillow:Python 圖像處理庫(kù),用于拼接圖片。

三、環(huán)境準(zhǔn)備

首先,你需要安裝必要的依賴。

1. 安裝 Python 包

pip install pdf2image pillow

2. 安裝 Poppler

pdf2image 底層依賴 Poppler 來(lái)解析 PDF。

macOS

brew install poppler

Ubuntu / Debian

sudo apt-get install poppler-utils

Windows

  • 下載 Poppler for Windows
  • 解壓到本地目錄,例如 C:\poppler-xx\
  • C:\poppler-xx\bin 添加到系統(tǒng)環(huán)境變量 PATH

四、完整代碼示例

下面是一個(gè)完整的 Python 程序,可以直接運(yùn)行:

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 轉(zhuǎn)為圖片列表
    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)建一個(gè)空白長(zhǎng)圖
    long_image = Image.new("RGB", (max_width, total_height), "white")

    # 3. 拼接每一頁(yè)
    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"? 已生成長(zhǎng)圖: {output_path}")


if __name__ == "__main__":
    pdf_file = "example.pdf"   # 輸入 PDF 文件
    pdf_to_long_png(pdf_file, "long_image.png")

代碼說(shuō)明

  • convert_from_path(pdf_path, dpi):將 PDF 轉(zhuǎn)換為 PIL 圖片對(duì)象列表,dpi 決定分辨率。
  • Image.new():創(chuàng)建一個(gè)空白畫(huà)布(寬度 = 最大頁(yè)寬度,高度 = 所有頁(yè)高度總和)。
  • paste():逐頁(yè)粘貼到畫(huà)布上,從而拼成長(zhǎng)圖。
  • save():最終輸出 PNG 文件。

五、運(yùn)行效果

  • 輸入:一個(gè)多頁(yè) PDF 文件。
  • 輸出:一張 long_image.png,包含 PDF 所有頁(yè)面的完整內(nèi)容。

這樣,你就可以在社交平臺(tái)、微信公眾號(hào)、博客里直接展示一份 PDF 內(nèi)容,而無(wú)需上傳 PDF 文件本身。

六、進(jìn)階優(yōu)化

1.支持命令行參數(shù)

使用 argparse,讓用戶通過(guò)命令行輸入 PDF 路徑和輸出文件名。

2.分段長(zhǎng)圖

如果 PDF 頁(yè)數(shù)太多,長(zhǎng)圖可能過(guò)大,可以考慮分段拼接成多張圖。

3.背景透明

Image.new("RGB", ...) 改成 Image.new("RGBA", ...),可以生成帶透明背景的 PNG。

4.指定頁(yè)碼范圍

convert_from_path(pdf_path, first_page=1, last_page=5) 可只轉(zhuǎn)換前 5 頁(yè)。

七、總結(jié)

通過(guò) Python 的 pdf2image + Pillow,我們可以輕松實(shí)現(xiàn) PDF → PNG 長(zhǎng)圖 的轉(zhuǎn)換:

  • 適用于合同、簡(jiǎn)歷、教程、報(bào)告等文件。
  • 代碼簡(jiǎn)潔,幾行即可實(shí)現(xiàn)。
  • 可擴(kuò)展性強(qiáng),可以根據(jù)需求做更多定制化優(yōu)化。

如果你也有類似需求,不妨嘗試一下這段代碼,把你的 PDF 文件轉(zhuǎn)成長(zhǎng)圖吧!

到此這篇關(guān)于Python實(shí)現(xiàn)把PDF文件轉(zhuǎn)換成長(zhǎng)圖PNG格式輸出圖片的文章就介紹到這了,更多相關(guān)Python PDF轉(zhuǎn)長(zhǎng)圖PNG內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在paddle中安裝python-bidi出錯(cuò)問(wèn)題及解決

    在paddle中安裝python-bidi出錯(cuò)問(wèn)題及解決

    在Paddle中安裝python-bidi時(shí)遇到Rust和Cargo缺失的問(wèn)題,通過(guò)安裝舊版本的python-bidi(0.4.0)解決了問(wèn)題
    2025-02-02
  • Python圖片處理之圖片采樣處理詳解

    Python圖片處理之圖片采樣處理詳解

    這篇文章將詳細(xì)為大家講解圖像采樣處理,包括原理知識(shí)、代碼實(shí)現(xiàn)和局部馬賽克處理。文中的示例代碼講解詳細(xì),感興趣的可以跟隨小編一起動(dòng)手試一試
    2022-02-02
  • Python+numpy實(shí)現(xiàn)一個(gè)蜘蛛紙牌游戲

    Python+numpy實(shí)現(xiàn)一個(gè)蜘蛛紙牌游戲

    蜘蛛紙牌大家玩過(guò)沒(méi)有?之前的電腦上自帶的游戲,用他來(lái)摸魚(yú)過(guò)的舉個(gè)手。但是現(xiàn)在的電腦上已經(jīng)沒(méi)有蜘蛛紙牌了。所以本文就來(lái)用Python做一個(gè)吧,需要的可以參考一下
    2022-12-12
  • python dataframe實(shí)現(xiàn)統(tǒng)計(jì)行列中零值的個(gè)數(shù)

    python dataframe實(shí)現(xiàn)統(tǒng)計(jì)行列中零值的個(gè)數(shù)

    這篇文章主要介紹了python dataframe實(shí)現(xiàn)統(tǒng)計(jì)行列中零值的個(gè)數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Python快速實(shí)現(xiàn)一鍵摳圖功能的全過(guò)程

    Python快速實(shí)現(xiàn)一鍵摳圖功能的全過(guò)程

    你有沒(méi)想過(guò),Python也能成為這樣的一種工具:在只有一張圖片,需要細(xì)致地?fù)赋鋈宋锏那闆r下,能幫你減少摳圖步驟,這篇文章主要給大家介紹了關(guān)于Python快速實(shí)現(xiàn)一鍵摳圖功能的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • 如何在mac下配置python虛擬環(huán)境

    如何在mac下配置python虛擬環(huán)境

    這篇文章主要介紹了如何mac下配置python虛擬環(huán)境,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • tensorflow實(shí)現(xiàn)測(cè)試時(shí)讀取任意指定的check point的網(wǎng)絡(luò)參數(shù)

    tensorflow實(shí)現(xiàn)測(cè)試時(shí)讀取任意指定的check point的網(wǎng)絡(luò)參數(shù)

    今天小編就為大家分享一篇tensorflow實(shí)現(xiàn)測(cè)試時(shí)讀取任意指定的check point的網(wǎng)絡(luò)參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • 聊聊Pytorch torch.cat與torch.stack的區(qū)別

    聊聊Pytorch torch.cat與torch.stack的區(qū)別

    這篇文章主要介紹了Pytorch torch.cat與torch.stack的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python實(shí)現(xiàn)QQ郵箱發(fā)送郵件

    python實(shí)現(xiàn)QQ郵箱發(fā)送郵件

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)QQ郵箱發(fā)送郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Django跨域資源共享問(wèn)題(推薦)

    Django跨域資源共享問(wèn)題(推薦)

    跨域資源共享(CORS) 是一種機(jī)制,它使用額外的 HTTP 頭來(lái)告訴瀏覽器 讓運(yùn)行在一個(gè) origin (domain) 上的Web應(yīng)用被準(zhǔn)許訪問(wèn)來(lái)自不同源服務(wù)器上的指定的資源。這篇文章主要介紹了Django跨域資源共享問(wèn)題小結(jié),需要的朋友可以參考下
    2020-03-03

最新評(píng)論

义乌市| 治县。| 赣州市| 龙州县| 巴中市| 宁化县| 瓮安县| 棋牌| 岚皋县| 桦南县| 西安市| 东山县| 龙海市| 毕节市| 大渡口区| 白玉县| 睢宁县| 宜宾县| 广南县| 曲阳县| 汉沽区| 内丘县| 镇雄县| 义乌市| 穆棱市| 沙河市| 宝兴县| 张家口市| 汽车| 绥江县| 繁昌县| 鄂托克前旗| 泗水县| 获嘉县| 墨竹工卡县| 来安县| 通化县| 晋中市| 新安县| 陇南市| 仪征市|