将ppt转换为PDF(遇到错误)

时间:2017-08-06 18:35:53

标签: python python-3.x pdf subprocess powerpoint

目标:使用python 3.6.1将ppt转换为pdf

场景:Windows服务器中未安装MS Office

使用的代码:

gfortran

遇到错误:

from subprocess import Popen, PIPE
import time

def convert(src, dst):
    d = {'src': src, 'dst': dst}
    commands = [
        '/usr/bin/docsplit pdf --output %(dst)s %(src)s' % d,
        'oowriter --headless -convert-to pdf:writer_pdf_Export %(dst)s %(src)s' % d,
    ]

    for i in range(len(commands)):
        command = commands[i]
        st = time.time()
        process = Popen(command, stdout=PIPE, stderr=PIPE, shell=True) # I am aware of consequences of using `shell=True` 
        out, err = process.communicate()
        errcode = process.returncode
        if errcode != 0:
            raise Exception(err)
        en = time.time() - st
        print ('Command %s: Completed in %s seconds' % (str(i+1), str(round(en, 2))))

if __name__ == '__main__':
    src = 'C:\xxx\ppt'
    dst = 'C:\xxx\ppt\destination'
    convert(src, dst)

有谁知道如何解决此错误? 或者在这种情况下有用的任何其他python库。

1 个答案:

答案 0 :(得分:0)

由于您在Windows上运行,因此命令/usr/bin/docsplit pdf --output %(dst)s %(src)s不会转换PPT,因为它似乎适用于Linux。 Popen可能在处理该命令时遇到问题,导致错误。

在Windows上的命令行中将PPT转换为PDF有点难。我认为你最好的选择是to install LibreOffice and run with headless mode。还有a SuperUser question on it提问者最终使用C#interop库,但我认为这需要安装Microsoft Office。

感谢。