Python:PDF转长图像和分页图像

简介:随着电子化文档的普及,PDF文件的使用频率越来越高。有时我们需要将PDF中的内容转化为图片格式进行分享或编辑,那么如何才能轻松地完成此任务呢?本文将为你展示一个Python工具:如何将PDF文件转化为图片,包括将PDF转化为长图像和每页分别转为单独的图像。

历史攻略:

python:pdf 转 word

安装步骤:

# Ubuntu:
sudo apt-get update
sudo apt-get install python3-pip
sudo apt-get install poppler-utils
pip3 install pdf2image
pip3 install Pillow# CentOS:
yum update
yum install python3-pip
yum install poppler-utils
pip3 install pdf2image
pip3 install Pillow# Windows 10:
安装Python:访问Python官网下载并安装Python。
安装poppler:下载poppler for Windows并解压。
设置poppler环境变量:将poppler的bin目录路径添加到系统PATH环境变量中。# 安装库
pip install pdf2image
pip install Pillow

参数说明:

pdf_path: 输入的PDF文件的路径。
output_image_path: 输出的长图像的路径。
output_folder: 输出的单页图像的文件夹路径。
poppler_path: poppler工具的bin目录路径,此路径是在Windows下必要的,因为pdf2image库需要它来进行PDF到图像的转换。

案例源码:

# -*- coding: utf-8 -*-
# time: 2023/10/23 15:53
# file: pdf2picture.py
# 公众号: 玩转测试开发import os
from pdf2image import convert_from_path
from PIL import Imagedef pdf_to_long_image(pdf_path, output_image_path):# 从PDF提取每一页为图像pages = convert_from_path(pdf_path, poppler_path='C:\\Users\\poppler-23.08.0\\Library\\bin')# 获取总的高度total_height = sum(page.height for page in pages)# 创建一个空白的长图像long_image = Image.new('RGB', (pages[0].width, total_height))# 将每一页的图像粘贴到长图像上y_offset = 0for page in pages:long_image.paste(page, (0, y_offset))y_offset += page.height# 保存长图像long_image.save(output_image_path)def pdf_to_images(pdf_path, output_folder):# 将PDF转换为PIL图像列表pages = convert_from_path(pdf_path, poppler_path='C:\\Users\\poppler-23.08.0\\Library\\bin')# 确保输出文件夹存在if not os.path.exists(output_folder):os.makedirs(output_folder)# 将每页保存为单独的图像for i, page in enumerate(pages):image_filename = os.path.join(output_folder, f"output_image_page_{i + 1}.png")page.save(image_filename, "PNG")if __name__ == '__main__':pdf_path = 'qp_01.pdf'output_folder = 'output_images'# 使用示例pdf_to_long_image('qp_01.pdf', 'output_image.png')pdf_to_images(pdf_path, output_folder)

运行结果:

图片

1、使用pdf_to_long_image函数,将得到合并了PDF所有页面长图像。

2、使用pdf_to_images函数,会在指定的输出文件夹中得到每一页PDF的单独图像文件,文件名格式为output_image_page_页码.png。

注意事项:

1、确保已经安装了所有必要的库和工具。

2、输入的PDF文件路径应该是有效的,否则程序会报错。

3、在Windows系统下,确保已经设置了poppler的环境变量或在代码中提供了正确的poppler路径。

4、生成的图像可能会占用较大存储空间,特别是当PDF文件页数较多时。

总结:通过Python可以轻松地实现PDF到图像的转换,不仅可以将整个PDF转为一个长图像,还可以将每一页分别转为单独的图像。这个小工具对于那些经常需要处理PDF的人来说非常有用。

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

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

相关文章

【黑马程序员】Maven 进阶

文章目录 前言一、分模块开发与设计1. 分模块开发意义2. 分模块开发(模块拆分)2.1 创建 Maven 模块2.2 书写模块代码2.3 通过 Maven 指令安装模块到本地仓库(install 指令) 二、依赖管理1. 依赖传递1.1 依赖传递冲突问题 2. 可选依…

Rust编程基础核心之所有权(上)

1.什么是所有权? Rust 的核心功能(之一)是 所有权(ownership)。虽然该功能很容易解释,但它对语言的其他部分有着深刻的影响。 所有程序都必须管理其运行时使用计算机内存的方式。一些语言中具有垃圾回收机制&#x…

【Linux】第十二站:进程

文章目录 1.windows和linux中的进程2.先描述3.在组织4.具体的Linux系统是如何做的?1.基本概念2.描述进程-PCB3.task_struct和PCB的关系4.task_struct内容分类5.linux具体如何做的?6.查看进程 1.windows和linux中的进程 一个已经加载到内存的程序&#xf…

【MySQL】MVCC机制(undo log,read view)

文章目录 前言一. 预备知识二. 模拟MVCC三. Read View四. RC与RR的本质区别结束语 前言 MVCC(多版本并发控制)是一种用来解决读-写冲突的无锁并发控制 MVCC为事务分配单向增长的事务ID,为每个修改保存一个版本,版本与事物ID相关联…

全球首款双模型AI手机METAVERTU2,为用户开发“第二大脑”

在2023年11月1日,英国奢侈手机品牌VERTU在香港举办了一场新品发布会,它推出了一款全新的AI手机称为METAVERTU2,这是全球首款双模型AI手机。此款手机将Web3技术与人工智能相结合,通过AI模型标记数据和AI Agent的方式,将…

如何设置OBS虚拟摄像头给钉钉视频会议使用

环境: OBS Studio 29.1.3 Win10 专业版 钉钉7.1.0 问题描述: 如何设置OBS虚拟摄像头给钉钉视频会议使用 解决方案: 1.打开OBS 底下来源这添加视频采集设备 选择OBS虚拟摄像头 2.源那再建一个图像,随便选一张图片 3.点击虚…

SpringBoot项目打包与运行

1.clean生命周期 说明:为了项目能够正确打包,先清理打包文件。 2.package生命周期 说明:打包后生成以下目录。 2.1问题 说明:springboot_08_ssmp-0.0.1-SNAPSHOT.jar中没有主清单属性。 2.2解决 说明:注释skip&…

Python之Excel数据相关

Excel Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的个人计算机数据处理软件。在1993年,作为Microsof…

JS异常处理——throw和try、catch以及debugger

让我为大家介绍一下异常处理吧! 异常处理是指预估代码执行过程中可能发生的错误,然后最大程度的避免错误的发生导致整个程序无法继续运行 throw 抛异常 第一种写法 function fun(x, y) {// undefined是false 但取反就是trueif (!x || !y) {// 第一种写…

Linux基本指令

目录 1.ls指令 2.pwd指令 3.cd指令 4.touch指令 5.mkdir指令 6.rmdir指令和rm指令 7.man指令 8.cp指令 9.mv指令 10.cat指令 11.more指令 12.less指令 13.head指令 14.tail指令 15.date指令 16.cal指令 17.find指令 18.grep指令 19.zip/unzip指令 2…

leetcode:387. 字符串中的第一个唯一字符

一、题目 函数原型 int firstUniqChar(char* s) 二、算法 设置一个大小为26的字符数组,位置0 - 25 分别对应字符 a - z 。遍历两次字符串,第一次记录下每个字符出现的次数,第二次检查哪个字符最先遍历到且出现次数为1,返回该字符即…

如何将R128的lspsram频率提高至200M?

一、修改频率方法 首先通过cboot0命令,跳转到boot0的代码中,路径为: ${root_dir}/lichee/brandy-2.0/spl/ 找到lspsram的代码,路径为: ${root_dir}/lichee/brandy-2.0/spl/drivers/psram 修改头文件,将2…

毅速丨3D打印结合拓扑优化让轻量化制造更容易

轻量化可以减少产品的重量,提高产品的性能和效率,同时减少能源消耗和排放。尤其在航空航天、汽车制造造等行业对轻量化追求更高。当前,随着制造技术的发展,拓扑优化结合3D打印为轻量化制造带来的显著的优势正在逐渐凸显。 首先&am…

【黑马程序员】SSM框架——MyBatisPlus

文章目录 前言一、MyBatisPlus 简介1. 入门案例1.1 创建新模块1.2 选择需要的技术集1.3 添加 mp 起步依赖1.4 设置 Jdbc 参数1.5 实体类与表结构1.6 定义数据接口1.7 测试功能 2. MyBatisPlus 概述3. MyBatisPlus 特性 二、标准数据层开发1. 标准数据层 CRUD 功能1.1 Lombok1.2…

Hadoop环境搭建及Demo

参考博客 Windows 10安装Hadoop 3.3.0教程 (kontext.tech) Hadoop入门篇——伪分布模式安装 & WordCount词频统计 | Liu Baoshuai’s Blog Hadoop安装教程 Linux版_linux和hadoop的安装_lnlnldczxy的博客-CSDN博客 hadoop启动出错 The value of property bind.address …

linux 安装 elasticsearch 全教程

一、去 elasticsearch官网找到Linux版本的下载链接 地址https://www.elastic.co/cn/downloads/elasticsearch 二、在linux 中用wget下载 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.10.4-linux-x86_64.tar.gz三、下载成功后解压文件 tar -x…

2023年金融科技建模大赛(初赛)开箱点评-基于四川新网银行数据集

各位同学大家好,我是Toby老师。2023年金融科技建模大赛(初赛)从今年10月14日开始,11月11日结束。 比赛背景 发展数字经济是“十四五”时期的重大战略规划。2023年,中共中央、国务院印发了《数字中国建设整体布局规划》…

POJ-3630电话表(考察字典树)

2023每日刷题&#xff08;二十&#xff09; POJ-3630电话表 题目原地址 输入样例&#xff1a; 2 3 911 97625999 91125426 5 113 12340 123440 12345 98346输出结果&#xff1a; NO YES实现代码 #include<iostream> #include<string> #include<cstring>…

抖音极速版app拉新一手申请渠道 附快手极速版app拉新申请资料

抖音极速版app拉新一手申请渠道 附快手极速版app拉新申请资料 通过“聚量推客”申请&#xff0c;价格更高 抖音极速版app拉新是地推百搭项目&#xff0c;部分团队作为主打项目推广&#xff0c;流程简单只需要新设备即可&#xff0c;如果你能做次留或者7日留存价格还是很可观的…

Vue3:一页多题答案提示及循环radio和checkbox混合使用

一页多题&#xff0c;类型包括单选&#xff08;单选、判断&#xff09;和多选&#xff0c;radio和checkbox混合使用&#xff0c;答案检验数据匹配&#xff0c;正确答案格式化&#xff0c;答案提交数据格式化&#xff0c;数据提交。 效果&#xff1a; 数据获取&#xff1a; 数据…