【发布时间】:2020-06-10 14:29:50
【问题描述】:
我想将pdf 文档打印到打印机。到目前为止,我有这个代码。
def printDialog(self):
filePath, filter = QFileDialog.getOpenFileName(self, 'Open file', '', 'Text (*.txt);;PDF (*.pdf)')
if not filePath:
return
file_extension = os.path.splitext(filePath)[1]
if file_extension == ".txt":
doc = QtGui.QTextDocument()
try:
with open(filePath, 'r') as txtFile:
doc.setPlainText(txtFile.read())
printer = QPrinter(QPrinter.HighResolution)
if not QPrintDialog(printer, self).exec_():
return
doc.print_(printer)
except Exception as e:
print('Error trying to print: {}'.format(e))
elif file_extension == ".pdf":
printer = QPrintDialog(QPrinter.HighResolution)
printer.setOutputFormat(QPrinter.PdfFormat)
printer.setOutputFileName(filePath)
# TODO
else:
pass
我不知道如何继续TODO 部分。
【问题讨论】:
-
您是否尝试过使用 QWebEnginePage,正如我已经告诉过您的那样两次?
-
@musicamante 不,我现在不知道该怎么做。
-
@musicamante 我可以用它打印特定目录中的所有文档(选择多个文档)吗?并观察印刷进度?例如显示带有“printing doc1”、“printing doc2”等的消息框?
-
在您上一个问题的答案中,我链接到 this 其他解释如何加载和打印 html 内容的答案。正如我告诉你的,只需使用
setUrl()。多次打印的答案是肯定的,但只能在你了解如何打印 pdf 文件后,在另一个问题中解决。 -
@musicamante 一开始我尝试了 index.html,但我收到了错误
self._page.print(self._printer, self.print_completed) AttributeError: 'Window' object has no attribute 'print_completed'。我正在发送带有代码的 pastebin,如果您可以查看它pastebin.com/x582VjRe
标签: python python-3.x windows printing pyqt5