一、二维码生成
二维码生成代码:
import qrencode.bitmap; import gdip.graphics; import fsys.stream; import gdip.solidBrush; var width=216 // 画板宽度 var height=330 // 画板高度 var imgWidth = 140; // 二维码宽度 var bmp = gdip.bitmap(width,height); // 创建位图对象 var graphics = gdip.graphics(bmp) // 创建图形对象graphics var brush = gdip.solidBrush(0xFF000000); //创建黑色刷子 // 根据url生成二维码位图 var url="https://www.baidu.com/index.htm"; var qrBmp = qrencode.bitmap(url); var bitmap = qrBmp.copyBitmap(imgWidth); // 将位图画到画板中 graphics.drawImage(bitmap,(width-imgWidth)/2,30) // 参数二为左边距,参数3为上边距 // 转换为文件流 var stream = fsys.stream(); bmp.saveToStream(stream,"*.png"); // 保存bmp到stream流 var fileName = "/img/ticket4-"+time.stamp() + math.random(1000,9999)+".png" // 获取图片字符串 保存到本地 string.save(fileName,stream.readAll()); brush.delete() bmp.dispose()
效果如下:
aardio关于打印机的介绍在范例:
二、打印机
1、打印文字
import win.ui; import sys.printer; /*DSG{{*/ mainForm = win.form(text="aardio4";right=757;bottom=467) mainForm.add( btnPrint={cls="button";text="打印";left=101;top=61;right=164;bottom=98;z=1} ) /*}}*/ mainForm.btnPrint.oncommand = function(id,event){ //直接选定默认打印机输出 var printer = sys.printer(); var pdc = printer.createDevice( dmPaperSize = 9/*_DMPAPER_A4*/; //小票打印机可以设为0,普通打印机使用 _DMPAPER_ 前缀常量指定纸张大小,例如 _DMPAPER_A4 指定为A4纸 dmOrientation = 0;//横向打印为2,纵向打印为1 //dmPaperWidth = 800;//纸张宽度 //dmPaperLength = 580;//纸张长度 ); pdc.start( function(hdcPrinter){ ::Gdi32.TextOut(hdcPrinter,20,20,"测试打印1",5); } ); pdc.close(); } mainForm.show(); return win.loopMessage();
注意:TextOut方法的第五个参数为要打印文字的个数。
2、打印图形
import win.ui; import sys.printer; /*DSG{{*/ mainForm = win.form(text="aardio4";right=757;bottom=467) mainForm.add( btnPrint={cls="button";text="打印";left=137;top=371;right=200;bottom=408;z=1} ) /*}}*/ mainForm.btnPrint.oncommand = function(id,event){ //直接选定默认打印机输出 var printer = sys.printer(); var pdc = printer.createDevice( dmPaperSize = 9/*_DMPAPER_A4*/; //小票打印机可以设为0,普通打印机使用 _DMPAPER_ 前缀常量指定纸张大小,例如 _DMPAPER_A4 指定为A4纸 dmOrientation = 0;//横向打印为2,纵向打印为1 //dmPaperWidth = 800;//纸张宽度 //dmPaperLength = 580;//纸张长度 ); pdc.start( function(hdcPrinter){ //::Gdi32.TextOut(hdcPrinter,20,20,"测试打印1",5); //GDI+绘图 import gdip.graphics; import gdip.family; import gdip.solidBrush; var graphics = gdip.graphics(hdcPrinter); // 创建图形对象graphics graphics.pageUnit = 2/*_UnitPixel,打印单位改为使用像素*/ var brush = gdip.solidBrush(0xFFFF0000); // 创建刷子 var family = gdip.family("宋体"); // 创建FontFamily var strformat = gdip.stringformat(); // 创建stringFormat var curFont = family.createFont( 15,2/*_GdipFontStyleItalic*/, 2/*_GdipUnitPixel*/) // 创建Font graphics.drawString( "Hellow world! 打印测试!!" , curFont , gdip.RECTF(15,15,500,150), strformat,brush); brush.delete() curFont.delete() strformat.delete(); family.delete(); } ); pdc.close(); }
3、生成二维码再打印
import win.ui; import sys.printer; /*DSG{{*/ mainForm = win.form(text="使用sys.printer+gdip打印二维码图片";right=451;bottom=252;parent=...) mainForm.add( button={cls="button";text="打印二维码";left=112;top=90;right=214;bottom=130;z=1}; edit={cls="edit";left=111;top=50;right=331;bottom=75;edge=1;z=3}; static={cls="static";text="二维码内容:";left=34;top=56;right=119;bottom=75;transparent=1;z=2} ) /*}}*/ mainForm.button.oncommand = function(id,event){ //直接选定默认打印机输出 var printer = sys.printer(); var pdc = printer.createDevice( dmPaperSize = 0/*_DMPAPER_A4*/; //小票打印机可以设为0,普通打印机使用 _DMPAPER_ 前缀常量指定纸张大小,例如 _DMPAPER_A4 指定为A4纸 dmOrientation = 0;//横向打印为2,纵向打印为1 //dmPaperWidth = 800;//纸张宽度 //dmPaperLength = 580;//纸张长度 ); pdc.start(function(hdcPrinter){ import qrencode.bitmap; import gdip.graphics; var bmp = qrencode.bitmap(mainForm.edit.text); bmp.copyBitmap(180); var graphics = gdip.graphics(hdcPrinter); // 创建图形对象graphics graphics.drawImageRect(bmp[["bitmap"]], 0,0, 180, 180); // 指定输出大小180*180画图片 }); pdc.close(); } mainForm.enableDpiScaling(); mainForm.show(); return win.loopMessage();
4、打印指定位置的图片
// 打印指定位置的图片 function printImage(filepath,deleteFile){ var printer = sys.printer(); var pdc = printer.createDevice( dmPaperSize = 0/*_DMPAPER_A4*/; //A4 纸 dmOrientation = 0;//横向打印为2,纵向打印为1 ); pdc.start( function(hdcPrinter,rc){ var graphics = gdip.graphics(hdcPrinter); graphics.pageUnit = 2/*_UnitPixel,打印单位改为使用像素*/; var bmp = gdip.bitmap(filepath); //保持比例缩放打印内容以符合介质 graphics.drawImageScale(bmp,rc); } ); pdc.close() if(deleteFile)fsys.delete(filepath) // 打印完成之后删除 }
测试:
printImage("D:\project\aardio-project\aardio4\img\pic-1688972944332.png",true)