请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册
搜索
热搜: Excel discuz
查看: 329|回复: 3

PDF转PNG图片格式

[复制链接]

333

主题

5万

元宝

51万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
519487
发表于 2021-6-27 18:38:34 | 显示全部楼层 |阅读模式
  1. import fitz
  2. url = r'H:\清\带线版\16-20.pdf'
  3. #  打开PDF文件,生成一个对象
  4. doc = fitz.open(url)
  5. print(f'一共{doc.pageCount}页')
  6. for pg in range(doc.pageCount):
  7.     page = doc[pg]
  8.     rotate = int(0)
  9.     # 每个尺寸的缩放系数为2,这将为我们生成分辨率提高四倍的图像。
  10.     zoom_x = 6.0
  11.     zoom_y = 6.0
  12.     trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
  13.     pm = page.getPixmap(matrix=trans, alpha=False)
  14.     pm.writePNG(r'H:\清\带线版\tu'+'{:02}.png' .format(pg))

  15. print('转换完成')
复制代码



回复

使用道具 举报

333

主题

5万

元宝

51万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
519487
 楼主| 发表于 2021-6-27 18:38:43 | 显示全部楼层
pip install PyMuPDF
回复

使用道具 举报

333

主题

5万

元宝

51万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
519487
 楼主| 发表于 2021-8-6 18:11:08 | 显示全部楼层
下面改进代码,把文件夹内的所有PDF转为图片,此代码并没有判断文件是否PDF,所以使用的时候请注意。
  1. import fitz
  2. import os
  3. name = []
  4. path = []
  5. i = 1
  6. for lujing,liebiao,wenjian in os.walk(r'F:\002\001'):
  7.     for a in wenjian:
  8.         patha = lujing +'\\' +a
  9.         path.append(patha)
  10.         name.append(a)
  11.         zidian = dict(zip(name,path))

  12. for name,path in zidian.items():
  13.     lujing = 'F:\\002\\001\\'+name.split('.')[0]
  14.     if not os.path.exists(lujing):
  15.         os.mkdir(lujing)
  16.     print(lujing)
  17.     #print(path)
  18.     url = path
  19.     #  打开PDF文件,生成一个对象
  20.     doc = fitz.open(url)
  21.     print(f'一共{doc.pageCount}页')
  22.     pdf_name = os.path.splitext(url)[0]
  23.     for pg in range(doc.pageCount):
  24.         page = doc[pg]
  25.         rotate = int(0)
  26.         # 每个尺寸的缩放系数为2,这将为我们生成分辨率提高四倍的图像。
  27.         zoom_x = 6.0
  28.         zoom_y = 6.0
  29.         trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
  30.         pm = page.getPixmap(matrix=trans, alpha=False)
  31.         pm.writePNG(lujing +'\\'+ f'{i}.png')
  32.         i = i+1
  33.     i = 1
  34.         #pm.writePNG('{:02}.png'.format(pg))
  35.         #pm.writePNG('%s.png' % pdf_name)
复制代码




回复

使用道具 举报

333

主题

5万

元宝

51万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
519487
 楼主| 发表于 2021-8-6 20:54:09 | 显示全部楼层
这个应该是最终版本了,批量把PDF转成PNG图片,加入了判断文件是否为PDF文件,这是我自学Python以来,写的第一个能够帮自己处理文件的一个小工具了

  1. import fitz
  2. import os
  3. name = []
  4. path = []
  5. i = 1
  6. url = 'F:\\002\\001\\'   #定义存放PDF文件的路径

  7. #在路径内搜索PDF文件,并加入列表,生成字典,键值对分别是文件名和文件路径
  8. for lujing,liebiao,wenjian in os.walk(url):
  9.     for a in wenjian:
  10.         if a.endswith('pdf'):
  11.             patha = lujing +'\\' +a
  12.             path.append(patha)
  13.             name.append(a)
  14.             zidian = dict(zip(name,path))

  15. #在字典内拿到文件名创建文件夹,然后转图片放到对应文件夹
  16. for name,path in zidian.items():
  17.     lujing = url + name.split('.')[0]
  18.     if not os.path.exists(lujing):
  19.         os.mkdir(lujing)
  20.     print(name)
  21.     #print(path)
  22.     url = path
  23.     #  打开PDF文件,生成一个对象
  24.     doc = fitz.open(url)
  25.     print(f'一共{doc.pageCount}页')
  26.     pdf_name = os.path.splitext(url)[0]
  27.     for pg in range(doc.pageCount):
  28.         page = doc[pg]
  29.         rotate = int(0)
  30.         # 每个尺寸的缩放系数为2,这将为我们生成分辨率提高四倍的图像。
  31.         zoom_x = 6.0
  32.         zoom_y = 6.0
  33.         trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
  34.         pm = page.getPixmap(matrix=trans, alpha=False)
  35.         pm.writePNG(lujing +'\\'+ f'{i}.png')
  36.         i = i+1
  37.     i = 1
复制代码




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|五花八门论坛 ( 豫ICP备15031300号 )

GMT+8, 2021-9-17 11:05 , Processed in 0.126687 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表