浅浅写一个Word、PowerPoint、Excel文档转PDF工具
【摘要】 前言最近在搞知识库,需要把各种 Word、PowerPoint、Excel 文件转换成 PDF 文件,不然 Word 中的表格中的文字提取会出现一些问题;使用 Office 或者 WPS 将大量文件转换成 PDF 需要频繁重复打开文件,点击保存为PDF,然后再关闭,非常繁琐。所以就简单的写了下面的 Python 程序来帮助我转化。 代码下面的程序需要使用开源 Office 工具 —— li...
前言
最近在搞知识库,需要把各种 Word、PowerPoint、Excel 文件转换成 PDF 文件,不然 Word 中的表格中的文字提取会出现一些问题;使用 Office 或者 WPS 将大量文件转换成 PDF 需要频繁重复打开文件,点击保存为PDF,然后再关闭,非常繁琐。所以就简单的写了下面的 Python 程序来帮助我转化。
代码
下面的程序需要使用开源 Office 工具 —— libreoffice,安装该工具后才能使用下面的命令行才能使用 libreoffice 中的 PDF 转化功能将文档转化。
import os
import subprocess
from pathlib import Path
from tkinter import Tk, filedialog, messagebox
def convert_to_pdf(input_file):
try:
# Get the directory of the input file
input_dir = os.path.dirname(input_file)
# Prepare output file path
output_file = os.path.join(input_dir, Path(input_file).stem + '.pdf')
# Convert to PDF using LibreOffice
subprocess.run(['soffice', '--headless', '--convert-to', 'pdf', input_file, '--outdir', input_dir],
check=True)
print(f"Converted {input_file} to {output_file}")
return output_file
except Exception as e:
print(f"Error converting file {input_file}: {e}")
return None
def select_files_and_convert():
# Supported file extensions
supported_extensions = [ ('files', '*.doc;*.docx;*.ppt;*.pptx;*.xls;*.xlsx'),
('Word files', '*.doc;*.docx'),
('PowerPoint files', '*.ppt;*.pptx'),
('Excel files', '*.xls;*.xlsx')]
# Create Tkinter root window
root = Tk()
root.withdraw() # Hide the root window
# Open file dialog to select files
files = filedialog.askopenfilenames(title="Select files to convert", filetypes=supported_extensions)
if not files:
messagebox.showinfo("No files selected", "No files were selected for conversion.")
return
# Convert selected files
for file in files:
output_file = convert_to_pdf(file)
if output_file:
# messagebox.showinfo("Success", f"Converted {file} to {output_file}")
print(f"Converted {file} to {output_file}")
else:
# messagebox.showerror("Error", f"Failed to convert {file}")
print(f"Failed to convert {file}")
def main():
select_files_and_convert()
if __name__ == "__main__":
main()
效果展示
效果大致如下,点击运行后,就会弹出选择框,批量选择文件后,就会开始转化。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)