文章主要内容主要参考几篇文章并合并在一起的,文章链接依次如下,第二和第三的文章链接是从第一篇文章找到的:

(1)、https://blog.csdn.net/qq_25115281/article/details/90766814

(2)、https://blog.csdn.net/qq_43145035/article/details/83270501

(3)、https://blog.csdn.net/levy_96/article/details/83379373#commentsedit

这里只给出相关简单的代码,实际项目应用还需大家自己结合

1、首先,第一步,安装pymupdf模块,使用下面的命令安装:

pip install pymupdf

2、第二步,安装成功后,开始写我们的代码,这里改了一下第一篇参考文章的代码,主要实现将一个pdf转换为图片的代码,其中改了一点代码,增加了异常处理,返回值为布尔类型,True和False:

import fitz
import osdef convert_img(file_path):try:#  打开PDF文件,生成一个对象doc = fitz.open(file_path)img_path = r'F:\pro\study\imgs'  # 这里的文件路径看你自己的项目路径,# 我的项目是F:\pro\study 这个是我的项目路径,后边是要创建的文件夹路径# 判断路径文件夹是否存在,如果不存在我们就创建一个 好吧if not os.path.exists(img_path):os.mkdir(img_path)# 这里就是参考的上边连接的方法了,你们看人家的代码很容易明白for pg in range(doc.pageCount):page = doc[pg]rotate = int(0)# 每个尺寸的缩放系数为1.5,这将为我们生成分辨率提高三倍多的图像。如果转换出来图片是横排的话(即方向改变的话),请把下面的数值改小点zoom_x = 1.5zoom_y = 1.5trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)pm = page.getPixmap(matrix=trans, alpha=False)# pm.writePNG('%s.png' % pg)# 这里因为我要写入我上边创建的文件加下,所以我要进行路径的拼接,# 注意不要直接在这里去改img_path,否则他会在原有path基础上向后追加新的字段,产生新的路径,一定要重新写的新的变量存储路径temppic_path = os.path.join(img_path, ('img'+str(pg) + '.png'))print(temppic_path)pm.writePNG(temppic_path)print('done@@@')# 这里是因为我后边需要在最后一页加盖章,所以我要返回个关于页数的图片索引,去进行图片的寻找# 这里减1是因为 pageCount 得到的是从1 开始的pdf页数,而我后边要索引的时候是从0 进行查查找的,所以先在这里 -1# print(str(doc.pageCount - 1))# return str(doc.pageCount - 1)return Trueexcept Exception as e:return False

3、第三步,接下来安装PIL相关的库,使用命令,如果安装失败,可能缺少什么依赖,网上资料很多,请自行查阅:

pip install Pillow

4、第四步,通过PIL合并生成一张图片,主要参考用了第二篇文章的一部分代码,我直接搬过来了,改了下合成后图片的保存路径,保存为项目底下imgs目录下的img.png,跟pdf拆分出来的图片放在同一个目录,代码如下:

def _merge_img(img_list):"""拼接图片"""if img_list:img_name = img_list[0]color_mod = 'RGBA' if img_name.endswith('.png') else 'RGB'  # jpeg格式不支持RGBAfirst_img = PIL_Image.open(img_list[0])height_size = first_img.size[1]total_width = first_img.size[0]total_height = height_size * len(img_list)left = 0right = height_sizetarget = PIL_Image.new(color_mod, (total_width, total_height))  # 最终拼接的图像的大小for img in img_list:target.paste(PIL_Image.open(img), (0, left, total_width, right))left += height_sizeright += height_sizetarget.save('F:\\pro\\study\\imgs\\img.png', quality=100)return img_nameelse:return ''

5、第五步,测试代码,上面的代码都是写在同一个py文件底下,因此我们可以用下面的代码调试,即用的main方法:

if __name__ == '__main__':# 拆分pdf,生成多张图片convert_flag = convert_img('F:\pro\study\test.pdf')# 拆分成功,将多张图片追加进列表,并合并为一张图片if convert_flag:img_list = []img_list.append(r'F:\pro\study\imgs\img0.png')img_list.append(r'F:\pro\study\imgs\img1.png')img_list.append(r'F:\pro\study\imgs\img2.png')_merge_img(img_list)

6、此时可以看下F:\pro\study\imgs目录底下是否将test.pdf文件拆分为img0.png、img1.png、img2.png三张图片,并合成一张新的图片img.png:

7、以上内容仅供学习参考,谢谢!

Python 利用pymupdf将pdf转换为图片并拆分,后通过PIL合并生成一张图片相关推荐

  1. python利用pyMuPdf进行pdf压缩

    昨天临时写的压缩脚本,因为对pymupdf不是很了解,查了资料写了这个脚本. 思路很简单,pdf拆分成图片保存到本地,然后把图片压缩,最后重新生成pdf,删除保存的文件夹 (由于没有找到在内存中把pd ...

  2. 【Python】PyMuPDF模块将PDF转换为图片

    上一篇文章介绍了pdf2image模块+poppler将PDF转换为图片,这篇文章主要介绍另外一个模块PyMuPDF.  PyMuPDF(又名"fitz"):MuPDF的Pytho ...

  3. 【Python】pdf2image模块+poppler将PDF转换为图片

    有时我们需要将PDF转换成图片,今天我们主要说的是pdf2image+poppler对PDF转换成图片格式. pdf2image是个包装器,真正的转换工具是poppler GitHub地址:https ...

  4. 如何将pdf转换为图片?

    其实在PDF的使用过程中,将PDF转换为不同的文件格式是很常规的一个操作,比如有时为了方便使用,我们就会选择将PDF转换成图片格式,这样我们可以任选我们需要的内容进行使用了,比起不停的翻阅整个pdf文 ...

  5. 快速将PDF转换为图片:免费的在线PDF转换器

    在现代数字时代,PDF是一种非常常见的文件格式.它们在学术界,商业领域和许多其他领域中被广泛使用.有时,您可能需要将PDF文件转换为图像格式,以便能够方便地与他人共享和使用.在这种情况下,您可以使用免 ...

  6. 实现DOC、DOCX转换为PDF 再将PDF转换为图片

    实现DOC.DOCX转换为PDF 再将PDF转换为图片 首先导入需要的依赖 <dependency><groupId>cn.hutool</groupId>< ...

  7. python:实现将PDF转换为有声读物(附完整源码)

    python:实现将PDF转换为有声读物 import PyPDF2 import pyttsx3 book = open(input("Enter the book name: " ...

  8. Ubuntu下Java使用pdfbox将pdf转换为图片的方法及问题

    Ubuntu下Java使用pdfbox将pdf转换为图片的方法及问题 使用pdfbox-2.0.3和fontbox-2.0.3,实现pdf转图片功能. 官方手册链接: http://pdfbox.ap ...

  9. 文字PDF转换为图片格式的PDF

    在我们的日常工作和生活中,有时候我们需要对PDF文件进行一些特殊处理.有时候,我们希望将PDF的每一页提取出来作为图片,方便在其他场景中使用:而有时候,我们则需要将PDF内的内容转换为图片格式,以防止 ...

最新文章

  1. python模块与包的导入
  2. python秒转化为时间格式_Python耗费时间秒转 天小时分钟秒 时间格式美化
  3. SpringBoot(笔记)
  4. android 防腾讯新闻标题栏,仿腾讯视频android客户端上方的标题栏
  5. gensim使用FastText训练词向量
  6. Python用20行代码实现一个验证码的输入与验证(完整源码)
  7. Android Support Annotations
  8. MODIS数据的简介和下载(三)——MODIS数据下载方式(基于MODIS Web Service)
  9. 复制数据库(本地到阿里云)
  10. [leetcode]693. 交替位二进制数
  11. 电脑如何进行长截图?
  12. 腾讯内部出品Android编程入门教程,快快收藏吧!!!
  13. Linux串口ttyUSB设置
  14. 启动计算机 登管理员用户,Windows xp系统使用管理员账户登入系统的技巧
  15. 【 unity3d 】NGUI playTween与Tween动画 脚本的使用
  16. 从 Uber 数据泄露事件我们可以学到什么?
  17. 电脑无法新建文件怎么办?
  18. JS+CSS防FLASH效果竖向可折叠的滑动菜单
  19. 并发编程四:深入理解java线程
  20. Ubuntu 18.04 LTS系统主题美化

热门文章

  1. python-day18(反射)
  2. [转载]GIF、JPEG 和 PNG的区别在哪里?
  3. jacascript 立即执行函数(IIFE)与闭包
  4. iOS开发中对NSArray或者NSMutableArray中的内容排序
  5. WPF的ListBox的数据绑定,但需要添加控件在里面的时候
  6. 解析Json的格式.
  7. asp.net 去除字符串右侧的最后一个字符
  8. javaScript一种优化模式-初始化时分支
  9. 引用参数与引用返回值
  10. 人脸识别算法二:Fisherface(LDA)