2017-08-06 2 views
0

Objectif: Conversion ppt en pdf en utilisant python 3.6.1convertir ppt en PDF (erreur rencontrée)

Scénario: MS Office est pas installé dans Windows Server

code utilisé:

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) 

Erreur rencontrée:

Traceback (most recent call last): 
    File "C:/PythonFolder/ppt_to_pdf.py", line 134, in <module> 
    convert(src, dst) 
    File "C:/PythonFolder/ppt_to_pdf.py", line 123, in convert 
    process = Popen(command, stdout=PIPE, stderr=PIPE, shell=True) # I am aware of consequences of using `shell=True` 
    File "C:\Python 3.6.1\lib\subprocess.py", line 707, in __init__ 
    restore_signals, start_new_session) 
    File "C:\Python 3.6.1\lib\subprocess.py", line 990, in _execute_child 
    startupinfo) 
ValueError: embedded null character 

Est-ce que quelqu'un sait comment corriger cette erreur? Ou toute autre bibliothèque python qui aidera dans ce cas.

+0

Courez-vous sur Windows ou Linux? – identicon

+0

Si vous utilisez Windows, je ne pense pas que la commande '/ usr/bin/docsplit pdf --output% (dst) s% (src) s' convertira le PPT, car il semble que ce soit pour Linux. Popen pourrait avoir du mal à gérer cette commande, provoquant cette erreur. – identicon

+0

Je cours sur windows. Si c'est le cas, y a-t-il une solution? – grc

Répondre

0

Puisque vous utilisez Windows, la commande /usr/bin/docsplit pdf --output %(dst)s %(src)s ne convertira pas le PPT, car il semble que ce soit pour Linux. Popen peut avoir du mal à gérer cette commande, provoquant l'erreur.

La conversion d'un fichier PPT en fichier PDF dans la ligne de commande sous Windows est assez difficile. Je pense que votre meilleur pari est to install LibreOffice and run with headless mode. Il y a aussi a SuperUser question on it où le demandeur finit par utiliser des bibliothèques interopérables C#, mais je pense que Microsoft Office doit être installé.

Merci.