У меня есть принтер этикеток Brother QL700. Я хочу напечатать штрих-код на этом принтере. Я успешно создал штрих-код в формате кода 39 в QString
и отобразить этот штрих-код на 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 мм. Он обрезает бумагу на 297 мм (то есть в формате А4 210×297 мм).
Это означает, что принтер предполагает, что размер бумаги QPrinter::A4
но я дал ему нестандартный размер. Он должен быть напечатан с использованием указанного мной размера, но этого не происходит.
Как правильно настроить принтер для этикеток на использование бумаги указанного размера, чтобы он правильно обрезал напечатанные этикетки?
Задача ещё не решена.
Других решений пока нет …