FastReport接受参数

   首先要明白二维码其实就是一张图片,而扫出来的二维码其实就是string,经过百度我了解到如果想要打印二维码,前端(VS2016)可以用byte[]流的形式或者64BaseString形式向后端发送二维码打印数据,byte[]实际上存储了二维码各个位置的像素数据,打印机接收到byte[]字节流在转化成图片格式的变量插入到图片控件就可完成。了解上面基本信息之后,下面开始介绍我摸索过程中遇到的诸多问题。
   首先,在百度上找一个生成二维码图片的方法(百度上很多),如下
   public  Bitmap code(string msg)
   {QRCoder.QRCodeGenerator code_generator = new QRCoder.QRCodeGenerator();
   QRCoder.QRCodeData code_data = code_generator.CreateQrCode(msg, QRCoder.QRCodeGenerator.ECCLevel.M);
   QRCoder.QRCode code = new QRCoder.QRCode(code_data);
   Bitmap bmp = code.GetGraphic(20, Color.Black, Color.White, null, 15, 6,true);
    return bmp;}这里返回的是一个BimMap格式的图形变量(跟JPG,PNG)一样,说白了这就是二维码图片,这个方法网上很多,然后在通过一下方法 bmp = _qr.code("Happy");   MemoryStream ms = new MemoryStream();bp.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);_bytecode = ms.ToArray();到这里就把Happy的二维码以字节流的形式赋给了bytecode 变量,bytecode 变量定义的类型是byte[],到这里一切都很顺利,下面才是问题的关键。
    最开始我了解到打印机模块(后端)以接收DataTable类型的变量,然后byte[] imgData=(byte[])Report.GetColumnValue("表名.QRCODE),这个QRCODE就是该表的一个字段,于是我 row["QRCODE"] =bytecode将改byte[]存到表里,VS端用 report.RegisterData(table1)发送该表,结果发现打印模块接受的数据读出该表的QRCODE字段位空,原因不得而知(理论上行的通),经过失败之后只能放弃该方法,于是将bytecode的字节流通过string 64StringQrcode=Convert.ToBase64String(bytecode)强制转化成64Base的字符串同样存到表中,但是发现64string的数据太大存到表里直接变成了乱码,后端理论上可以先将传来的64位字符串先解析成byte,在将byte编码成img格式的图片,但是又经过一番尝试还是失败了,最后只能放弃以DataTable类型的变量传递,于是经过一番百度找到了单变量传递的方法, report.SetParameterValue("Parameter", _bytecode),VS2016端向打印模块发送bytecode,在后端以 byte[] imgData=(byte[])Report.GetParameterValue("Parameter")接收bytecode,后面问题就简单了,调用下面方法MemoryStream ms = new MemoryStream(imgDate1);Image img = System.Drawing.Image.FromStream(ms);重新把bytecode解析成BMP格式的图像变量,再用

Picture3.Image=img;插入到图片控件中就算完成了添加链接描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值