介绍
代码利用了PyMuPDF库,python-pptx库,python-docx库,tkinter窗体
需要执行以下代码进行安装:
pip install PyMuPDF
pip install python-pptx
pip install python-docx
pip install tkinter
代码
import fitz
import os
import tkinter as tk
from tkinter import filedialog, messagebox
from pptx import Presentation
from pptx.util import Inches
from docx import Document
def select_pdf_file(var):
file_path = filedialog.askopenfilename(filetypes=[("PDF files", "*.pdf")])
if file_path:
var.set(file_path)
def select_output_directory(var):
directory = filedialog.askdirectory()
if directory:
var.set(directory)
def convert_pdf_to_images():
pdf_file_path = pdf_path_var_image.get()
output_directory = output_dir_var_image.get()
if not pdf_file_path or not output_directory:
messagebox.showerror("错误", "请同时选择PDF文件和输出目录。")
return
doc = fitz.open(pdf_file_path)
for page_number in range(len(doc)):
page = doc.load_page(page_number)
pix = page.get_pixmap()
output = os.path.join(output_directory, "image_page_" + str(page_number) + ".png")
pix.save(output)
messagebox.showinfo("成功", "PDF成功转换为图片!")
def pdf_to_ppt():
pdf_path = pdf_path_var_ppt.get()
ppt_path = output_dir_var_ppt.get() + "/output.pptx"
if not pdf_path or not ppt_path:
messagebox.showerror("错误", "请同时选择PDF文件和输出目录。")
return
# 打开PDF文件
pdf_document = fitz.open(pdf_path)
num_pages = len(pdf_document)
# 创建PPT对象
ppt = Presentation()
for page_number in range(num_pages):
# 提取PDF中的一页
pdf_page = pdf_document.load_page(page_number)
# 创建新的PPT幻灯片
slide_layout = ppt.slide_layouts[1]
slide = ppt.slides.add_slide(slide_layout)
# 提取PDF页中的文本并添加到PPT幻灯片中
text = pdf_page.get_text()
textbox = slide.shapes.add_textbox(Inches(1), Inches(1), Inches(8), Inches(5.5))
text_frame = textbox.text_frame
text_frame.text = text
# 保存PPT文件
ppt.save(ppt_path)
messagebox.showinfo("成功", "PDF成功转换为PPT!")
def open_pdf_to_image():
global pdf_to_image_window
pdf_to_image_window = tk.Toplevel(root)
pdf_to_image_window.title("PDF 转 图片")
global pdf_path_var_image
global output_dir_var_image
pdf_path_var_image = tk.StringVar()
output_dir_var_image = tk.StringVar()
tk.Label(pdf_to_image_window, text="选择PDF文件:").pack(pady=10)
tk.Entry(pdf_to_image_window, textvariable=pdf_path_var_image, width=50).pack(pady=5)
tk.Button(pdf_to_image_window, text="浏览", command=lambda: select_pdf_file(pdf_path_var_image)).pack(pady=5)
tk.Label(pdf_to_image_window, text="选择输出目录:").pack(pady=10)
tk.Entry(pdf_to_image_window, textvariable=output_dir_var_image, width=50).pack(pady=5)
tk.Button(pdf_to_image_window, text="浏览", command=lambda: select_output_directory(output_dir_var_image)).pack(pady=5)
tk.Button(pdf_to_image_window, text="开始转换", command=convert_pdf_to_images).pack(pady=20)
def open_pdf_to_ppt():
global pdf_to_ppt_window
pdf_to_ppt_window = tk.Toplevel(root)
pdf_to_ppt_window.title("PDF 转 PPT")
global pdf_path_var_ppt
global output_dir_var_ppt
pdf_path_var_ppt = tk.StringVar()
output_dir_var_ppt = tk.StringVar()
tk.Label(pdf_to_ppt_window, text="选择PDF文件:").pack(pady=10)
tk.Entry(pdf_to_ppt_window, textvariable=pdf_path_var_ppt, width=50).pack(pady=5)
tk.Button(pdf_to_ppt_window, text="浏览", command=lambda: select_pdf_file(pdf_path_var_ppt)).pack(pady=5)
tk.Label(pdf_to_ppt_window, text="选择输出目录:").pack(pady=10)
tk.Entry(pdf_to_ppt_window, textvariable=output_dir_var_ppt, width=50).pack(pady=5)
tk.Button(pdf_to_ppt_window, text="浏览", command=lambda: select_output_directory(output_dir_var_ppt)).pack(pady=5)
tk.Button(pdf_to_ppt_window, text="开始转换", command=pdf_to_ppt).pack(pady=20)
def pdf_to_word():
pdf_path = pdf_path_var_word.get()
word_path = output_dir_var_word.get() + "/output.docx"
if not pdf_path or not word_path:
messagebox.showerror("错误", "请同时选择PDF文件和输出目录。")
return
doc = fitz.open(pdf_path)
word_document = Document()
for page_num in range(len(doc)):
page = doc.load_page(page_num)
text = page.get_text("text")
word_document.add_paragraph(text)
if page_num != len(doc) - 1:
word_document.add_page_break()
word_document.save(word_path)
messagebox.showinfo("成功", "PDF成功转换为Word!")
def open_pdf_to_word():
global pdf_to_word_window
pdf_to_word_window = tk.Toplevel(root)
pdf_to_word_window.title("PDF 转 Word")
global pdf_path_var_word
global output_dir_var_word
pdf_path_var_word = tk.StringVar()
output_dir_var_word = tk.StringVar()
tk.Label(pdf_to_word_window, text="选择PDF文件:").pack(pady=10)
tk.Entry(pdf_to_word_window, textvariable=pdf_path_var_word, width=50).pack(pady=5)
tk.Button(pdf_to_word_window, text="浏览", command=lambda: select_pdf_file(pdf_path_var_word)).pack(pady=5)
tk.Label(pdf_to_word_window, text="选择输出目录:").pack(pady=10)
tk.Entry(pdf_to_word_window, textvariable=output_dir_var_word, width=50).pack(pady=5)
tk.Button(pdf_to_word_window, text="浏览", command=lambda: select_output_directory(output_dir_var_word)).pack(pady=5)
tk.Button(pdf_to_word_window, text="开始转换", command=pdf_to_word).pack(pady=20)
root = tk.Tk()
root.title("PDF 转换工具")
tk.Button(root, text="PDF 转 图片", command=open_pdf_to_image, width=20).pack(pady=10)
tk.Button(root, text="PDF 转 PPT", command=open_pdf_to_ppt, width=20).pack(pady=10)
tk.Button(root, text="PDF 转 Word", command=open_pdf_to_word, width=20).pack(pady=10)
root.mainloop()
安装好了之后可以运行代码就可以直接运行了
运行截图
大概就是这种样子,可以用就行了不管好不好看了
exe文件
方便有的同学不会用Python所以我直接打包了exe文件可以直接下载使用的
办公软件.zip
zip文件
42.2M
下载解压即可
是电脑的软件哦!!
手机是不可以用的!!!
有什么问题可以评论或者私聊站长哦!
© 版权声明
免责声明:
本站提供的资源所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关。您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,得到更好的正版服务。侵删请致信 E-mail:2945314004@qq.com。
THE END
暂无评论内容