我在纸盘中打印多页报告,但第一页打印数据,其余页打印空白。
当我单击“打印”按钮,然后打开pdf文件并生成pfd文件时。
我的编码在下面
from PyQt5 import QtWidgets, QtGui, QtCore, QtPrintSupport, Qt
from PyQt5.QtWidgets import*
import sys
class MainWindow(QtWidgets.QWidget):
def __init__(self):
"""MainWindow constructor"""
super().__init__()
# Main UI code goes here
self.resize(300,200)
self.printButton = QtWidgets.QPushButton("Print", self)
self.printButton.clicked.connect(self.printing)
self.textbox = QLineEdit(self)
self.textbox.move(50,100)
# End Main UI code
self.show()
def printing(self):
printer = QtPrintSupport.QPrinter()
x = self.textbox.text()
print(x)
painter = QtGui.QPainter()
header = QtGui.QTextDocument("<h1<Header</h1>")
body = QtGui.QTextDocument("content...")
footer = QtGui.QTextDocument("Pagenumber")
tm =12
pageSize = printer.pageRect().size()
footerHeight = painter.fontMetrics().height()
textRect = QtCore.QRectF(tm, tm, pageSize.width() - 2 * tm, pageSize.height() - 2 * tm - footerHeight)
footerRect = QtCore.QRectF(textRect)
#footerRect.setTop(textRect.top())
footerRect.setTop(textRect.bottom())
footerRect.setHeight(footerHeight)
# draw footer
'''painter.save()
pen = painter.pen()
pen.setColor(QtCore.Qt.blue)
painter.setPen(pen)'''
headerRect = QtCore.QRectF(12,12,750,100)
headerRect.setTop(textRect.top())
headerRect.setHeight(50)
#painter.restore()
dialog = QtPrintSupport.QPrintDialog(printer)
tm = 20
y = 0
if dialog.exec_() == QtPrintSupport.QPrintDialog.Accepted:
painter.begin(printer)
painter.setFont(QtGui.QFont("times",18))
painter.drawText(headerRect, QtCore.Qt.AlignCenter, "Page1 ")
painter.drawText(10,100,"Name :-")
painter.drawText(200,100,"Name :-")
painter.drawText(400,100,"Name :-")
painter.drawRect(100,500,500,500)
for i in range(100):
painter.drawText(10,100+tm*i,"{}".format(i))
painter.drawText(200,100+tm*i,"{}".format(i))
painter.drawText(400,100+tm*i,"{}".format(i))
y = 100+tm*i
if y > printer.height():
printer.newPage()
y = 0
#painter.drawText(40,10,self.textbox.text())
painter.drawText(footerRect, QtCore.Qt.AlignCenter, "Page1 ")
print("What needs to go here???")
painter.end()
if __name__ == '__main__': # only run this code if this script is called directly
app = QtWidgets.QApplication(sys.argv)
mw = MainWindow()
mw.setWindowTitle("Printing")
sys.exit(app.exec())
使用以下行生成多个页面,但所有页面均为空白 我想打印所有带有剩余打印信息的页面。
if y > printer.height():
printer.newPage()
请为我提供指导。