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,中,图片,针对,多种类型