pdf_tools.py 1.29 KB
import fitz
import os


class PdfHandler:

    def __init__(self, pdf_path):
        self.pdf_path = pdf_path
        self.pdf_name = os.path.splitext(os.path.basename(pdf_path))[0]

    def to_pix_img(self, save_dir_path, zoom_x, zoom_y):
        trans = fitz.Matrix(zoom_x, zoom_y).preRotate(0)  # zoom factor 2 in each dimension
        with fitz.Document(self.pdf_path) as pdf:
            # print(pdf.metadata)
            for page in pdf:
                pm = page.getPixmap(matrix=trans, alpha=False)  # 获得每一页的流对象
                save_path = os.path.join(save_dir_path, '{0}_{1}.png'.format(self.pdf_name, page.number))
                pm.writePNG(save_path)

    def to_svg_img(self, save_dir_path):
        with fitz.Document(self.pdf_path) as pdf:
            for page in pdf:
                svg = page.getSVGimage(matrix=fitz.Identity)  # UTF-8 string svg
                save_path = os.path.join(save_dir_path, '{0}_{1}.svg'.format(self.pdf_name, page.number))
                with open(save_path, 'w') as f:
                    f.write(svg)


if __name__ == '__main__':
    pdf_handler = PdfHandler('/Users/clay/Desktop/biz/pdf_test/test.pdf')
    # pdf_handler.to_pix_img('/Users/clay/Desktop/biz/pdf_test/', 1.0, 1.0)
    # pdf_handler.to_svg_img('/Users/clay/Desktop/biz/pdf_test/')