Python将PDF文件转成图片
代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2021-01-08 12:49:52
# @Author  : KY (owenyk@q.com)
# @Link    : http://example.org
# @Version : $Id$
#安装fitz
#pip install fitz
#安装依赖PyMuPDF
#pip install PyMuPDF
import fitz
import re
import os
def pdf2png(file_path, pic_path):
	doc = fitz.open(file_path)  #  打开PDF文件,生成一个对象
	for pg in range(doc.pageCount):  #遍历pdf每一个页面
	    page = doc[pg]
	    rotate = int(0)   #图片计数
	   # 每个尺寸的缩放系数为2,这将为我们生成分辨率提高四倍的图像。
	    zoom_x = 2.0    #x轴方向
	    zoom_y = 2.0	#y轴方向
	    trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
	    pm = page.getPixmap(matrix=trans, alpha=False)  #获取缩放后的图片
	    #pm.writePNG('%s.png' % pg)
	    img_name = "img{}.png".format(rotate)         #生成图片文件名
	    pm.writePNG(os.path.join(pic_path,img_name))  #写入图片文件
	    print('%s.png 完成' % pg)
if __name__ == '__main__':	
	file_path = r'###.pdf'  #pdf文档路径
	pic_path = 'M:\\pic'   #图片路径
	pdf2png(file_path, pic_path)
如果不使用函数简化写法:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17import fitz
file_path = r'###.pdf'  #pdf文档路径
doc = fitz.open(file_path)  #  打开PDF文件,生成一个对象
for pg in range(doc.pageCount):  #遍历pdf每一个页面
    page = doc[pg]
    rotate = int(0)   #图片计数
   # 每个尺寸的缩放系数为2,这将为我们生成分辨率提高四倍的图像。
    zoom_x = 2.0    #x轴方向
    zoom_y = 2.0	#y轴方向
    trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
    pm = page.getPixmap(matrix=trans, alpha=False)  #获取缩放后的图片
    pm.writePNG('%s.png' % pg)
    #img_name = "img{}.png".format(rotate)         #生成图片文件名
    #pm.writePNG(os.path.join(pic_path,img_name))  #写入图片文件
    print('%s.png 完成' % pg)
这样转换是会将整个pdf页面转成PNG图片,如需将页面中的部分转换图片可参照下面代码:
| 1 | import fitz | 
转载于Python使用Fitz库提取PDF格式的图像(适用于各种类型的PDF),利用,fitz,pdf,中,图片,针对,多种类型