Команда Subprocess в Django работает на localhost, но не работает на vps-сервере openlitespeed
У меня есть следующий код функции в файле views.py моего проекта django: def word_to_pdf_logic(view_func): def wrapper_function(request, *args, **kwargs): if request.method == "POST" and request.FILES.get('word_file'): word_file = request.FILES['word_file']
# Generate unique temporary file name
temp_filename = f"{uuid.uuid4()}.docx"
temp_file_path = os.path.join(settings.MEDIA_ROOT, 'word_to_pdf', temp_filename)
# Save uploaded Word file to temporary location
fs = FileSystemStorage(location=os.path.join(settings.MEDIA_ROOT, 'word_to_pdf'))
temp_file = fs.save(temp_filename, word_file)
word_filename = word_file.name
print(f'word_filename : {word_filename}')
print(f'temp_filename : {temp_filename}')
out_path = os.path.join(settings.MEDIA_ROOT, 'word_to_pdf')
# subprocess.call(['lowriter', '--headless', '--convert-to', 'pdf', '--outdir', out_path, temp_file_path])
subprocess.call(['libreoffice', '--headless', '--convert-to', 'pdf', '--outdir', out_path, temp_file_path])
output_pdf_filename = os.path.splitext(word_filename)[0] + '.pdf'
output_pdf_path = os.path.join(settings.MEDIA_ROOT, 'word_to_pdf', temp_filename.replace(temp_filename.split('.')[1],'pdf'))
print(f'output_pdf_filename : {output_pdf_filename}')
print(f'output_pdf_path : {output_pdf_path}')
if output_pdf_path:
# Serve the PDF file for download
with open(output_pdf_path, 'rb') as pdf_file:
print(f'Pdf_file {pdf_file.name}')
response = HttpResponse(pdf_file.read(), content_type='application/pdf')
response['Content-Disposition'] = f'attachment; filename={os.path.basename(output_pdf_path)}'
return response
else:
return HttpResponse("Error converting file to PDF")
else:
return view_func(request, *args, **kwargs)
return wrapper_function
Код работает нормально на localhost, но подпроцесс не работает на хостинговом VPS openlitespeed server на hostinger (os - Ubuntu 22.04). Команды libreoffice и lowriter работают на vps, если использовать их в терминале для преобразования файлов word (doc/docx) в pdf, но если я использую их через приложение django, то оно выдает ошибку. Тот же код работает на моем ноутбуке (localhost). Я проверил все необходимые библиотеки,
Я потратил более 15 дней, но решение не найдено, Как решить эту проблему? Пожалуйста, помогите мне
Я попробовал все альтернативные варианты команды libreoffice, а также попробовал модули подпроцессов, такие как call, run, popen. Все работает в терминале, но в приложении Django не конвертирует файл Word в PDF & я получаю ошибку File not found, и то же самое работает на localhost через Django. Я также проверяю разрешения папок, путь и т.д.