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

2024-03-28 17:05:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在试图找到有效的方法来将文档(如doc、docx、ppt、pptx)转换为pdf。到目前为止,我已经尝试过docsplitoowriter,但都花了>;10秒完成了大小为1.7MB的pptx file上的任务。有人能给我提个更好的方法或建议来改进我的方法吗?

我试过的:

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版
  • Python2.7.3

更多工具结果:


Tags: to方法insrcconvertpdftimeprocess
3条回答

试着从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

位桶上的xtopdf:https://bitbucket.org/vasudevram/xtopdf

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

HTH公司, 瓦苏德夫公羊

相关问题 更多 >