وصفات UWSGI: تحويل المستندات باستخدام LibreOffice

لإعداد عملية تحويل المستندات ، نحتاج إلى LibreOffice و uwsgi-python و pylokit و webob . يمكنك أيضًا استخدام صورة جاهزة . ولكن هذا فقط لبدء تشغيل خادم uWSGI ، وسوف نستخدم nginx للاتصال بخادم uWSGI .



يتكون أبسط تطبيق uWSGI python من وظيفة تطبيق ذات وسيطين ، البيئة و 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 .



All Articles