Подтвердить что ты не робот

Эффективный способ преобразования документа в формат PDF

Я пытаюсь найти эффективный способ преобразования документа, например. doc, docx, ppt, pptx to pdf. До сих пор я пробовал docsplit и oowriter, но для выполнения задания на pptx файле оба братa > 10 секунд с размером 1.7MB. Может ли кто-нибудь предложить мне лучший способ или предложения улучшить мой подход?

Что я пробовал:

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

Результат других инструментов:

4b9b3361

Ответ 1

Попробуйте позвонить unoconv из своего кода на Python, это заняло 8 секунд на моем локальном компьютере, я не знаю, достаточно ли вам для вас:

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

Ответ 2

Pandoc - замечательный инструмент, способный быстро делать то, что вам нужно. Поскольку вы используете Popen для эффективной оболочки команды для инструмента, не имеет значения, на каком языке этот инструмент написан (Pandoc написан в Haskell).

Ответ 3

К сожалению, у меня нет времени, чтобы выполнить полный тест, но вы можете проверить xtopdf, мой инструментарий Python для создания PDF. Он не выполняет полный диапазон конверсий, и некоторые из конверсий имеют ограничения, но это может быть полезно. Ссылки xtopdf:

Онлайн-презентация о xtopdf - хорошее описание того, что это такое, что он делает, платформы, функции, пользователи, использование и т.д.: http://slid.es/vasudevram/xtopdf

xtopdf на Bitbucket: https://bitbucket.org/vasudevram/xtopdf

Многие сообщения в блогах, показывающие, как использовать xtopdf для различных целей, в том числе многие, которые показывают, как использовать его для преобразования различных входных форматов в PDF: http://jugad2.blogspot.com/search/label/xtopdf

НТН, Васудев Рам

Ответ 4

Для doc и docx (но не ppt/pptx) вы можете попробовать наш независимый (но коммерческий) механизм рендеринга высокой точности в OnlineDemo/docx_to_pdf

Под "высокой точностью" я подразумеваю, что он разработан с нуля, чтобы иметь разрывы строк и абзацев, табуляции и т.д. и т.д. и т.д., как Microsoft Word.