Что у меня есть
Я создал графический интерфейс, который заполняет файл MS Word текстом и сохраняет его. Меня попросили включить функцию, которая позволяет напрямую печатать вывод из графического интерфейса.
При печати только строкового объекта следующий код работает как задумано:
from PyQt5.QtWidgets import QTextEdit
from PyQt5.QtPrintSupport import *
def func_print_short(obj_str):
print_content = QTextEdit()
print_content.setText(obj_str)
dlg_print = QPrintDialog()
if dlg_print.exec_() == QDialog.Accepted:
print_content.document().print_(dlg_print.printer())
Чего я пытаюсь достичь
Пытаясь использовать ту же процедуру с файлом MS Word, я получил следующий фрагмент кода, не имея возможности выяснить, как правильно отправить документ на принтер.
import docx
def send_to_printer(doc):
# -- datatype conversions --
print_content = doc
dlg_print = QPrintDialog()
if dlg_print.exec_() == QDialog.Accepted:
print_content.document().print_(dlg_print.printer())
Как и ожидалось, это не работает, так как принтер не может обрабатывать данные, которые он получает. К сожалению, я нашел похожий вопрос при печати файла PDF из графического интерфейса здесь , поэтому я полагаю, что то, чего я хочу достичь, может быть невозможным без некоторого обходного пути.
Я также нашел сообщение о печати документов MS Word здесь . Однако я не хочу сначала сохранять его где-либо, чтобы можно было его распечатать.
Мои вопросы
Есть ли способ распечатать документ прямо из графического интерфейса? Любые предложения, как преобразовать документ в правильный формат? Или есть лучшее решение - временно сохранить его и использовать subprocess
для остальных?
Заранее спасибо!