怎么把pdf文档保存成图片格式

在这里插入图片描述

image-20241028170918485

有时候我们会碰到只支持图片上传的场景,如何编程快速将pdf转成图片呢?

可以使用 Python 的 pdf2image 库仅10行代码就能将 PDF 文档保存为图片格式。如果 PDF 文档包含多页,则每一页可以保存为单独的图片。以下是实现该功能的步骤:

步骤:

  1. 安装所需的库:

    • pdf2image: 用于将 PDF 转换为图片。
    • poppler-utils(非 Python 包,需要系统安装):用于支持 PDF 的渲染,pdf2image 依赖它。

    可以使用以下命令来安装:

    pip install pdf2image
    

    Poppler 安装(根据系统不同):

    • 在 Windows 上,你可以下载 Poppler for Windows 并将其路径添加到系统环境变量中。
    • 在 Linux 上,通常可以通过包管理器安装:
    sudo apt-get install poppler-utils
    
  2. Python 代码:

    • 下面的代码示例可以将多页的 PDF 保存为多张图片,每页生成一个独立的 PNG 文件。
from pdf2image import convert_from_path# PDF 文件路径
pdf_path = 'your_pdf_file_path.pdf'# 将 PDF 转换为图片
images = convert_from_path(pdf_path, dpi=150)# 保存每一页为单独的图片
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 库中导入 convert_from_path 函数,用于将 PDF 文件转换为图片。
  2. images = convert_from_path(pdf_path, dpi=150)

    • 将 PDF 文件转换为图片对象列表。dpi 参数用于设置图片的质量(DPI 越高,质量越好)。
    • 每一页的图片都会被存储在 images 列表中。
  3. for i, image in enumerate(images)

    • 遍历 images 列表,逐页保存。
    • 使用 image.save(output_path, 'PNG') 保存每页为 PNG 格式。文件名由 output_path 指定,例如 page_1.pngpage_2.png 等。

示例输出:

  • 如果 PDF 文档有 5 页,代码会生成 5 张图片:
    • page_1.png
    • page_2.png
    • page_3.png
    • page_4.png
    • page_5.png

这样可以实现将 PDF 中的每一页保存为单独的图片,非常适合需要将 PDF 分割成多张图片的场景。

image-20241028171112014

如上轻松生成了我想要的图片,把convert_pdf_to_image.py文件保留下来,这样就多了一个可以把pdf转成图片的工具了,编程就是如此快乐~

常见错误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)

这个错误通常是因为文件命名冲突引起的。如果你的脚本或者工作目录中有文件名叫 pdf2image.py,它会导致 Python 误认为你在导入的模块是你自己的文件,而不是实际的库模块。为了解决这个问题,可以按以下步骤进行修复:

解决步骤:

  1. 重命名本地文件

    • 确保你没有将你的脚本或工作目录中的任何文件命名为 pdf2image.py
    • 比如,将你的文件重命名为 convert_pdf_to_image.py 或者其他不包含 pdf2image 的名字。
  2. 检查.pyc 文件

    • 重命名后,也需要删除由 Python 生成的编译文件(.pyc 文件),这些文件可能仍在指向错误的模块版本。
    • 删除 __pycache__ 文件夹,或者直接删除目录中的 .pyc 文件。
  3. 重新运行代码

    • 重命名文件后,重新运行代码。

示例:

  • 如果你的文件原名是 pdf2image.py,请将其更改为其他名字,例如 convert_pdf_images.py
  • 删除当前目录下的 __pycache__ 文件夹:
    • 在 Windows 上,你可以手动删除文件夹。
    • 在 Linux 或 macOS 上,运行:
      rm -rf __pycache__
      

修复后的代码:

确认文件重命名和缓存清除后,可以重新运行以下代码:

from pdf2image import convert_from_path# PDF 文件路径
pdf_path = 'your_pdf_file_path.pdf'# 将 PDF 转换为图片
images = convert_from_path(pdf_path, dpi=150)# 保存每一页为单独的图片
for i, image in enumerate(images):output_path = f'page_{i + 1}.png'image.save(output_path, 'PNG')print(f'Saved: {output_path}')

额外建议:

  • 如果仍然遇到问题,可以尝试创建一个全新的 Python 虚拟环境来确保没有命名冲突,方法如下:
    python -m venv new_env
    
    然后激活虚拟环境,并安装依赖:
    new_env\Scripts\activate  # Windows
    source new_env/bin/activate  # Linux/macOSpip install pdf2image
    

这应该可以解决 ImportError,避免模块命名冲突的问题。

常见错误2:pdf2image.exceptions.

pdf2image.exceptions.PDFInfoNotInstalledError: Unable to get page count. Is poppler installed and in PATH?

这个错误是因为 pdf2image 依赖于 Poppler,而 Poppler 没有安装或没有被正确添加到系统的 PATH 环境变量中。Poppler 是一个 PDF 渲染工具,pdf2image 使用它来处理 PDF 转换。下面是如何安装和配置 Poppler 的步骤:

在不同系统上安装 Poppler

1. Windows
  • 你需要下载 Poppler 的 Windows 版本并将其路径添加到系统环境变量中。
  • 下载地址:Poppler for Windows
  • 下载 ZIP 文件并解压到某个目录(例如:C:\poppler)。
  • 将解压目录的 bin 文件夹路径添加到系统的 PATH 环境变量中:
    • Win + R,输入 sysdm.cpl,进入 系统属性
    • 高级 选项卡中,点击 环境变量
    • 在系统变量中找到 Path,点击 编辑
    • 添加 Poppler 的 bin 文件夹路径(例如:C:\poppler\bin)。
  • 验证 Poppler 是否安装成功:
    • 打开命令提示符,输入以下命令:
      pdfinfo
      
    • 如果成功安装,你会看到 pdfinfo 的相关信息输出。
2. Linux
  • 大多数 Linux 发行版可以通过包管理器安装 Poppler:
    sudo apt-get install poppler-utils
    
    或者在基于 Fedora 的系统上:
    sudo dnf install poppler-utils
    
3. macOS
  • 你可以使用 Homebrew 来安装 Poppler:
    brew install poppler
    

添加 Poppler 到 PATH

  • 如果在安装之后还是遇到错误,需要确保 Poppler 的可执行文件在系统的 PATH 环境变量中,具体步骤如下:
    • 在 Windows 上,确保 Poppler 安装目录的 bin 文件夹路径(如 C:\poppler\bin)已添加到环境变量中。
    • 在 Linux/macOS 上,安装时通常会自动添加到 PATH 中。

验证安装

  • 在终端中运行以下命令,确保 Poppler 工具可以被找到:
    pdfinfo --version
    
    • 如果 Poppler 安装正确并且在 PATH 中,你将看到 Poppler 的版本信息。

再次运行代码

完成 Poppler 的安装和环境变量配置之后,可以重新运行你的 Python 代码:

from pdf2image import convert_from_path# PDF 文件路径
pdf_path = 'your_pdf_file_path.pdf'# 将 PDF 转换为图片
images = convert_from_path(pdf_path, dpi=150)# 保存每一页为单独的图片
for i, image in enumerate(images):output_path = f'page_{i + 1}.png'image.save(output_path, 'PNG')print(f'Saved: {output_path}')

这个过程应该可以解决 PDFInfoNotInstalledError,确保 pdf2image 可以正常调用 Poppler 进行 PDF 转换。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/459093.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(52)MATLAB仿真说明迫零均衡器的缺点

文章目录 前言一、迫零均衡器的缺点分析二、仿真分析迫零均衡器带来的噪声增强三、仿真结果画图四、信道均衡的MMSE准则 前言 本文从迫零均衡器的设计准则出发,分析了其设计思想和存在的问题。在此基础上给出了MATLAB评估源代码,并运行得到仿真评估结果…

工业互联网平台赋能制造业数字化转型方案(55页PPT)

方案介绍: 本方案旨在通过工业互联网平台,为制造业提供一站式的数字化转型解决方案。平台将集成物联网、云计算、大数据、人工智能等先进技术,实现对生产设备、制造过程、供应链等各个环节的全面数字化管理。通过实施本方案,制造…

《使用Gin框架构建分布式应用》阅读笔记:p234-p250

《用Gin框架构建分布式应用》学习第13天,p234-p250总结,总17页。 一、技术总结 1.message broker (1)RabbitMQ 书里使用的是RabbitMQ(https://www.rabbitmq.com/),这里补充一点说明: docker run -d --name rabbitmq -p 5672:…

美畅物联丨视频上云网关如何配置上级联网云平台

在当今的智慧交通与安防监控体系中,视频上云网关发挥着至关重要的作用。以美畅视频上云网关为例,具备强大的兼容性,能够对接来自不同厂家、不同型号的视频设备,将这些设备输出的各异视频流进行汇聚整合。在获取摄像机视频流后&…

进阶 | Prometheus+Grafana 普罗米修斯

一、Prometheus服务部署 Prometheus服务部署以及关联node节点数据,详情看:入门 | PrometheusGrafana 普罗米修斯-CSDN博客 二、Prometheus验证node节点监控数据 1、修改prometheus server配置 vim /usr/local/prometheus/conf/prometheus.yml 重启服…

一个简单的 uas_send_bye.xml for SIPp

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE scenario SYSTEM "sipp.dtd"> <scenario name"iinv-o200-obye.xml -- wjd 2014"><recv request"INVITE" rrs"true"/><send>&l…

【10天速通Navigation2】(四) :ORB-SLAM3的ROS2 humble编译和配置

前言 往期内容&#xff1a; 第一期&#xff1a;【10天速通Navigation2】(一) 框架总览和概念解释第二期&#xff1a;【10天速通Navigation2】(二) &#xff1a;ROS2gazebo阿克曼小车模型搭建-gazebo_ackermann_drive等插件的配置和说明第三期&#xff1a;【10天速通Navigation…

回溯算法习题其二-Java【力扣】【算法学习day.16】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非常非常高滴&am…

【Java小白图文教程】-05-数组和排序算法详解

精品专题&#xff1a; 01.《C语言从不挂科到高绩点》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12753294.html?spm1001.2014.3001.5482 02. 《SpringBoot详细教程》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12789841.html?spm1001.20…

论文概览 |《Computers, Environment and Urban Systems》2024.10 Vol.113

本次给大家整理的是《Computers, Environment and Urban Systems》杂志2024年10月第113期的论文的题目和摘要&#xff0c;一共包括13篇SCI论文&#xff01; 论文1 Can consumer big data reveal often-overlooked urban poverty? Evidence from Guangzhou, China 消费者大数…

百度SEO中的关键词密度与内容优化研究【百度SEO专家】

大家好&#xff0c;我是百度SEO专家&#xff08;林汉文&#xff09;&#xff0c;在百度SEO优化中&#xff0c;关键词密度和关键词内容的优化对提升页面排名至关重要。关键词的合理布局与内容的质量是确保网页在百度搜索结果中脱颖而出的关键因素。下面我们将从关键词密度和关键…

通俗易懂的餐厅例子来讲解JVM

餐厅版本 JVM&#xff08;Java虚拟机&#xff09;可以想象成一个虚拟的计算机&#xff0c;它能够运行Java程序。为了让你更容易理解&#xff0c;我们可以用一个餐厅的比喻来解释JVM&#xff1a; 菜单&#xff08;Java源代码&#xff09;&#xff1a; 想象一下&#xff0c;Java…

BLFAasia2025广州国际酒饮料制造设备及液态加工技术展览会(广州酒饮料液态加工技术展)

Asia Beer and Beverage Technology and Liquid Food Processing Equipment Exhibition BLFAasia2025广州国际酒饮料制造设备及液态加工技术展览会&#xff08;以下简称&#xff1a;“BLFAasia”&#xff09;展会于2025年8月22-24日在粤港澳大湾区核心城市广州隆重举行。是专注…

自动驾驶-传感器简述

自动驾驶车辆上的传感器类型包含激光雷达、毫米波雷达、相机、imu、rtk、超声波雷达等&#xff0c;这些传感器用来接收外部世界多姿多彩的信号&#xff0c;根据接收到的信号&#xff0c;车载大脑对信号进行处理&#xff0c;那信号的准确程度就尤为重要。 本文将各个传感器的特性…

【acwing】算法基础课-搜索与图论

目录 1、dfs(深度优先搜索) 1.1 排列数字 1.2 n皇后问题 搜索顺序1 搜索顺序2 2、bfs(广度优先搜索) 2.1 走迷宫 2.2 八数码 3、树与图的存储 4、树与图的遍历 4.1 树的重心 4.2 图中点的层次 5、拓扑排序 6、最短路问题 6.1 朴素Dijkstra算法 6.2 堆优化Dijks…

Qt | windows视频播放器小项目

点击上方"蓝字"关注我们 01、前言 >>> Windows平台如果播放不了视频,记得下载编解码工具:https://www.mediaplayercodecpack.com/#google_vignette media.player.codec.pack.v4.6.0.setup.exe 下载后双击安装。 02、videowidget.pro >>> (.pro…

Python: Print Table on console

# encoding: utf-8 # 版权所有 2024 ©涂聚文有限公司 # 许可信息查看&#xff1a; # 描述&#xff1a; # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 3.11 # OS : windows 10 # Datetime : 2024/10/28 22:08 # User : geo…

鸿蒙网络编程系列34-Wifi热点扫描及连接示例

1. Wifi热点简介 Wifi热点是移动设备接入网络的重要形式&#xff0c;特别是在不具备固定网络接入点的情况下&#xff0c;可以通过Wifi热点灵活方便的接入网络&#xff0c;因此在日常生活中具有广泛的应用。鸿蒙系统也提供了方便的Wifi管理API&#xff0c;支持热点扫描&#xf…

十四:Python学习笔记--基础知识完结(12)写几个案例 打包exe出来 齐活

目录 案例一&#xff1a;系统监控工具 案例二&#xff1a; 假设 多台电脑 在局域网中 只有一台电脑可以连接外网&#xff0c; 内网的数据必须要传递到外网电脑 内网&#xff1a; 外网&#xff1a; 程序打包 案例一&#xff1a;系统监控工具 加载配置&#xff1a;从 config…

HDU - 2588 GCD

题目大意&#xff1a;两个正整数 a 和 b 的最大公约数 GCD&#xff08;a&#xff0c;b&#xff09;&#xff0c;有时写成 &#xff08;a&#xff0c;b&#xff09;&#xff0c;是 a 和 b 的最大公约数&#xff0c;例如&#xff0c;&#xff08;1,2&#xff09;1&#xff0c;&am…