万能PDF转换器

Universal PDF converter

我正在寻找“任何文档转换器”的帮助,其中任何文档文件 [doc、docx、ppt、pptx] 都将转换为 pdf。 DOCX 和 PPTX 使用 python 库很容易处理,但是 DOC 和 PPT 有点棘手。
我 7 个月前的 answers 有点难对付。特别是使用 Unoconv 的那个(现在已弃用并更改为 Unoserv)。

初始代码示例:

import os
import shutil

src = ".../srcpaths"
dst = ".../dstpaths"
ext = ['ppt', 'pptx', 'doc', 'docx']

for root, subfolders, filenames in os.walk(src):
    for filename in filenames:
        if os.path.splitext(filename)[1] in ext:
            shutil.copy2(os.path.join(root, filename), os.path.join(dst, filename))            
        
def ConvertToPDF(ext):
    #some code#

ConvertToPDF('.ppt')
ConvertToPDF('.pptx')
ConvertToPDF('.doc')
ConvertToPDF('.docx')

以下是我对解决方案的回顾和最后的回答:

1.潘多克:

  • 需要 pdf 乳胶处理器
  • 没有很好地保留文件的形状
  • 格式丢失
  • 图形问题
  • 图表问题
  • 字体问题
  • 格式选择不足

2。 Unoconv/Unoserver

  • 难以安装和处理
  • 需要 Libre Office 作为引擎
  • 良好的转换结果(不完美)

3。 Cloud-based 解决方案:

  • 不免费
  • 不open-source友好
  • 隐私问题

4. Google 驱动器 API 转换器:

  • 使用某人的帐户
  • 上传文档 – 转换 – 另存为 PDF
  • 隐私问题

5. LibreLambda

  • 使用亚马逊网络服务 (AWS)
  • 隐私问题

简单的解决方法:

在cmd子进程中运行直接使用该软件。

需要:安装 LibreOffice。 最大优势:Windows和Linux都可以运行(应该修改为linux)

这是我的 Python 代码 Windows:

import os
import subprocess

# path to the engine
path_to_office = r"C:\Program Files\LibreOffice\program\soffice.exe"

# path with files to convert
source_folder = r"C:\ConvertToPDF\input_files"

# path with pdf files
output_folder = r"C:\ConvertToPDF\output_files"

# changing directory to source
os.chdir(source_folder)

# assign and running the command of converting files through LibreOffice
command = f"\"{path_to_office}\" --convert-to pdf  --outdir \"{output_folder}\" *.*"
subprocess.run(command)

print('Converted')

如果可以修改为Linux,欢迎分享解决方法