Русский
Русский
English
Статистика
Реклама

Рецепты uWSGI преобразование документов с использованием LibreOffice

Для приготовления преобразования документов нам понадобится LibreOffice, uwsgi-python, pylokit и webob. Можно также воспользоваться готовым образом. Но это только для запуска uWSGI-сервера, а для подключения к uWSGI-серверу будем использовать nginx.

Самое простое uWSGI-приложение на python состоит из функции application с двумя аргументами environ и start_response
import os       # импортируемimport pylokit  # необходимыеimport tempfile # намimport webob    # модулиoffice = pylokit.Office('/usr/lib/libreoffice/program') # загружаем библиотеку LibreOffice по указанному путиdef application(environ, start_response): # функция для uWSGI    request = webob.Request(environ) # получаем запрос из окружения    file = request.POST['file'] # файл для преобразования передаётся через multipart/form-data с именем file    filename, extension = os.path.splitext(file.filename) # получаем имя и расширение    with tempfile.NamedTemporaryFile(suffix=extension) as inp, tempfile.NamedTemporaryFile(suffix='.%s' % request.path.split('/')[-1]) as out: # создаём один временный файл с расширением переданного файла и другой временный файл с расширением из окончания запроса (для совместимости с unoconv-api)        inp.write(file.file.read()) # записываем содержимое переданного файла в первый временный файл        inp.flush() # (т.к. LibreOfficeKit почему-то работает только с файлами)        with office.documentLoad(inp.name) as doc: # загружаем переданный файл             doc.saveAs(out.name) # экспортируем загруженный файл в другой временный файл (формат берётся из расширения)            with open(out.name, 'rb') as out2: # открываем другой временный файл                response = webob.Response(body=out2.read()) # создаём результат из чтения другого временного файла                return response(environ, start_response) # и возвращаем его


Можно, конечно, ещё добавить обработку всяких ошибок.

Преобразование тестового одностраничного odt-файла в pdf делается примерно в 1,5 раза быстрее по сравнению с unoconv-api.
Источник: habr.com
К списку статей
Опубликовано: 07.08.2020 14:13:35
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Python

Nginx

Uwsgi

Libreoffice

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru