一个将pdf转化为图像的Python脚本(含代码下载)

写这个脚本的起因是最近发现了一个用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