在Qt / C ++中将标签打印机上的标签切割成正确的尺寸?

时间:2016-09-26 11:14:18

标签: c++ qt printing qprinter

我有一台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,但我已经给它定制尺寸。它应该使用我指定的尺寸打印,但它没有发生。

如何正确告诉标签打印机使用指定的纸张尺寸,以便正确剪切打印的标签?

0 个答案:

没有答案