Эффективный способ конвертировать документ в формат 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
Результат больше инструментов:
- джодконвертер занял 11,32 секунды
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.