将文档转换为pdf格式的有效方法

时间:2014-01-02 21:00:44

标签: python pdf ubuntu document-conversion docsplit

我一直试图找到转换文档的有效方法,例如doc,docx,ppt,pptx到pdf。到目前为止,我已尝试docsplitoowriter,但两者都采用了>在pptx file上完成大小为1.7MB的作业需要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

更多工具结果:

4 个答案:

答案 0 :(得分:18)

尝试从Python代码中调用unoconv,在本地计算机上花了8秒钟,我不知道它对你来说是否足够快:

time unoconv 15.\ Text-Files.pptx
real    0m8.604s

答案 1 :(得分:3)

Pandoc是一个很棒的工具,能够快速完成你想做的事情。由于您正在使用Popen有效地为该工具发出命令,因此编写该工具的语言无关紧要(Pandoc是用Haskell编写的)。

答案 2 :(得分:2)

不幸的是我没有时间做一个完整的基准测试,但你可能想看一下xtopdf,这是我用于创建PDF的Python工具包。它不会执行您想要的所有转换,并且某些转换具有限制,但它可能有用。 xtopdf链接:

关于xtopdf的在线演示 - 很好地总结了它是什么,它做了什么,平台,功能,用户,用途等。http://slid.es/vasudevram/xtopdf

Bitbucket上的

xtopdf:https://bitbucket.org/vasudevram/xtopdf

许多博客文章展示了如何将xtopdf用于各种目的,包括许多展示如何使用它将不同输入格式转换为PDF的博客:http://jugad2.blogspot.com/search/label/xtopdf

HTH, 瓦苏德夫·拉姆

答案 3 :(得分:0)

对于doc和docx(但不是ppt / pptx),您可以在OnlineDemo/docx_to_pdf

在线尝试我们的独立(但商业)高保真渲染引擎

“高保真度”,我的意思是它是从头开始设计的,具有与Microsoft Word相同的行和段落,制表符等等。