web-dev-qa-db-ja.com

ドキュメントをPDF形式に変換する効率的な方法

私はドキュメントを変換する効率的な方法を見つけようとしています。 doc、docx、ppt、pptxからpdf。これまでに docsplitoowriterを試しましたが、サイズ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

より多くのツールの結果:

20
Aamir Adnan

Pythonコードから noconv を呼び出してみてください。ローカルマシンでは8秒かかりました。十分に高速かどうかはわかりません:

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

Pandoc は、やりたいことをすばやく実行できるすばらしいツールです。 Popenを使用してツールのコマンドを効果的にシェルアウトしているので、ツールがどの言語で書かれているかは問題ではありません(PandocはHaskellで書かれています)。

3
jeffknupp

残念ながら、完全なベンチマークを実行する時間はありませんが、xtopdfをチェックすることをお勧めします。私のPython作成用ツールキットPDF作成です。希望するすべての変換を行うわけではなく、一部の変換には制限がありますが、それが役立つ場合があります。xtopdfリンク:

Xtopdfに関するオンラインプレゼンテーション-それが何であるか、何をするか、プラットフォーム、機能、ユーザー、使用法などの良い要約: http://slid.es/vasudevram/xtopdf

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

Xtopdfをさまざまな目的で使用する方法を示す多くのブログ投稿。xtopdfを使用してさまざまな入力形式をPDFに変換する方法を示すものも含まれます。 http://jugad2.blogspot.com/search/label/xtopdf

HTH、Vasudev Ram

2
Vasudev Ram

Docおよびdocx(ppt/pptxではない)の場合、独立した(ただし商用の)高忠実度レンダリングエンジンをオンラインで試すことができます OnlineDemo/docx_to_pdf

「高忠実度」とは、Microsoft Wordと同じ行と段落の区切り、タブストップなどを持つようにゼロから設計されていることを意味します。

0
JasonPlutext