Печать MS Word .docx из PyQt GUI - PullRequest
0 голосов
/ 29 марта 2019

Что у меня есть

Я создал графический интерфейс, который заполняет файл 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 для остальных?

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...