QPrinter不会打印多次

时间:2012-07-20 16:32:04

标签: python pyqt qtwebkit

在我的应用程序中,我有一种方法供用户将报表转换为PDF文档。这完美 - 一次。如果用户再次单击该按钮,则转换会挂起。

这是我的代码:

def print_report(self):
        web = QtWebKit.QWebView()
        filename = "reporttemplate.html"
        file = open(filename,'r')
        html = file.read()
        file.close()

        web.setHtml(html)
        #web.show()

        printer = QtGui.QPrinter()
        printer.setPageSize(QtGui.QPrinter.Letter)
        printer.setOutputFormat(QtGui.QPrinter.PdfFormat)

        # ---- BROKEN ----
        # This next line is where it hangs on the second call to this function.
        # The first time it works, and generates the PDF as expected.
        # ---- BROKEN ON THE NEXT LINE! ----
        printer.setOutputFileName(r'C:\path\to\report\directory\file.pdf')

        def convertIt():
            web.print_(printer)
            print "Pdf generated"
            web.close()

        QtCore.QObject.connect(web, QtCore.SIGNAL("loadFinished(bool)"), convertIt)

我的想法是打印机仍然打开文件。如果是这种情况,我该如何关闭文件?

如果我重新启动应用程序并且该文件已存在,则它可以正常工作。出于这个原因,我不相信它挂起,因为该文件已经存在。

1 个答案:

答案 0 :(得分:1)

测试你的代码我注意到对我来说只有当我在web.setHtml(html)方法的最后(最后一个语句)放置print_report时它才有效。这样做我能够按照我想要的次数生成file.pdf。