gpt4 book ai didi

python - 如何在 PyQt5 中将 HTML 页面保存为 PDF

转载 作者:太空宇宙 更新时间:2023-11-04 15:52:54 24 4
gpt4 key购买 nike

我正在尝试使用 PyQt5 将一些简单的 html 保存到 pdf 文档中。网页正确呈现,使用 show() 命令我可以获得一个显示有问题的 Web 内容的窗口,但是尝试将其打印为 pdf 只会导致空白 pdf。

这是在 python 3.6 上,在发布这个问题时我有当前的 PyQt5 版本。 (Windows 10、64 位)

在 stackoverflow 上已经有很多老问题了,但我发现其中大部分使用的函数已经不存在了。

有问题的代码如下:

from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineSettings
from PyQt5 import QtWidgets
from PyQt5.QtPrintSupport import QPrinter
from PyQt5 import QtCore
[...]
app = QtWidgets.QApplication(sys.argv)
QWebEngineSettings.globalSettings().setAttribute(QWebEngineSettings.PluginsEnabled, True)
QWebEngineSettings.globalSettings().setAttribute(QWebEngineSettings.ScreenCaptureEnabled, True)
loader = QWebEngineView()
#loader.setAttribute(QtCore.Qt.WA_DontShowOnScreen, True)
loader.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)
loader.setZoomFactor(1)
loader.setHtml(webpage)


printer = QPrinter()
printer.setPageSize(QPrinter.A4)
printer.setOutputFormat(QPrinter.PdfFormat)
printer.setOutputFileName("test.pdf")
printer.setOrientation(QPrinter.Portrait)
printer.setFullPage(True)

def emit_pdf(finished):
loader.show()
loader.render(printer)
if self.open_on_complete:
import webbrowser
webbrowser.open("test.pdf")

#app.exit()
loader.loadFinished.connect(emit_pdf)

app.exec()

最佳答案

在Qt5中不需要使用use QPrinter,因为QWebEnginePage有一个专用的printToPdf方法:

import sys
from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets

app = QtWidgets.QApplication(sys.argv)
loader = QtWebEngineWidgets.QWebEngineView()
loader.setZoomFactor(1)
loader.page().pdfPrintingFinished.connect(
lambda *args: print('finished:', args))
loader.load(QtCore.QUrl('https://en.wikipedia.org/wiki/Main_Page'))

def emit_pdf(finished):
loader.show()
loader.page().printToPdf("test.pdf")

loader.loadFinished.connect(emit_pdf)

app.exec()

还有一个 print将呈现给打印机的方法,如果你真的想要的话。

关于python - 如何在 PyQt5 中将 HTML 页面保存为 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48454086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com