python提取PDF单独某页

单独提取PDF某一页的内容,或者把PDF文件批量拆成一页的

from tkinter import *
import tkinter.messagebox
import PyPDF2
import os
import tkinter as tk
from tkinter import filedialog
import time

G = 0

def root():
    global entry1
    global entry2
    global G
    global text1
    global path
    wind=Tk()
    wind.title("PDF单独提取某页")
    wind.geometry('500x120+700+250')
    wind.minsize(700,120)
    wind.maxsize(700,120)
    mainmenu = Menu(wind)
    mainmenu.add_command(label="退出",command=Q)
    wind.config(menu = mainmenu)
    label1 = Label(wind,text="请输入PDF文件路径:")
    label1.grid(row=1,column=2)
    entry1=Entry(wind,font=("微软雅黑",20),width=32)
    entry1.grid(row=1,column=15)
    label2 = Label(wind,text="请输入提取页码:")
    label2.grid(row=2,column=2)
    entry2=Entry(wind,font=("微软雅黑",20),state = "disabled",width=32)
    entry2.grid(row=2,column=15)
    button3=Button(wind,text="浏览",command=liulan)
    button3.grid(row=1,column=16)
    text1 = Listbox(wind,font = ("微软雅黑",12),width = 4,height = 1)
    text1.grid(row=2 ,column=16)
    button2=Button(wind,text="开始执行",command=start)
    button2.grid(row=3,column=15)
    button3=Button(wind,text="取消",command=qx)
    button3.grid(row=3,column=16)
    button4=Button(wind,text="批量拆分",command=cai)
    button4.grid(row=3,column=2)

    wind.mainloop()
    
def start():
    global path
    P = entry1.get()
    O = entry2.get()
    W = int(O)-1
    T = W+1
    if P != "":
        path = P
    else:
        pass
    try:
        pdf_file = open(path, 'rb')
        pdf_reader = PyPDF2.PdfFileReader(pdf_file)  # 创建 PDF 对象
        source_name = pdf_file.name  # 获",取源文件名称,包含绝对路径
        pdf_writer = PyPDF2.PdfFileWriter()  # 创建一个空白 PDF 对象
    #for page_num in range(pdf_reader.numPages):  # 将每页内容分别写入一个新文件
        page_obj = pdf_reader.getPage(W)
        pdf_writer.addPage(page_obj)  # 向空白 PDF 对象中添加要复制的 PDF页面
        new_name = source_name[:-4] + "第" + str(T) + "页" + ".pdf"
        pdf_new_file = open(new_name, 'wb')  # 创建一个新文件
        pdf_writer.write(pdf_new_file)  # 将添加了内容的空白 PDF 对象,写入到新建文件中
        pdf_new_file.close()
        #pdf_writer.__init__()  # 将 PDF 对象初始化
        pdf_file.close()
    except(AttributeError):
        start()
    except:
        tkinter.messagebox.showerror("涛:","出错了,请联系制作者,即将提示错误信息,请谨记!")
        tkinter.messagebox.showerror("涛:",sys.exc_info())
    else:
        tkinter.messagebox.showinfo("涛:","提取成功")

def Q():
    if tkinter.messagebox.askokcancel("涛:","确定退出?"):
        os._exit(0)

def liulan():
    global path
    global G
    G=G+1
    entry1['state'] = 'normal'
    root = tk.Tk()
    root.title("涛涛正在选取文件,别打扰")
    root.withdraw()
    path = filedialog.askopenfilename() #获得选择好的文件
    print(path)
    if entry1.get() == '':
        if path != "":
            text1.insert(END,"OK")
            text1.see(END)
        else:
            text1.insert(END,"NG")
            text1.see(END)
            
    else:
        text1.insert(END,"NG")
        text1.see(END)
    entry1.delete(0,END)
    entry1.insert(0,str(path))
    entry1['state'] = 'disabled'
    entry2['state'] = 'normal'
    

def qx():
    global path
    global text1
    path = 0
    entry1['state'] = 'normal'
    entry2['state'] = 'disabled'
    text1.see(END)
    text1.delete(0,END)
    text1.see(END)

def cai():
    global path
    tkinter.messagebox.showinfo("涛:","程序无响应属于正常现象,说明正在拆分生成文件,请稍等!!")
    X=0
    P = entry1.get()
    while True:
        try:
            O=X+1

            if P != "":
                path = P
            else:
                pass
            try:
                pdf_file = open(path, 'rb')
                pdf_reader = PyPDF2.PdfFileReader(pdf_file)  # 创建 PDF 对象
                source_name = pdf_file.name  # 获取源文件名称,包含绝对路径
                pdf_writer = PyPDF2.PdfFileWriter()  # 创建一个空白 PDF 对象
            #for page_num in range(pdf_reader.numPages):  # 将每页内容分别写入一个新文件
                page_obj = pdf_reader.getPage(X)
                pdf_writer.addPage(page_obj)  # 向空白 PDF 对象中添加要复制的 PDF页面
                new_name = source_name[:-4] + "第" + str(O) + "页" + ".pdf"
                pdf_new_file = open(new_name, 'wb')  # 创建一个新文件
                pdf_writer.write(pdf_new_file)  # 将添加了内容的空白 PDF 对象,写入到新建文件中
                pdf_new_file.close()
                pdf_file.close()
                X=X+1
            except(AttributeError):
                start()
        except(IndexError):
            break
    tkinter.messagebox.showinfo("涛:","分割成功")

root()

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值