【发布时间】:2018-11-09 10:53:08
【问题描述】:
我想使用 Python 将一些 html 文件转换为 PDF。 在查看了执行此操作的模块和可能性之后,我选择了 Qt5。
我有可以工作的代码,但它并不能完全按照我想要的方式工作。 我想通过命令行运行我的程序,并在完成后退出。 目前,它生成 PDF 但仍在运行。
如果我取消注释并使用 view.show() 显示 QWebEngineView,那么我可以关闭打开的窗口,程序将退出。 (但我不想有任何 GUI,所以这不好)
接下来,我尝试显示视图,然后在使用 view.close() 之后立即将其关闭,但是当我这样做时,不会生成 PDF。我尝试在 view.show() 之后和 view.close() 之前添加 5 秒睡眠,但结果仍然相同。
我不确定我想要的是否可行,我知道 Qt 是用于 GUI 的,但如果我可以通过命令行完全实现它会非常方便。
import sys
import os
from time import sleep
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QDir, QUrl
# needed to load local html files
sys.argv.append("--disable-web-security")
app = QApplication(sys.argv)
raw_html = ""
with open('webpage.htm', 'r') as myfile:
raw_html = myfile.read()
view = QWebEngineView()
view.setHtml(raw_html)
def save_pdf(finished):
view.page().printToPdf("output.pdf")
# view.show()
# view.close()
view.loadFinished.connect(save_pdf)
sys.exit(app.exec_())
【问题讨论】:
-
你的 pyqt 版本是多少?