热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python+pdf2docx+tkinterPDF转word小工具打包成exe

1.安装pdf2docx打开python安装目录,地址栏输入cmd回车,输入pipinstallpdf2docx回车2.编辑代码打开IDLE&#x

1.安装pdf2docx

打开python安装目录,地址栏输入cmd回车,输入pip install pdf2docx回车

2.编辑代码

打开IDLE ,菜单栏file->new file,输入代码,ctrl+S保存文件demo.py,F5运行。以下是代码。

from pdf2docx import Converter
import tkinter
import time
import threading
from tkinter import filedialog

event = threading.Event()
Once=0

#PDF文件选择
def pdfchoose():
  Filepath = filedialog.askopenfilename()
  entry1.insert(0,Filepath)

#doc路径选择
def docchoose():
  Folderpath = filedialog.askdirectory()
  entry2.insert(0,Folderpath)
def docchange():
     if s3.get():       
        docname=s3.get()+'.doc' 
        entry3.delete(0,s3.get())
        entry3.insert(0,docname)
  #PDF转word文档
def pdftodoc():
    docx_file='' # convert pdf to docx  
    if not s1.get():
        print('请选择PDF文件')
    s3name=''
    s2name=''
    if not s3.get():        
        s3name='doc.doc'
    else:
        s3name=s3.get() 
    if not s2.get():        
        docx_file=s1.get().replace('pdf','doc')           
    else:
        docx_file=s2.get()+'//'+s3name
        
    
    pdf_file = s1.get()
    cv = Converter(pdf_file)
    cv.convert(docx_file, start=0, end=None)
    cv.close()
 
def main():
  try:
    print(s1.get(),s2.get())
    for i in range(0, 30):
      mpb["value"] = i
      text.see(tkinter.END) # 一直查看文本的最后位置~
      text.insert('end', "验证不通过,请查看!" + str(i) + "\r\n")
      # scale.config(mode='determinate', maximum=11.0, value=i)
      text.update() # 一直更新输出
      print(i)
      time.sleep(0.1)
      event.wait()
      window.update()
 
    text.insert('end', "程序运行完成!" + "\r\n")
    text.update()
    text.see(tkinter.END)
    print("验证不通过!")
    pass
  except:
    pass
 
def thread():
  # while True:
    main()
 
window = tkinter.Tk()
window.title('PDF转DOC') 
 

 #编辑框
l1=tkinter.Label(text="PDF文件路径")
l1.grid(row=0,column=0)s1 = tkinter.StringVar()
entry1 = tkinter.Entry(window, textvariable=s1,bd=5,word输出文件路径")
l2.grid(row=1,column=0) 
s2 = tkinter.StringVar()
entry2 = tkinter.Entry(window, textvariable=s2,bd=5,word文件名")
l3.grid(row=2,column=0) 
s3 = tkinter.StringVar()
entry3 = tkinter.Entry(window, textvariable=s3,bd=5,focusout",vcmd=docchange)
entry3.grid(row=2,column=1)
 
 #按钮名称,函数,位置
button1=tkinter.Button(window,text='PDF 路 径',command=pdfchoose)
button1.grid(row=0,column=2)
button2=tkinter.Button(window,text='DOC 路径',command=docchoose)
button2.grid(row=1,column=2)
button3=tkinter.Button(window,text='转        换',command=pdftodoc)
button3.grid(row=2,column=2) 

3.打包exe

打开python安装目录,地址栏输入cmd回车,输入pip install PyInstaller回车

打开demo.py安装目录,地址栏输入cmd回车,输入pyinstaller -F demo.py,生成文件在dist目录下


  • F 表示生成单个可执行文件

  • -w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!

  • -p 表示你自己自定义需要加载的类路径,一般情况下用不到

  • -i 表示可执行文件的图标

https://download.csdn.net/download/qq_44233281/20371061


推荐阅读
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文介绍了Java中Hashtable的clear()方法,该方法用于清除和移除指定Hashtable中的所有键。通过示例程序演示了clear()方法的使用。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • 无损压缩算法专题——LZSS算法实现
    本文介绍了基于无损压缩算法专题的LZSS算法实现。通过Python和C两种语言的代码实现了对任意文件的压缩和解压功能。详细介绍了LZSS算法的原理和实现过程,以及代码中的注释。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有