写这个脚本的起因是最近发现了一个用Rust编写的、很神奇的文字排版工具叫做Typst
,在调整排版格式的时候用PDF文件很难做到完全还原,于是需要将其灵活地转换为图片,但是每次在pdf编辑器中点又很麻烦,于是写了一个脚本,每次调整、编译时自动执行该代码即可得到编译好的pdf和对应的图片
使用Pythonfitz
模块来识别和处理.pdf
文件,该模块直接用conda
安装即可,输出的图片直接选择了300分辨率、.png
格式,并且用页码命名
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import fitz
import argparse
def pdf_image(pdfPath, imgPath, imgtype='png', zoom_x=1, zoom_y=1, rotation_angle=0):
pdf = fitz.open(pdfPath)
for pg in range(0, pdf.page_count):
page = pdf[pg]
trans = fitz.Matrix(zoom_x, zoom_y).prerotate(rotation_angle)
pm = page.get_pixmap(matrix=trans, alpha=False, dpi=300)
pm.save(imgPath + str(pg) + "."+imgtype)
pdf.close()
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Convert pdf into png file')
parser.add_argument('-filePath', '-f', type=str, required=True, help='the pdf path')
parser.add_argument('--imgPath', '-i', type=str, default='./', help='the output file path, the default is the current path')
parser.add_argument('--imgTpye', type=str, default='png')
args = parser.parse_args()
pdf_image(args.filePath, args.imgPath, args.imgTpye)
|
并且,代码为了方便使用,用argparse
写了命令行工具,直接使用如下命令即可将pdf
1
|
python pdf2image.py -f pdfPath -i imgPath
|