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

Я пытался найти эффективный способ конвертировать документ, например, DOC, DOCX, PPT, PPTX в PDF. До сих пор я пробовал доксплит и oowriter, но оба заняли> 10 секунд, чтобы завершить работу над файлом pptx размером 1,7 МБ. Может кто-нибудь предложить мне лучший способ или предложения по улучшению моего подхода?

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

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 ответа

Решение

Попробуйте вызвать unoconv из вашего кода Python, на моем локальном компьютере это заняло 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 на Bitbucket: https://bitbucket.org/vasudevram/xtopdf

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

HTH, Васудев Рам

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

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

Другие вопросы по тегам