I’m writing an application that prints addresses directly onto envelopes. I’m using QTextDocument and the problem is that its method print() adds the page number, which is incorrect in envelopes.
Some code, in case you need it:
void MainWindow::print()
{
QString addressText = textEdit->document()->toPlainText();
envelopeDocument = new QTextDocument(this);
printer.setResolution(QPrinter::HighResolution);
printer.setPrinterName("OKI B6200(PCL6)");
printer.setOrientation(QPrinter::Landscape);
QFont font("Trebuchet MS");
switch (envelopeComboBox->currentIndex()){
case 0:
font.setPointSize(12);
envelopeDocument->setDefaultFont(font);
envelopeDocument->setPlainText(addressText);
printer.setPaperSize(QSizeF(114,225),QPrinter::Millimeter);
printer.setPageMargins(120,60,20,15,QPrinter::Millimeter);
break;
case 1:
font.setPointSize(14);
envelopeDocument->setDefaultFont(font);
envelopeDocument->setPlainText(addressText);
printer.setPaperSize(QSizeF(184,262),QPrinter::Millimeter);
printer.setPageMargins(140,100,20,20,QPrinter::Millimeter);
break;
case 2:
font.setPointSize(16);
envelopeDocument->setDefaultFont(font);
envelopeDocument->setPlainText(addressText);
printer.setPaperSize(QSizeF(227,324), QPrinter::Millimeter);
printer.setPageMargins(170,120,30,40,QPrinter::Millimeter);
break;
}
QPrintPreviewDialog preview (&printer,this);
preview.setWindowFlags(Qt::Window);
connect(&preview, SIGNAL(paintRequested(QPrinter *)),SLOT(printPreview(QPrinter *)));
preview.exec();
}
void MainWindow::printPreview(QPrinter *p)
{
envelopeDocument->print(p);
}
Thank you!
You can try the following code, it might help you…
When you refer the source code of
print(), then you will recognize that theQPointF pageNumberPosis only defined when there is no validQTextDocument.pageSize().In
printPage()the page number will be just printed, ifpageNumberPosis not null.So just set a valid
QTextDocumtent.pageSize()and you have no page numbers on your printed document.