问题描述
我一直试图找到转换文档的有效方法,例如doc,docx,ppt,pptx到pdf。到目前为止,我已经尝试了docsplit和oowriter
,但两者都采用了>在大小为1.7MB的pptx file上完成作业需要10秒钟。任何人都可以建议我改进方法的更好方法或建议吗?
我尝试过的:
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 = '/path/to/source/file/'
dst = '/path/to/destination/folder/'
convert(src, dst)
输出:
Command 1: Completed in 11.91 seconds
Command 2: Completed in 11.55 seconds
环境:
-
Linux – Ubuntu 12.04
-
Python 2.7.3
更多工具结果:
-
jodconverter耗时11.32秒
最佳解决办法
尝试从你的Python代码调用unoconv,在我的本地机器上花了8秒钟,我不知道它是否足够快你:
time unoconv 15.\ Text-Files.pptx
real 0m8.604s
次佳解决办法
Pandoc是一款出色的工具,能够快速完成您想要的任务。由于您正在使用Popen有效地为该工具发出命令,因此编写该工具的语言并不重要(Pandoc是用Haskell编写的)。
第三种解决办法
不幸的是我没有时间做一个完整的基准测试,但你可能想看看xtopdf,我的Python工具包用于PDF创建。它不会执行您想要的所有转换,并且某些转换具有限制,但它可能有用。 xtopdf链接:
关于xtopdf的在线演示 – 很好地总结了它是什么,它做了什么,平台,功能,用户,用途等:http://slid.es/vasudevram/xtopdf
Bitbucket上的xtopdf:https://bitbucket.org/vasudevram/xtopdf
许多博客文章展示了如何将xtopdf用于各种目的,包括许多显示如何使用它将不同输入格式转换为PDF的博客:http://jugad2.blogspot.com/search/label/xtopdf
HTH,Vasudev Ram