Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt:QWebView.print(QPrinter())提供空白PDF文件_Python_Pdf_Pyqt_Qwebview - Fatal编程技术网

Python PyQt:QWebView.print(QPrinter())提供空白PDF文件

Python PyQt:QWebView.print(QPrinter())提供空白PDF文件,python,pdf,pyqt,qwebview,Python,Pdf,Pyqt,Qwebview,大家好 在我开发的工具中,我需要一个生成简单PDF文档的功能。没什么特别的。顶部有2张png图片,一点文字和下表。 我发现最简单的方法是创建HTML文件,然后使用PyQt4将其打印为PDF。不幸的是,我的代码中有些地方出了问题 代码中的更多内容 import sys from PyQt4.QtCore import * from PyQt4.QtGui import * from PyQt4.QtWebKit import * web = QWebView() web.load(QUrl(r'

大家好

在我开发的工具中,我需要一个生成简单PDF文档的功能。没什么特别的。顶部有2张png图片,一点文字和下表。 我发现最简单的方法是创建HTML文件,然后使用PyQt4将其打印为PDF。不幸的是,我的代码中有些地方出了问题

代码中的更多内容

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *

web = QWebView()
web.load(QUrl(r'file:///H:/.../table.htm'))
web.show() ### HERE IT WORKS! - IT SHOWS MY HTML FILE CORRECTLY

printer = QPrinter()
printer.setPageSize(QPrinter.A4)
printer.setOutputFormat(QPrinter.PdfFormat)
printer.setOutputFileName(r"H:\...\file.pdf")

web.print_(printer) ### HERE IS THE PROBLEM. PDF FILE IS CREATED INDEED.
                    ### IT SEEMS TO BE A4, BUT COMPLETLY EMPTY. :-/
创建的PDF文件如下所示-

如果有人知道解决办法,我会非常感激的

那好吧


Janek

如果您只需要从HTML生成PDF,请查看。你可以在一行中完成,而不需要所有PyQt的东西。我很想使用它,但是你能告诉我如果我只为更大的软件构建一个插件,该怎么做吗。我想使用weasyprint库,但不想强制用户安装它。我是否可以将其复制到插件和导入模块的目录中?应该可以将所有内容打包,但您需要跟踪所有必需的依赖项,记住其中一些依赖项是特定于平台的。如果您不想担心外部依赖性,您的PyQt方法可能会更好。您可能应该使用loadFinished()来确保web视图在呈现给QPrinter之前已经实际加载了内容。看,西蒙,你是对的。我从那个链接复制了解决方案,它成功了。它需要为QWebView创建一个类,但这是可行的。:-)如果您只需要从HTML生成PDF,请查看。你可以在一行中完成,而不需要所有PyQt的东西。我很想使用它,但是你能告诉我如果我只为更大的软件构建一个插件,该怎么做吗。我想使用weasyprint库,但不想强制用户安装它。我是否可以将其复制到插件和导入模块的目录中?应该可以将所有内容打包,但您需要跟踪所有必需的依赖项,记住其中一些依赖项是特定于平台的。如果您不想担心外部依赖性,您的PyQt方法可能会更好。您可能应该使用loadFinished()来确保web视图在呈现给QPrinter之前已经实际加载了内容。看,西蒙,你是对的。我从那个链接复制了解决方案,它成功了。它需要为QWebView创建一个类,但这是可行的。:-)