uWSGI වට්ටෝරු: LibreOffice භාවිතයෙන් ලේඛන පරිවර්තනය කිරීම

අපට අවශ්ය ලේඛන පරිවර්තනය සකස් කිරීම සඳහා LibreOffice, uwsgi-python, pylokit и webob. ඔබට ද භාවිතා කළ හැකිය සූදානම්. නමුත් මෙය uWSGI සේවාදායකය දියත් කිරීම සඳහා පමණක් වන අතර uWSGI සේවාදායකයට සම්බන්ධ වීමට අපි භාවිතා කරමු nginx.

python හි ඇති සරලම uWSGI යෙදුම පරිසරය සහ 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 ගුණයක වේගවත් වේ. unconv-api.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න