程序截图
详细代码
import tkinter as tk
from tkinter import filedialog
import fitz,glob
import os
import re
class App():
def __init__(self,root):
self.title=root.title("pdf to png weixin:ixuehuihui")
self.picaccu = tk.IntVar()
self.picaccu.set(500)
self.page=tk.StringVar()
self.page.set('格式为1:20,15-18、22')
self.all=tk.StringVar()
self.all.set("all")
tk.Label(root, text='文件:').grid(row=0, column=0, padx=10, pady=5)
tk.Button(root, text='选择', command=self.askfiles).grid(row=0, column=2, padx=10, pady=5)
tk.Label(root, text='尺寸:').grid(row=1, column=0, padx=10, pady=5)
tk.Entry(root, textvariable=self.picaccu).grid(row=1, column=1, padx=10, pady=5)
tk.Label(root, text='全部:').grid(row=2, column=0, padx=10, pady=10)
tk.Entry(root, textvariable=self.all,state='disabled').grid(row=2, column=1, padx=10, pady=5)
tk.Button(root, text='转换', command=self.exe1).grid(row=2, column=2, padx=10, pady=5)
tk.Label(root, text='页码:').grid(row=3, column=0, padx=10, pady=5)
tk.Entry(root, textvariable=self.page).grid(row=3, column=1, padx=10, pady=5)
tk.Button(root, text='转换', command=self.exe2).grid(row=3, column=2, padx=10, pady=5)
def askfiles(self):
global wenjianming
wenjianming = filedialog.askopenfilename(filetypes=[('PDF','.pdf')])
print(wenjianming)
def exe1(self):
path = wenjianming
doc = fitz.open(path)
for pg in range(0, len(doc)):
page = doc[pg]
zoom = self.picaccu.get()
rotate = int(0)
trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).preRotate(rotate)
pm = page.getPixmap(matrix=trans, alpha=False)
if os.path.exists(os.path.dirname(path) + '/全部页码图片'):
pass
else:
os.mkdir(os.path.dirname(path) + '/全部页码图片')
pm.writePNG(os.path.dirname(path) + '/全部页码图片/' + os.path.basename(path) + '_' + str(pg + 1) + '.png')
def exe2(self):
path = wenjianming
doc = fitz.open(path)
uselist=self.list_page(self.page.get())
for pg in uselist:
page = doc[pg-1]
zoom = self.picaccu.get()
rotate = int(0)
trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).preRotate(rotate)
pm = page.getPixmap(matrix=trans, alpha=False)
if os.path.exists(os.path.dirname(path) + '/局部页码图片'):
pass
else:
os.mkdir(os.path.dirname(path) + '/局部页码图片')
pm.writePNG(os.path.dirname(path) + '/局部页码图片/' + os.path.basename(path) + '_' + str(pg) + '.png')
def list_page(self,str_page):
a = str_page
res = []
for single in re.findall(r'\d+', a):
if int(single) not in res:
res.append(int(single))
for i in re.findall(r'\d+[-:]\d+', a):
start = int(re.search(r'^\d+', i).group())
end = int(re.search(r'\d+$', i).group()) + 1
for num in range(start, end):
if num not in res:
res.append(num)
res.sort()
return res
root=tk.Tk()
App(root)
tk.mainloop()