我有一台Brother QL700标签打印机。我想在这台打印机上打印一个BarCode。我已在QString
中成功生成了代码39格式的条形码,并在QLabel->setText(QString)
上显示此条形码。现在我想在标签打印机上打印这个条形码。我正在做以下事情,但它没有给我预期的结果。
QList<QPrinterInfo> printerList = QPrinterInfo::availablePrinters() ;
for(int r=0; r<printerList.size();++r)
{
if(printerList[r].printerName() == "Brother_QL_700")
{
QPageSize pageSize(QSizeF(45.0,70.0),QPageSize::Millimeter,"",QPageSize::ExactMatch);
QPrinter PRINTER(printerList[r],QPrinter::PrinterResolution);
PRINTER.setOrientation(QPrinter::Portrait);
PRINTER.setPageSize(pageSize);
PRINTER.setFullPage(true);
PRINTER.setOutputFormat(QPrinter::NativeFormat);
int id = QFontDatabase::addApplicationFont("/Applications/untitledfolder/free3of9.ttf");
QFontDatabase::applicationFontFamilies(id).at(0);
QFont barcodefont;
barcodefont.setFamily("New");
barcodefont.setWeight(QFont::Normal);
barcodefont.setPointSize(10);
QFontMetrics fntm(barcodefont);
QPainter painter2;
if(!painter2.begin(&PRINTER))
return;
int x1 = printer1.paperRect().x() + printer1.width()/2 - fntm.width(m_pDeviceInfoWgt->label->text())/2;
int y1 = printer1.paperRect().y();
int w1 = fntm.width(m_pDeviceInfoWgt->label->text());
int h1 = fntm.height();
QRect rect10 = QRect(x1,y1,w1,h1);
painter2.setFont(barcodefont);
painter2.drawText(rect10,Qt::AlignCenter,"Sample_Text");
painter2.end();
break;
}
}
此代码将在标签打印机上打印条形码,但在45 mm后不会切纸。它将纸张切割成297毫米(即A4尺寸为210x297毫米)。
这意味着打印机假设纸张尺寸为QPrinter::A4
,但我已经给它定制尺寸。它应该使用我指定的尺寸打印,但它没有发生。
如何正确告诉标签打印机使用指定的纸张尺寸,以便正确剪切打印的标签?