前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PDF转图片

PDF转图片

原创
作者头像
GhostCN_Z
修改2021-08-04 14:16:10
3.3K0
修改2021-08-04 14:16:10
举报
文章被收录于专栏:GhostCN_Z

经过测试,fitz是目前PDF转图片相对较简单快捷且无bug的一个方法,不会出现转换图片时白屏的情况。弊端是转换较慢。

fitz——高质量转PDF

安装

  1. pip install traits
  2. pip install fitz
  3. pip install PyMuPDF

示例

代码语言:txt
复制
import os
import fitz
import traceback
from concurrent.futures import ThreadPoolExecutor, wait
from loguru import logger

'''
# 将PDF转化为图片
pdfPath pdf文件的路径
imgPath 图像要保存的文件夹
zoom_x x方向的缩放系数
zoom_y y方向的缩放系数
rotation_angle 旋转角度

zoom_x和zoom_y一般取相同值,值越大,图像分辨率越高。
'''

# 读取存放PDF的文件夹
file_path = r"E:\合同PDF\\HTPDF1\\"
# 保存文件夹
save_path = r"F:\HTPNG1\\"
file_list = os.listdir(file_path)
# 日志模块
logger.add('pdf2png.log', format="{time} {level} {message}", level="INFO")

# pdf_image(r"E:\PyPro\小功能\PDF切割图片\PDF\0700000062.pdf", r"E:\PyPro\小功能\PDF切割图片\PNG\\", 2, 2, 0)
def pdf_image(pdfPath, imgPath=save_path, zoom_x=2, zoom_y=2, rotation_angle=0):
    CosNo = pdfPath.split('\\')[-1].strip('.pdf')
    logger.info(f"开始切割 {CosNo}")
    save_path_dir=imgPath+CosNo+'\\'
    os.mkdir(save_path_dir)
    try:
        # 打开PDF文件
        pdf = fitz.open(pdfPath)
        # 逐页读取PDF
        for pg in range(0, pdf.pageCount):
            page = pdf[pg]
            # 设置缩放和旋转系数
            trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotation_angle)
            pm = page.getPixmap(matrix=trans, alpha=False)
            # 开始写图像
            pm.writePNG(save_path_dir + CosNo+'_'+str(pg+1) + ".jpg")
        pdf.close()
    except:
        logger.error(f"{CosNo} 切割失败")
        print(traceback.print_exc())
        return False
    logger.info(f"{CosNo} 切割完毕")
    return True




if __name__ == '__main__':
    t=ThreadPoolExecutor(20)
    tt=[]
    for filename in file_list:
        if '.pdf' in filename:
            full_path=file_path+filename
            task=t.submit(pdf_image,full_path)
            tt.append(task)
    wait(tt)

参数解释

zoom_x:x方向的缩放系数

zoom_y:y方向的缩放系数

rotation_angle:旋转角度

注意:

zoom_x 和 zoom_y 一般是相同的

系数越大,像素越高,越清晰,相对文件越大。

实测一般 2 满足清晰度以及大小的需求

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • fitz——高质量转PDF
    • 安装
      • 示例
        • 参数解释
          • 注意:
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档