首页 > 解决方案 > 从 PyQt GUI 打印 MS Word .docx

问题描述

我有什么

我构建了一个 GUI,用文本填充 MS Word 文件并保存它。我被要求包含一个可以直接从 GUI 打印输出的功能。仅打印字符串对象时,以下代码按预期工作:

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())

正如预期的那样,这不起作用,因为打印机无法处理它接收到的数据。不幸的是,我在这里发现了一个关于从 GUI 打印 PDF 文件的类似问题,这就是为什么我认为如果没有一些解决方法也可能无法实现我想要实现的目标。

我还在这里找到了关于打印 MS Word 文档的帖子。但是,我不想先将它保存在某个地方以便能够打印它。

我的问题

有没有办法直接从 GUI 打印文档?任何建议如何将文档转换为正确的格式?还是有更好的解决方案作为暂时保存并subprocess用于其余部分?

先感谢您!

标签: pythonpyqtpyqt5

解决方案


推荐阅读