22

doc、docx、ppt、pptx などのドキュメントを pdf に変換する効率的な方法を見つけようとしています。これまでのところ、 docsplitとを試しましたが、どちらもサイズが 1.7MBのpptx ファイルoowriterのジョブを完了するのに 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
  • パイソン 2.7.3

その他のツールの結果:

4

4 に答える 4

18

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

time unoconv 15.\ Text-Files.pptx
real    0m8.604s
于 2014-01-06T12:42:25.953 に答える
3

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

于 2014-01-09T16:26:24.717 に答える
2

残念ながら、完全なベンチマークを実行する時間はありませんが、PDF 作成用の Python ツールキットである xtopdf をチェックしてみてください。必要なすべての変換を行うわけではなく、一部の変換には制限がありますが、役立つ場合があります。xtopdf リンク:

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

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

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

HTH、ヴァスデフ・ラム

于 2014-01-07T18:01:42.507 に答える
-1

doc および docx (ただし、ppt/pptx は除く) については、 OnlineDemo/docx_to_pdfで、当社の独立した (ただし商用の) 高忠実度レンダリング エンジンをオンラインで試すことができます。

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

于 2015-02-14T20:59:25.063 に答える