Për të përgatitur transformimin e dokumenteve, do të na nevojiten , , dhe . Mund të përdorni gjithashtu . Por kjo është vetëm për të nisur serverin uWSGI, dhe për t'u lidhur me serverin uWSGI do të përdorim .
Aplikacioni më i thjeshtë uWSGI në python përbëhet nga funksioni application me dy argumente environ dhe start_response
import os # importojmë
import pylokit # nevojitet
import tempfile # na nevojitet
import webob # modulet
office = pylokit.Office('/usr/lib/libreoffice/program') # ngarkojmë bibliotekën LibreOffice në rrugën e dhënë
def application(environ, start_response): # funksioni për uWSGI
request = webob.Request(environ) # marrim kërkesën nga ambienti
file = request.POST['file'] # skedari për transformim dërgohet përmes multipart/form-data me emrin file
filename, extension = os.path.splitext(file.filename) # marrim emrin dhe zgjerimin
me tempfile.NamedTemporaryFile(suffix=extension) si inp, tempfile.NamedTemporaryFile(suffix='.%s' % request.path.split('/')[-1]) si out: # krijojmë një skedar të përkohshëm me zgjerimin e skedarit të dërguar dhe një tjetër skedar të përkohshëm me zgjerimin nga fundi i kërkesës (për kompatibilitet me unoconv-api)
inp.write(file.file.read()) # shkruajmë përmbajtjen e skedarit të dërguar në skedarin e parë të përkohshëm
inp.flush() # (sepse LibreOfficeKit ndonjëherë funksionon vetëm me skedarë)
me office.documentLoad(inp.name) si doc: # ngarkojmë skedarin e dërguar
doc.saveAs(out.name) # eksportojmë skedarin e ngarkuar në një tjetër skedar të përkohshëm (formati merret nga zgjerimi)
me open(out.name, 'rb') si out2: # hapim skedarin tjetër të përkohshëm
response = webob.Response(body=out2.read()) # krijojmë rezultatin nga leximi i skedarit tjetër të përkohshëm
return response(environ, start_response) # dhe e kthejmë atë
Natyrisht, mund të shtojmë përpunimin e disa gabimeve.
Transformimi i një skedari odt testues me një faqe në pdf bëhet rreth 1.5 herë më shpejt se .
Burimi: habr.com
