Как конвертировать файлы из docx в pdf на python
Никак не могу найти подходящее решение по конвертированию из docx в pdf. Проблема в том, что я это делаю на хостинге, где у меня нет возможности дать команду sudo и установить какие-то приложения. Поэтому получается что я могу пользоваться только пакетами python.
Пробовал настроить doc2pdf, но на хочет чтобы я поставил LibreOffice, чего я сделать не могу.
Пробовал aspose-words, но она требует OpenSSL который я тоже не могу установить.
Пробовал spare.doc, все отлично но огромная надпись на каждой странице что версия не оплаченная. Я бы и рад оплатить, но вообще не пойму как. Тем более это зарубежная компания, они все деньги из РФ не принимают.
Пробовал найти какой-нибудь сервис для конвертации чтобы отправить файл по api и конвертировать. Но тоже находятся только буржуйские, которым непонятно как деньги оплатить.
Понятно, что можно купить выделеный сервер чтобы там ставить что захочется, но моих познаний не хватает чтобы полноценно развернуть сервер с нуля. Тем более что вопрос-то в общем-то мелкий...
Подскажите, какой может быть вариант решения?
Я протестировал модуль docx2pdf. Хотите правильный результат? Установите современный MS Office 2024, если не хотите иметь постоянные сюрпризы с конвертацией. Какие-то левые устаревшие офисы, всякие там либре-офисы, неизвестно какие - в сад. Не иначе! Для работы со сложным современным документом модуль требует наличия современного MS Office. Я только что конвертировал достаточно сложный файл справки, с оглавлением, картинками, разбиением на страницы. Результат: один к одному, ни одной ошибки. Вот скриптик:
import os
print("-" * 50 + "\nКонвертация .docx в .pdf:\n" + "-" * 50)
ok = True
try: import docx2pdf
except Exception as e: print(f"Ошибка импорта модуля! Подробнее:\n{e}"); ok = False
if ok:
input_file = "help.docx"
output_file = "help.pdf"
if not os.path.exists(input_file): print(f"Файл {input_file} не найден! Выполнение конвертации невозможно!")
else: docx2pdf.convert(input_file, output_file)
print("Нажмите любую клавишу для продолжения...")
os.system("pause > nul" if os.name == "nt" else "read > /dev/null")
И другой вариант решения - макрос для выполнения в Microsoft Word. В заданный каталог складываются файлы .docx, которые нужно конвертировать в .pdf. Запускается макрос и всё конвертируется, файлы .pdf образуются в этом же каталоге. Результат ожидаемо отличный. Код макроса:
Sub ConvertDocsToPDF()
Dim folderPath As String
Dim fileName As String
Dim doc As Document
folderPath = "d:\downloads\"
fileName = Dir(folderPath & "*.docx")
If fileName = "" Then
MsgBox "В каталоге нет файлов .docx для конвертации!", vbExclamation
Exit Sub
End If
Do While fileName <> ""
Set doc = Documents.Open(folderPath & fileName, ReadOnly:=True, Visible:=False)
doc.SaveAs2 folderPath & Replace(fileName, ".docx", ".pdf"), wdFormatPDF
doc.Close False
fileName = Dir()
Loop
MsgBox "Все документы конвертированы в PDF!", vbInformation
End Sub