# coding:utf-8 # @文件: report_html2pdf.py # @创建者:州的先生 # #日期:2020/12/27 # 博客地址:zmister.com import sys from urllib.parse import quote from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets, QtGui # print(sys.path) def html2pdf(html_path,pdf_path): html_path = '/'.join(html_path.split('\\')) html_path = quote(html_path, safe='/:?=') # 实例化一个Qt应用 app = QtWidgets.QApplication(sys.argv) # 实例化一个WebEngineView loader = QtWebEngineWidgets.QWebEngineView() # 设置视图缩放比例 loader.setZoomFactor(1) # 设置页码打印完成后的槽 loader.page().pdfPrintingFinished.connect(loader.close) # 请求HTML文件 loader.load(QtCore.QUrl("file:///{}".format(html_path))) def emit_pdf(finished): layout = QtGui.QPageLayout() layout.setPageSize(QtGui.QPageSize(QtGui.QPageSize.A4Extra)) layout.setLeftMargin(20) layout.setRightMargin(20) layout.setTopMargin(20) layout.setBottomMargin(20) layout.setOrientation(QtGui.QPageLayout.Portrait) loader.page().printToPdf(pdf_path, pageLayout=layout) # 加载完成后连接到PDF打印方法 loader.loadFinished.connect(emit_pdf) app.exec_() if __name__ == '__main__': # print(sys.argv) html_path, pdf_path = sys.argv[1],sys.argv[2] html2pdf(html_path=html_path,pdf_path=pdf_path)