You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动