uWSGI Recipes: Canza Takardu Ta Amfani da LibreOffice

Don shirya canjin daftarin aiki muna buƙata LibreOffice, uwsgi-python, pylokit и yanar gizo. Hakanan zaka iya amfani shirye-shirye. Amma wannan don ƙaddamar da uwar garken uWSGI ne kawai, kuma don haɗawa zuwa uwar garken uWSGI za mu yi amfani da shi nginx.

Mafi sauƙaƙa aikace-aikacen uWSGI a cikin Python ya ƙunshi aikace-aikacen aiki tare da mahallin mahalli guda biyu da 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) # и возвращаем его

Hakanan zaka iya, ba shakka, kuma ƙara sarrafa kuskure.

Mayar da fayil ɗin odt na gwaji mai shafi ɗaya zuwa pdf kusan sau 1,5 cikin sauri idan aka kwatanta da unoconv-api.

source: www.habr.com

Add a comment