#include "danjumuban.h" #include "QtPrintSupport" #include "QDateTime" #include "globalinfo.h" DanJuMuBan::DanJuMuBan() { // path = QDir::currentPath(); } QImage DanJuMuBan::printBoxInfo(QString bar,QSharedPointer info) { // TODO: 测试打印出来的单子 // if(datalist.isEmpty()){ // return; // } QSharedPointer pinfo = info->parentPack(); if(pinfo.isNull()) return QImage(); QSize size(MAXWIDTH*5,MAXHEIGHT*5); QImage image(size,QImage::Format_ARGB32); image.fill(qRgba(255, 255, 255, 255)); QPainter painter(&image); painter.drawRect(5*5,5*5,90*5,15*5); painter.drawRect(5*5,20*5,90*5,35*5); painter.drawLine(20*5,20*5,20*5,55*5); painter.drawLine(50*5,20*5,50*5,55*5); painter.drawLine(66*5,20*5,66*5,55*5); painter.drawLine(5*5,27*5,95*5,27*5); painter.drawLine(5*5,34*5,95*5,34*5); painter.drawLine(5*5,41*5,95*5,41*5); painter.drawLine(5*5,48*5,95*5,48*5); painter.drawRect(5*5,55*5,90*5,15*5); painter.drawRect(5*5,70*5,90*5,7*5); QRect target(0*5, 57*5, 100*5, 65*5); // QRect source(-10*5, 0, 65*5, 40*5); barCode.draw(painter,target,bar); // painter.drawImage(target,barCode.draw(barCode.CodeBinary(bar),bar),source); painter.setRenderHint(QPainter::Antialiasing,true); painter.setRenderHint(QPainter::TextAntialiasing,true); painter.setRenderHint(QPainter::HighQualityAntialiasing,true); QFont font; font.setFamily("宋体"); font.setPixelSize(40); font.setWeight(QFont::ExtraLight); painter.setFont(font); painter.drawText(6*5,15*5,pinfo->info().customer); qDebug()<info().customer; font.setPixelSize(20); font.setBold(true); painter.setFont(font); painter.drawText(8*5,25*5,QStringLiteral("品名")); painter.drawText(53*5,25*5,QStringLiteral("毛重")); painter.drawText(8*5,32*5,QStringLiteral("批号")); painter.drawText(53*5,32*5,QStringLiteral("净重")); painter.drawText(8*5,39*5,QStringLiteral("规格")); painter.drawText(53*5,39*5,QStringLiteral("筒数")); painter.drawText(8*5,46*5,QStringLiteral("等级")); painter.drawText(53*5,46*5,QStringLiteral("捻向")); painter.drawText(8*5,53*5,QStringLiteral("箱号")); painter.drawText(50*5,53*5,QStringLiteral("纸管颜色")); painter.drawText(21*5,25*5,pinfo->info().product_type_code); painter.drawText(21*5,32*5,pinfo->info().batch_no); painter.drawText(21*5,39*5,pinfo->info().specs); painter.drawText(67*5,25*5,QString("%1 kg").arg(info->gross_weight / 1000.00));//datalist.at(0)); painter.drawText(67*5,32*5,QString("%1 kg").arg(info->net_weight / 1000.00));//datalist.at(1)); painter.drawText(67*5,39*5,QString::number(info->tube_number));//datalist.at(2)); painter.drawText(21*5,46*5,QString::number(pinfo->level_id));//datalist.at(3)); painter.drawText(67*5,46*5,pinfo->info().twist_type);//datalist.at(4)); painter.drawText(21*5,53*5,info->caseNumber());//datalist.at(5)); painter.drawText(67*5,53*5,pinfo->info().bucket_color);//datalist.at(6)); // painter.drawText(4*5,75*5," 电话"+telephone+"传真"+fax); // print(image); return image; // image.save(path+"\\xiangdan\\code"+bar+".bmp"); } QImage DanJuMuBan::printPackInfo(QString bar, QSharedPointer info) { // TODO: 测试打印出来的单子 QSize size(MAXWIDTH*5,MAXHEIGHT*5); QImage image(size,QImage::Format_ARGB32); image.fill(qRgba(255, 255, 255, 255)); QPainter painter(&image); painter.drawRect(4*5,4*5,92*5,68*5); painter.drawLine(50*5,0,50*5,80*5); painter.drawLine(4*5,16*5,96*5,16*5); painter.drawLine(4*5,22*5,96*5,22*5); painter.drawLine(4*5,28*5,96*5,28*5); painter.drawLine(4*5,34*5,96*5,34*5); painter.drawLine(4*5,40*5,96*5,40*5); painter.drawLine(4*5,46*5,96*5,46*5); painter.drawLine(4*5,52*5,96*5,52*5); painter.drawLine(4*5,58*5,96*5,58*5); painter.drawLine(4*5,65*5,96*5,65*5); QFont font; font.setFamily("宋体"); font.setPixelSize(30); font.setWeight(QFont::ExtraLight); painter.setFont(font); painter.drawText(38*5,10*5,QStringLiteral("入 库 单")); font.setPixelSize(20); painter.setFont(font); painter.drawText(8*5,15*5,QStringLiteral("规格:")); painter.drawText(59*5,15*5,QStringLiteral("类型:")); painter.drawText(8*5,21*5,QStringLiteral("批号:")); painter.drawText(59*5,21*5,QStringLiteral("等级:")); font.setPixelSize(15); painter.setFont(font); int boxSize = info->boxes().size(); for(int i = 0; i < boxSize; ++i){ int line = i / 5; int cloun = i % 5; painter.drawText((9 + line * 19)*5,(27 + cloun * 6)*5,QString("%1.").arg(i + 1)); } // painter.drawText(9*5,27*5,QStringLiteral("1.")); // painter.drawText(9*5,33*5,QStringLiteral("2.")); // painter.drawText(9*5,39*5,QStringLiteral("3.")); // painter.drawText(9*5,45*5,QStringLiteral("4.")); // painter.drawText(9*5,51*5,QStringLiteral("5.")); // painter.drawText(9*5,57*5,QStringLiteral("6.")); // painter.drawText(28*5,27*5,QStringLiteral("7.")); // painter.drawText(28*5,33*5,QStringLiteral("8.")); // painter.drawText(28*5,39*5,QStringLiteral("9.")); // painter.drawText(28*5,45*5,QStringLiteral("10.")); // painter.drawText(28*5,51*5,QStringLiteral("11.")); // painter.drawText(28*5,57*5,QStringLiteral("12.")); // painter.drawText(47*5,27*5,QStringLiteral("13.")); // painter.drawText(47*5,33*5,QStringLiteral("14.")); // painter.drawText(47*5,39*5,QStringLiteral("15.")); // painter.drawText(47*5,45*5,QStringLiteral("16.")); // painter.drawText(47*5,51*5,QStringLiteral("17.")); // painter.drawText(47*5,57*5,QStringLiteral("18.")); // painter.drawText(66*5,27*5,QStringLiteral("19.")); // painter.drawText(66*5,33*5,QStringLiteral("20.")); // painter.drawText(8*5,64*5,QStringLiteral("总数")); // painter.drawText(38*5,64*5,QStringLiteral("总重量")); // painter.drawText(68*5,64*5,QStringLiteral("总筒数")); QRect target(0*5, 67*5, 100*5, 60*5); barCode.draw(painter,target,bar); // QRect source(-10*5, 0, 60*5, 40*5); // painter.drawImage(target,barCode.draw(barCode.CodeBinary(bar),bar),source); // barCode.draw(barCode.CodeBinary(bar),bar,&image); font.setPixelSize(20); font.setFamily("黑体"); // font.setBold(true); painter.setFont(font); painter.drawText(19*5,15*5,info->info().specs);//QStringLiteral("规格")); painter.drawText(70*5,15*5,info->info().category);//QStringLiteral("类型")); painter.drawText(19*5,21*5,info->info().batch_no);//QStringLiteral("批号")); painter.drawText(70*5,21*5,QString::number(info->level_id));//info.at(0)); for(int i = 0; i < boxSize; ++i) { QString code = QString::number(info->boxes().at(i)->net_weight); int line = i / 5; int cloun = i % 5; painter.drawText((13 + line * 19)*5,(27.5 + cloun * 6 )*5 ,code); } /* painter.drawText(13*5,27.5*5,info.at(1)); painter.drawText(13*5,33.5*5,info.at(2)); painter.drawText(13*5,39.5*5,info.at(3)); painter.drawText(13*5,45.5*5,info.at(4)); painter.drawText(13*5,51.5*5,info.at(5)); painter.drawText(13*5,57.5*5,info.at(6)); painter.drawText(32*5,27.5*5,info.at(7)); painter.drawText(32*5,33.5*5,info.at(8)); painter.drawText(32*5,39.5*5,info.at(9)); painter.drawText(32*5,45.5*5,info.at(10)); painter.drawText(32*5,51.5*5,info.at(11)); painter.drawText(32*5,57.5*5,info.at(12)); painter.drawText(51*5,27.5*5,info.at(13)); painter.drawText(51*5,33.5*5,info.at(14)); painter.drawText(51*5,39.5*5,info.at(15)); painter.drawText(51*5,45.5*5,info.at(16)); painter.drawText(51*5,51.5*5,info.at(17)); painter.drawText(51*5,57.5*5,info.at(18)); painter.drawText(70*5,27.5*5,info.at(19)); painter.drawText(70*5,33.5*5,info.at(20)); */ painter.drawText(15*5,64*5,QString::number(info->boxes().size())); painter.drawText(48*5,64*5,QString("%1 kg").arg(info->net_weight() / 1000.00)); painter.drawText(78*5,64*5,QString::number(info->tube_number())); // print(image); // image.save(path+"\\rukudan\\code"+bar+".bmp"); return image; } void DanJuMuBan::print(QImage image) { QPrinter printer; printer.setPageSize(QPrinter::Custom); printer.setPageSizeMM(QSizeF(100,70)); printer.setPrinterName(GlobalInfo::this_()->config().printerName); QPainter painter(&printer); // 创建一个QPainter对象,并指定绘图设备为一个QPainter对象 QRect rect =painter.viewport(); // 获得QPainter对象的视图矩形区域 QSize size(image.width(),image.height()); // 获得图像的大小 /* 按照图形的比例大小重新设置视图矩形区域 */ size.scale(rect.size(),Qt::KeepAspectRatio); painter.setViewport(rect.x(),rect.y(),size.width()+50,size.height()); painter.setWindow(image.rect()); // 设置QPainter窗口大小为图像的大小 painter.drawImage(0,0,image); // 打印图像 // } }