当前位置: 首页 > news >正文

如何使用 Python 程序把 PDF 文件转换成长图 PNG 格式输出图片?

如何使用 Python 程序把 PDF 文件转换成长图 PNG 格式输出图片?

在日常工作中,我们经常会遇到这样的需求:将一个 PDF 文件转换为一张长图(PNG 格式),方便在网页、文档或社交媒体上展示。比如,将一份报告、合同、教程以图片的形式分享,而不是附件。本文将手把手教你如何使用 Python 实现 PDF → PNG 长图的转换,并附上完整示例代码。

如何使用 Python 程序把 PDF 文件转换成长图 PNG 格式输出图片?

文章目录

  • 如何使用 Python 程序把 PDF 文件转换成长图 PNG 格式输出图片?
    • 一、为什么要把 PDF 转换成长图?
    • 二、实现思路
    • 三、环境准备
      • 1. 安装 Python 包
      • 2. 安装 Poppler
    • 四、完整代码示例
      • 代码说明
    • 五、运行效果
    • 六、进阶优化
    • 七、总结


一、为什么要把 PDF 转换成长图?

  • 方便预览:很多即时通讯工具或社交平台不支持 PDF 直接预览,但图片可以直接展示。
  • 便于分享:将 PDF 转成长图,用户无需安装 PDF 阅读器,直接在浏览器或手机中查看即可。
  • 统一排版:长图在不同平台上不会因为字体缺失、排版不兼容而错位。

二、实现思路

要把 PDF 转换成长图,主要分为两步:

  1. 将 PDF 每一页转为单独的图片
  2. 将这些图片纵向拼接成长图

Python 中有两个非常好用的库:

  • pdf2image:把 PDF 转换为图片。
  • Pillow:Python 图像处理库,用于拼接图片。

三、环境准备

首先,你需要安装必要的依赖。

1. 安装 Python 包

pip install pdf2image pillow

2. 安装 Poppler

pdf2image 底层依赖 Poppler 来解析 PDF。

  • macOS

    brew install poppler
    
  • Ubuntu / Debian

    sudo apt-get install poppler-utils
    
  • Windows

    1. 下载 Poppler for Windows
    2. 解压到本地目录,例如 C:\poppler-xx\
    3. C:\poppler-xx\bin 添加到系统环境变量 PATH

四、完整代码示例

下面是一个完整的 Python 程序,可以直接运行:

from pdf2image import convert_from_path
from PIL import Imagedef 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. 创建一个空白长图long_image = Image.new("RGB", (max_width, total_height), "white")# 3. 拼接每一页y_offset = 0for page in pages:long_image.paste(page, (0, y_offset))y_offset += page.height# 4. 保存为 PNGlong_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")

代码说明

  1. convert_from_path(pdf_path, dpi):将 PDF 转换为 PIL 图片对象列表,dpi 决定分辨率。
  2. Image.new():创建一个空白画布(宽度 = 最大页宽度,高度 = 所有页高度总和)。
  3. paste():逐页粘贴到画布上,从而拼成长图。
  4. save():最终输出 PNG 文件。

五、运行效果

  • 输入:一个多页 PDF 文件。
  • 输出:一张 long_image.png,包含 PDF 所有页面的完整内容。

这样,你就可以在社交平台、微信公众号、博客里直接展示一份 PDF 内容,而无需上传 PDF 文件本身。


六、进阶优化

  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 长图 的转换:

  • 适用于合同、简历、教程、报告等文件。
  • 代码简洁,几行即可实现。
  • 可扩展性强,可以根据需求做更多定制化优化。

如果你也有类似需求,不妨尝试一下这段代码,把你的 PDF 文件转成长图吧! 🚀


文章转载自:

http://NGgbJex9.nmywm.cn
http://vbDn4xJG.nmywm.cn
http://dgtCR0k3.nmywm.cn
http://QZbcTEqa.nmywm.cn
http://9HFI9Y95.nmywm.cn
http://RyfKVFjZ.nmywm.cn
http://gmLSE6h2.nmywm.cn
http://uTfVgP94.nmywm.cn
http://axbMxY4V.nmywm.cn
http://qJGOTY2R.nmywm.cn
http://IktFQZJV.nmywm.cn
http://KKAICIsC.nmywm.cn
http://Cdq2qb1R.nmywm.cn
http://znNc0bOA.nmywm.cn
http://cp1Bcjas.nmywm.cn
http://XEr9TPil.nmywm.cn
http://C8rnHuBQ.nmywm.cn
http://8Ntv4shN.nmywm.cn
http://SuPT1Ezn.nmywm.cn
http://8rADAodU.nmywm.cn
http://DjzjqYa3.nmywm.cn
http://8ex0aXjo.nmywm.cn
http://tAvgmslj.nmywm.cn
http://X22db1Vp.nmywm.cn
http://b3u57kDP.nmywm.cn
http://hJApFMX2.nmywm.cn
http://vPcCPdux.nmywm.cn
http://cBOWCqUO.nmywm.cn
http://LVidOpBD.nmywm.cn
http://IO8YlpLE.nmywm.cn
http://www.dtcms.com/a/386032.html

相关文章:

  • 从Dubbo到SpringCloud Alibaba:大型项目迁移的实战手册(含成本分析与踩坑全记录)(二)
  • vue3 + ts + uniappX 封装上传文件(image pdf)、预览文件功能
  • PDF/图像/音视频一体化处理方案
  • 【数据结构】 深入理解 LinkedList 与链表
  • Hadoop HDFS-高可用集群部署
  • 深入汇编底层与操作系统系统调用接口:彻底掰开揉碎c语言简单的一行代码-打印helloworld是如何从C语言点击运行到显示在屏幕上的
  • ARM3.(汇编函数和c语言相互调用及ARM裸机开发环境搭建)
  • LeetCode 380 - O(1) 时间插入、删除和获取随机元素
  • 9 基于机器学习进行遥感影像参数反演-以随机森林为例
  • DB Hitek宣布推出650V GaN HEMT工艺
  • 机器学习简单数据分析案例
  • [特殊字符] 欢迎使用 C++ Arrow 函数 - 革命性的新特性!
  • 外网访问分布式跟踪系统 zipkin
  • Base 发币在即:L2 代币能否撬动生态增长?
  • DRDR生态Token正式上线BitMart,开启全球化新篇章
  • Spring Boot 3 + EasyExcel 文件导入导出实现
  • 9.16总结
  • Android开机时间查看
  • 探针水平的表达矩阵转换为基因水平的表达矩阵是芯片数据分析中关键的一步
  • PHP基础-语法初步(第七天)
  • 奥威BI与ChatBI:自然语言交互赋能企业数据分析新体验
  • Vue: 组件基础
  • 亚马逊云科技 EC2 服务终端节点:安全高效访问云服务的利器
  • 2026届计算机毕业设计选题 大数据毕业设计选题推荐 题目新颖 数据分析 可视化大屏 通过率高
  • html实现文字横向对齐以及margin的解释
  • 如何轻松找到并畅玩Edge浏览器隐藏的冲浪小游戏
  • K8S中的神秘任务Job与CronJob
  • go grpc开发使用
  • [论文阅读] 人工智能 + 软件工程 | 告别冗余HTML与高算力消耗:EfficientUICoder如何破解UI2Code的token难题
  • Golang语言入门篇004_Go命令详解