எங்களுக்கு தேவையான ஆவண மாற்றத்தைத் தயாரிக்க
பைத்தானில் உள்ள எளிமையான 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 மடங்கு வேகமானது.
ஆதாரம்: www.habr.com