import sys
import os
import functools
from PyQt4 import QtCore, QtGui, QtWebKit

def onLoadFinished(webpage):
  try:
    printer = QtGui.QPrinter()
    printer.setOutputFileName("test.pdf")
    printer.setColorMode(QtGui.QPrinter.Color)
    webpage.mainFrame().print_(printer)
  except:
    exc_type, exc_value,exc_tb = sys.exc_info()[:3]
    sys.stderr.write(str(exc_type)+'\n')
    sys.stderr.write(str(exc_value)+'\n')
    import traceback
    traceback.print_tb(exc_tb)
    sys.exit(-1)

  print "exit program"; sys.stdout.flush()
  sys.exit(0)

try:
  app = QtGui.QApplication(sys.argv)
  webpage = QtWebKit.QWebPage()
  url = QtCore.QUrl.fromLocalFile(os.path.abspath(os.path.normpath(sys.argv[1])))
  webpage.connect(webpage, QtCore.SIGNAL("loadFinished(bool)"), functools.partial(onLoadFinished,webpage))
  webpage.mainFrame().load(url)
except:
  exc_type, exc_value,exc_tb = sys.exc_info()[:3]
  sys.stderr.write(str(exc_type)+'\n')
  sys.stderr.write(str(exc_value)+'\n')
  import traceback
  traceback.print_tb(exc_tb)
  sys.exit(-1)

sys.exit(app.exec_())
