赵乾舟 发表于 2021-6-27 18:38:34

PDF转PNG图片格式

import fitz
url = r'H:\清\带线版\16-20.pdf'
#打开PDF文件,生成一个对象
doc = fitz.open(url)
print(f'一共{doc.pageCount}页')
for pg in range(doc.pageCount):
    page = doc
    rotate = int(0)
    # 每个尺寸的缩放系数为2,这将为我们生成分辨率提高四倍的图像。
    zoom_x = 6.0
    zoom_y = 6.0
    trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
    pm = page.getPixmap(matrix=trans, alpha=False)
    pm.writePNG(r'H:\清\带线版\tu'+'{:02}.png' .format(pg))

print('转换完成')


赵乾舟 发表于 2021-6-27 18:38:43

pip install PyMuPDF

赵乾舟 发表于 2021-8-6 18:11:08

下面改进代码,把文件夹内的所有PDF转为图片,此代码并没有判断文件是否PDF,所以使用的时候请注意。
import fitz
import os
name = []
path = []
i = 1
for lujing,liebiao,wenjian in os.walk(r'F:\002\001'):
    for a in wenjian:
      patha = lujing +'\\' +a
      path.append(patha)
      name.append(a)
      zidian = dict(zip(name,path))

for name,path in zidian.items():
    lujing = 'F:\\002\\001\\'+name.split('.')
    if not os.path.exists(lujing):
      os.mkdir(lujing)
    print(lujing)
    #print(path)
    url = path
    #打开PDF文件,生成一个对象
    doc = fitz.open(url)
    print(f'一共{doc.pageCount}页')
    pdf_name = os.path.splitext(url)
    for pg in range(doc.pageCount):
      page = doc
      rotate = int(0)
      # 每个尺寸的缩放系数为2,这将为我们生成分辨率提高四倍的图像。
      zoom_x = 6.0
      zoom_y = 6.0
      trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
      pm = page.getPixmap(matrix=trans, alpha=False)
      pm.writePNG(lujing +'\\'+ f'{i}.png')
      i = i+1
    i = 1
      #pm.writePNG('{:02}.png'.format(pg))
      #pm.writePNG('%s.png' % pdf_name)



赵乾舟 发表于 2021-8-6 20:54:09

这个应该是最终版本了,批量把PDF转成PNG图片,加入了判断文件是否为PDF文件,这是我自学Python以来,写的第一个能够帮自己处理文件的一个小工具了

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

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

#在字典内拿到文件名创建文件夹,然后转图片放到对应文件夹
for name,path in zidian.items():
    lujing = url + name.split('.')
    if not os.path.exists(lujing):
      os.mkdir(lujing)
    print(name)
    #print(path)
    url = path
    #打开PDF文件,生成一个对象
    doc = fitz.open(url)
    print(f'一共{doc.pageCount}页')
    pdf_name = os.path.splitext(url)
    for pg in range(doc.pageCount):
      page = doc
      rotate = int(0)
      # 每个尺寸的缩放系数为2,这将为我们生成分辨率提高四倍的图像。
      zoom_x = 6.0
      zoom_y = 6.0
      trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
      pm = page.getPixmap(matrix=trans, alpha=False)
      pm.writePNG(lujing +'\\'+ f'{i}.png')
      i = i+1
    i = 1




页: [1]
查看完整版本: PDF转PNG图片格式