昨天运营同学问我一个问题,能不能把一个pdf转换成 docx 。
我给他提供了2种方式。一是用 PDF Reader PRO软件, 一个是WPS会员(普通用户只能转换3页)。
休息间隙,脑海里冒出一个想法。能不能用python写一个pdf转换docx小工具呢。说干就干。
有了AI工具后,自己变懒了。让chatGPT帮我写。
角色:你是一个python编程高手,请编写 pdf转docx并打包成 mac和windows可执行文件的代码.
将PDF转换为DOCX文件并创建一个可执行程序包是一个复杂的任务,涉及多个步骤。要完成这个任务,先需要编写Python脚本来处理PDF到DOCX的转换。然后,使用PyInstaller或其他类似库将这个Python脚本打包成适用于Mac和Windows的可执行文件。这里是一个基本的Python脚本示例,使用了pdf2docx库来执行转换:首先,安装必要的包:bashpip install pdf2docx pyinstaller以下是转换脚本 pdf_to_docx.py 的一个示例:pythonimport sysfrom pdf2docx import Converter
def convert_pdf_to_docx(pdf_path, docx_path): cv = Converter(pdf_path) cv.convert(docx_path, start=0, end=None) cv.close() print(f"Converted {pdf_path} to {docx_path}")
if __name__ == '__main__': if len(sys.argv) < 3: print("Usage: python pdf_to_docx.py input.pdf output.docx") else: pdf_path = sys.argv[1] docx_path = sys.argv[2] convert_pdf_to_docx(pdf_path, docx_path)接下来,你可以使用PyInstaller将此脚本打包成可执行文件。对于Windows环境:bashpyinstaller --onefile pdf_to_docx.py对于Mac环境,你可以在Mac中运行相同的命令,但可能还需要适配到Mac运行的环境设置。PyInstaller会在项目目录下的dist文件夹中创建可执行文件。这样,你可以将生成的可执行文件分发给Windows或Mac用户,他们可以不需要安装Python环境就能运行程序进行PDF到DOCX的转换。请注意,生成的可执行文件是平台特定的,也就是说,你需要在Windows上生成Windows的可执行文件,在Mac上生成Mac的可执行文件。此外,可执行文件的打包过程可能会因为你的系统和环境配置的不同而有所差异,例如,如果你使用的Mac系统版本为 Catalina 或更高,你可能需要对 PyInstaller 打包过程做些调整,以解决兼容性问题。在完成上述步骤之后,任何使用这些可执行文件的用户应该能够无需Python环境就能将PDF文件转换为DOCX格式。这个脚本非常简单,不包括错误检查和复杂的命令行接口,对于实际应用,你可能需要添加更多的功能以更好地服务于用户。
请在上面基础上, 添加图形图界面上传pdf,增加loading界面,并下载docx的功能
import tkinter as tkfrom tkinter import filedialog, messageboxfrom pdf2docx import Converterimport threading
def convert_pdf_to_docx(pdf_path, docx_path): try: cv = Converter(pdf_path) cv.convert(docx_path, start=0, end=None) cv.close() messagebox.showinfo("成功", f"'{pdf_path}' 被转换为 '{docx_path}'") except Exception as e: messagebox.showerror("错误", str(e)) finally: loading_label.pack_forget() convert_button['state'] = 'normal'
def thread_convert_pdf_to_docx(pdf_path, docx_path): threading.Thread(target=convert_pdf_to_docx, args=(pdf_path, docx_path)).start()
def select_pdf(): file_path = filedialog.askopenfilename(filetypes=[("PDF files", "*.pdf")]) if file_path: pdf_entry.delete(0, tk.END) pdf_entry.insert(0, file_path)
def save_docx(): file_path = filedialog.asksaveasfilename(defaultextension=".docx", filetypes=[("Word files", "*.docx")]) if file_path: docx_entry.delete(0, tk.END) docx_entry.insert(0, file_path)
def convert_button_handler(): pdf_path = pdf_entry.get() docx_path = docx_entry.get()
if not pdf_path or not docx_path: messagebox.showwarning("警告", "请选择PDF文件和DOCX保存位置") return
convert_button['state'] = 'disabled' loading_label.pack()
thread_convert_pdf_to_docx(pdf_path, docx_path)
# 创建主窗口root = tk.Tk()root.title("PDF to DOCX Converter")
# 设置输入输出文件路径pdf_entry = tk.Entry(root, width=50)pdf_entry.pack(side=tk.LEFT, padx=(10, 0), pady=10)
browse_button = tk.Button(root, text="选择PDF", command=select_pdf)browse_button.pack(side=tk.LEFT, pady=10, padx=(0, 10))
docx_entry = tk.Entry(root, width=50)docx_entry.pack(side=tk.LEFT, padx=(10, 0), pady=10)
save_button = tk.Button(root, text="保存DOCX", command=save_docx)save_button.pack(side=tk.LEFT, pady=10, padx=(0, 10))
# 转换按钮convert_button = tk.Button(root, text="转换", command=convert_button_handler)convert_button.pack(side=tk.LEFT, padx=10, pady=10)
# Loading标签loading_label = tk.Label(root, text="正在转换...")
# 主循环root.mainloop()
由于我是mac 10.15 intel芯片, 安装 pdf2docx耗费了一点时间。下面记录下步骤:
1、pip3 install pdf2docx ,需要依赖 opencv-python , opencv-python-headless。 安装依赖卡住了。看了下原因:依赖的版本 和 mac10.15不兼容。
2、我用的清华源,直接去官网找合适的源。
https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/opencv-python/
https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/opencv-python-headless/
先找安装目录找到cv2文件夹手动删掉, 然后执行pip3 install opencv_python-4.6.0.66-cp36-abi3-macosx_10_15_x86_64.whl
pip3 install opencv_python_headless-4.6.0.66-cp36-abi3-macosx_10_15_x86_64.whl
3、pip3 install pdf2docx 成功安装。
运行效果
python3 pdf2docx_demo.py
符合自己的初步预期,上传解析pdf试了下,效果不错。
最后一步,打包可执行文件
pip3 install pyinstaller
pyinstaller --onefile pdf2docx_demo.py