Skip to content

Instantly share code, notes, and snippets.

@gciotta
Created December 3, 2013 09:57
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gciotta/7766803 to your computer and use it in GitHub Desktop.
Save gciotta/7766803 to your computer and use it in GitHub Desktop.
QT5 WebView to PDF printer
#!/usr/bin/env python3
import os
import sys
import argparse
from PyQt5.QtCore import QUrl
from PyQt5.QtPrintSupport import QPrinter
from PyQt5.QtWebKitWidgets import QWebView
from PyQt5.QtWidgets import QApplication
class PrinterView(QWebView):
def __init__(self, url, filename, do_preview, parent=None):
super(PrinterView, self).__init__(parent)
self.do_preview = do_preview
self.setUrl(QUrl(url))
self.setZoomFactor(1)
self.printer = QPrinter(QPrinter.HighResolution)
self.printer.setOutputFileName(filename)
self.printer.setOutputFormat(QPrinter.PdfFormat)
self.printer.setOrientation(QPrinter.Portrait)
self.printer.setPaperSize(QPrinter.A4)
self.printer.setFullPage(True)
self.loadFinished.connect(self.onloadFinished)
def onloadFinished(self):
if self.do_preview:
self.show()
else:
self.print_(self.printer)
QApplication.exit(os.EX_OK)
if __name__ == '__main__':
app = QApplication(sys.argv)
parser = argparse.ArgumentParser()
parser.add_argument("--url", "-i", help="Input URL (http://example.com, file:///home/user/example.html, ...)", required=True)
parser.add_argument("--output", "-o", help="Write pdf to this file", required=True)
parser.add_argument("--preview", "-p", help="Open preview", action="store_true")
args = parser.parse_args()
a = PrinterView(args.url, args.output, args.preview)
sys.exit(app.exec_())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment