【发布时间】:2021-10-17 22:05:41
【问题描述】:
在另一个问题中,我了解到QTextDocument 和was told,您可以在 PDF 的同一页面上使用 QPainter 和 QTextDocument。但是,当我尝试这样做时,他们都重新启动了文档,清除了对方的内容。
from PySide6.QtGui import QPdfWriter, QPainter, QPageSize, QTextDocument, Qt
from PySide6.QtWidgets import QApplication
def main():
app = QApplication()
pdf = QPdfWriter('example.pdf')
pdf.setPageSize(QPageSize.Letter)
# Whichever of these goes second, overwrites the first.
draw_diagram(pdf)
print_document(pdf)
app.exit(0)
def draw_diagram(pdf: QPdfWriter):
painter = QPainter(pdf)
painter.drawArc(painter.window().width()//4,
painter.window().height()//2 - painter.window().width()//4,
painter.window().width()//2,
painter.window().width()//2,
0,
5760)
painter.drawText(0,
painter.window().height()//2,
painter.window().width(),
painter.window().height()//10,
Qt.AlignHCenter | Qt.AlignTop,
'https://donkirkby.github.io')
print(pdf.newPage())
painter.drawText(painter.window().width()//2,
painter.window().height()//2,
'Bar')
print(pdf.newPage())
painter.end()
def print_document(pdf: QPdfWriter):
html = "<a href='https://donkirkby.github.io'>donkirkby.github.io</a>"
document = QTextDocument()
document.setHtml(html)
document.print_(pdf)
main()
理想情况下,我希望文本和绘图在同一页面上,但此代码试图将它们分开,以免它们相互覆盖。这两种方法都不起作用。
如何将绘图与文本文档结合起来? QTextCursor 有用吗?
【问题讨论】:
标签: python qpainter pyside6 qtextdocument