import sys
from PyQt5 import QtWidgets, QtPrintSupport, QtGui
class PrintViewer(QtWidgets.QWidget):
def __init__(self, argv):
super(PrintViewer, self).__init__(None)
self.setWindowTitle('PrintViewer')
self.preview_widget = QtPrintSupport.QPrintPreviewWidget(self)
grid = QtWidgets.QGridLayout()
grid.addWidget(self.preview_widget, 0, 0)
self.setLayout(grid)
self.resize(600, 800)
self.document = QtGui.QTextDocument()
inputfile = open(argv[1], 'rt')
self.preview_widget
self.document.setHtml(inputfile.read())
inputfile.close()
self.preview_widget.paintRequested.connect(self.paint_requested)
self.preview_widget.updatePreview()
if len(argv) > 2:
outfile = open(argv[2], 'wt')
outfile.write(self.document.toHtml())
outfile.close()
def paint_requested(self, printer):
self.document.print_(printer)
if __name__ == '__main__':
if len(sys.argv) == 1:
print('Usages: %s <input html file> <optional output html file>' % sys.argv[0])
exit()
app = QtWidgets.QApplication(sys.argv)
window = PrintViewer(sys.argv)
window.show()
sys.exit(app.exec())