PyQt5使用QTextDocument打印时左侧存在多余边距的问题求助
PyQt5使用QTextDocument打印时左侧存在多余边距的问题求助
各位大佬好,我目前在使用PyQt5开发打印功能,用QTextDocument来输出文本,但遇到了一个头疼的问题——打印出来的内容左侧总是有多余的边距,我试了各种办法都没法把它去掉。
我已经尝试过调用setPageMargins设置打印机的页边距,也用了setDocumentMargin设置文档的边距,可左侧的边距依然顽固存在,完全没变化。
以下是我的完整代码:
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QVBoxLayout, QPushButton, QWidget from PyQt5.QtGui import QTextDocument, QTextCursor, QTextCharFormat,QTextFrameFormat,QTextBlockFormat from PyQt5.QtPrintSupport import QPrinter, QPrintDialog,QPrintPreviewDialog from PyQt5 import QtCore,QtWidgets,QtGui import sys class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setGeometry(100, 100, 800, 600) self.setWindowTitle('QTextDocument Example') central_widget = QWidget() layout = QVBoxLayout() self.text_edit = QTextEdit() layout.addWidget(self.text_edit) self.generate_button = QPushButton('Generate Document') self.generate_button.clicked.connect(self.generateDocument) layout.addWidget(self.generate_button) central_widget.setLayout(layout) self.setCentralWidget(central_widget) def generateDocument(self): # Clear any previous content self.text_edit.clear() # Create a QTextDocument instance doc = QTextDocument() cursor = QTextCursor(doc) content = "HI there" cursor.insertText(content) printer = QPrinter() printer.setFullPage(True) printer.setPageMargins(0.1,0.1,0.1,0.1,QPrinter.Millimeter) printer.setPaperSize(QPrinter.PageSize.Letter) printer.setOrientation(QPrinter.Orientation.Portrait) doc.setDocumentMargin(0) self.text_edit.setDocument(doc) doc.print_(printer) if __name__ == '__main__': app = QApplication(sys.argv) mainWindow = MainWindow() mainWindow.show() sys.exit(app.exec_())
输出情况:打印出来的内容左侧存在大量多余边距,和预期的无边距效果相差很大。
有没有大佬能帮我看看问题出在哪,怎么才能把左侧的多余边距去掉呀?
备注:内容来源于stack exchange,提问作者Akrash Nadeem




