def word_to_pdf_logic(view_func):
def wrapper_function(request, *args, **kwargs):
if request.method == "POST" и 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
команды libreoffice и lowriter работают как на vps если использовать терминал для преобразования файла Word (doc/docx) в PDF. Но если я использую его через приложение django, это выдает ошибку. Тот же код работает на моем ноутбуке (локальный хост). Я проверил всю необходимую библиотеку,
Я потратил более 15 дней, но решение не найдено. Как решить проблему? Пожалуйста, помогите мне
Я попробовал все альтернативы команды libreoffice, а также попробовал модули подпроцесса, такие как вызов, запуск, popen. Все работают в терминале, но в приложении Django он не конвертирует файл Word в PDF, и я получаю сообщение об ошибке «Файл не найден», и то же самое работает на локальном хосте через Django. Я также проверяю права доступа к папкам, путь и т. д.
Подробнее здесь: https://stackoverflow.com/questions/785 ... espeed-vps