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

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

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

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

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

  • 方便預覽:很多即時通訊工具或社交平臺不支持 PDF 直接預覽,但圖片可以直接展示。
  • 便于分享:將 PDF 轉(zhuǎn)成長圖,用戶無需安裝 PDF 閱讀器,直接在瀏覽器或手機中查看即可。
  • 統(tǒng)一排版:長圖在不同平臺上不會因為字體缺失、排版不兼容而錯位。

二、實現(xiàn)思路

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

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

Python 中有兩個非常好用的庫:

  • pdf2image:把 PDF 轉(zhuǎn)換為圖片。
  • Pillow: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 添加到系統(tǒng)環(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 轉(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)建一個空白長圖
    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 轉(zhuǎn)換為 PIL 圖片對象列表,dpi 決定分辨率。
  • Image.new():創(chuàng)建一個空白畫布(寬度 = 最大頁寬度,高度 = 所有頁高度總和)。
  • paste():逐頁粘貼到畫布上,從而拼成長圖。
  • save():最終輸出 PNG 文件。

五、運行效果

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

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

六、進階優(yōu)化

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

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

2.分段長圖

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

3.背景透明

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

4.指定頁碼范圍

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

七、總結(jié)

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

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

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

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

相關(guān)文章

  • Python使用sort()方法對數(shù)組進行排序的操作指南

    Python使用sort()方法對數(shù)組進行排序的操作指南

    在開發(fā)過程中,經(jīng)常需要對數(shù)據(jù)進行排序,Python 中的 sort() 方法是用來對列表進行排序的,它是一個非常常用且高效的排序工具,本文將通過一個實際項目的代碼示例,來講解如何使用 sort() 方法對數(shù)組進行排序,需要的朋友可以參考下
    2025-06-06
  • python使用標準庫根據(jù)進程名如何獲取進程的pid詳解

    python使用標準庫根據(jù)進程名如何獲取進程的pid詳解

    Python有一套很有用的標準庫(standard library)。標準庫會隨著Python解釋器,一起安裝在你的電腦中的,所以下面這篇文章主要給大家介紹了關(guān)于python使用標準庫根據(jù)進程名如何獲取進程pid的相關(guān)資料,需要的朋友可以參考下。
    2017-10-10
  • python數(shù)據(jù)處理詳情

    python數(shù)據(jù)處理詳情

    這篇文章主要介紹了python數(shù)據(jù)處理詳情,文章通過json文件的一個數(shù)據(jù)表展開對主題的詳細說明,具有一定的參考價值需要的小伙伴可以參考一下
    2022-04-04
  • python中使用smtplib和email模塊發(fā)送郵件實例

    python中使用smtplib和email模塊發(fā)送郵件實例

    python腳本發(fā)郵件,一般會用到smtplib和email這兩個模塊??纯丛撃K怎么使用,先看smtplib模塊。 smtplib模塊定義了一個簡單的SMTP客戶端,可以用來在互聯(lián)網(wǎng)上發(fā)送郵件
    2014-04-04
  • PyTorch快速搭建神經(jīng)網(wǎng)絡及其保存提取方法詳解

    PyTorch快速搭建神經(jīng)網(wǎng)絡及其保存提取方法詳解

    本篇文章主要介紹了PyTorch快速搭建神經(jīng)網(wǎng)絡及其保存提取方法詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • 如何用Python中Tushare包輕松完成股票篩選(詳細流程操作)

    如何用Python中Tushare包輕松完成股票篩選(詳細流程操作)

    這篇文章主要介紹了如何用Python中Tushare包輕松完成股票篩選(詳細流程操作),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 讓Django的BooleanField支持字符串形式的輸入方式

    讓Django的BooleanField支持字符串形式的輸入方式

    這篇文章主要介紹了讓Django的BooleanField支持字符串形式的輸入方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python中apply函數(shù)詳情

    python中apply函數(shù)詳情

    這篇文章主要介紹了python中apply函數(shù)詳情,該函數(shù)最有用的是第一個參數(shù),這個參數(shù)是函數(shù),相當于C/C++的函數(shù)指針,更多詳細內(nèi)容,需要的小伙伴可以參考下面文章內(nèi)容
    2022-01-01
  • 10分鐘快速入門Pandas庫

    10分鐘快速入門Pandas庫

    pandas?是基于NumPy?的一種工具,該工具是為解決數(shù)據(jù)分析任務而創(chuàng)建的,這篇文章主要介紹了10分鐘快速入門Pandas庫,重點介紹pandas常見使用方法,結(jié)合實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • Python numpy 點數(shù)組去重的實例

    Python numpy 點數(shù)組去重的實例

    下面小編就為大家分享一篇Python numpy 點數(shù)組去重的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04

最新評論