浅浅写一个Word、PowerPoint、Excel文档转PDF工具

前言

最近在搞知识库,需要把各种 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()

效果展示

效果大致如下,点击运行后,就会弹出选择框,批量选择文件后,就会开始转化。

在这里插入图片描述

相关推荐

  1. 谈.版本管理工具

    2024-06-08 08:02:04       40 阅读
  2. 一些生命周期

    2024-06-08 08:02:04       65 阅读
  3. 分享一个用C#的Aspose.Pdf生成pdf工具

    2024-06-08 08:02:04       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-08 08:02:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-08 08:02:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-08 08:02:04       82 阅读
  4. Python语言-面向对象

    2024-06-08 08:02:04       91 阅读

热门阅读

  1. Spring Boot 常用注解

    2024-06-08 08:02:04       27 阅读
  2. Ajax + Easy Excel 通过Blob实现导出excel

    2024-06-08 08:02:04       29 阅读
  3. ARCGIS 几种SHP融合、拼接等方法

    2024-06-08 08:02:04       31 阅读
  4. 【微信小程序】连接蓝牙设备

    2024-06-08 08:02:04       32 阅读
  5. amis 事件动作 和 行为按钮 常用用法

    2024-06-08 08:02:04       28 阅读
  6. TensorFlow 张量

    2024-06-08 08:02:04       27 阅读