gpt4 book ai didi

qt - PyQt 将多页打印为 PDF 仅获取最后一页

转载 作者:行者123 更新时间:2023-12-01 17:18:55 25 4
gpt4 key购买 nike

我遇到一个问题,我试图将 QWebView/QTextDocument 打印到多页 PDF,但是无论我做什么,我都只能得到带有最后一页的单页 PDF。正如大多数示例所示,我正在使用 Printer.newPage() 命令,但我总是得到相同的结果。这个程序向我展示了这个问题(使用 QTextDocument,QWebView 给出了相同的结果):

from PyQt4.QtGui import QTextDocument, QPrinter, QApplication

import sys
app = QApplication(sys.argv)

doc = QTextDocument()
doc.setHtml('''
<html>
<body>
<h1>Page 1</h1>
</body>
</html>
''')

printer = QPrinter()
printer.setOutputFileName("foo.pdf")
printer.setOutputFormat(QPrinter.PdfFormat)
doc.print_(printer)

doc.setHtml('''
<html>
<body>
<h1>Page 2</h1>
</body>
</html>
''')
printer.newPage()
doc.print_(printer)

print "done!"

我是否犯了一些明显的错误,或者我是否误解了 newPage() 的使用以及在同一打印机上进行多个 print_ 调用的能力?

最佳答案

如果没有事件的 QPainter,则无法调用 QPrinter::newPage()。在您的情况下,它应该返回 False

您可以使用QPainter来解决这个问题:

doc = QTextDocument()
doc.setHtml('''
<html>
<body>
<h1>Page 1</h1>
</body>
</html>
''')

printer = QPrinter()
printer.setOutputFileName("foo.pdf")
printer.setOutputFormat(QPrinter.PdfFormat)
doc.print_(printer)

# Create a QPainter to draw our content
painter = QPainter()
painter.begin( printer )

# Draw the first page removing the pageRect offset due to margins.
doc.drawContents(painter, printer.pageRect().translated( -printer.pageRect().x(), - printer.pageRect().y() ))

doc.setHtml('''
<html>
<body>
<h1>Page 2</h1>
</body>
</html>
''')

# A new page
printer.newPage()

# The second page
doc.drawContents(painter, printer.pageRect().translated( -printer.pageRect().x(), -printer.pageRect().y() ))

# Done.
painter.end()

关于qt - PyQt 将多页打印为 PDF 仅获取最后一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19973956/

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