zoukankan      html  css  js  c++  java
  • RDLC系列之七 条码打印

    参考:

    C# 条码标签打印程序,RDLC报表动态显示多条码标签的方法

    http://www.cnblogs.com/vice/p/4105898.html

    我做的思路是:不使用数据库存储image的byte[]数据,而是首先将所有需要的条码数据保存到一个数据库表中,然后在需要将条码显示到RDLC报表中时,取得表中的条码数据,然后创建数据集(用于存储报表中需要用到的所有数据),再将每条条码数据用barcodelib.dll生成条码对象,返回image对象,再使用下面方法将返回的image对象转换为byte[]数组存入新建的数据集中。

    其他代码就不贴了,因为好多东西都没封装都是码上去的,太长了。

    复制代码
    1        //image对象转byte数组
    2         public static byte[] ImageToBytes(Image img)
    3         {
    4             ImageConverter imgconv = new ImageConverter();
    5             byte[] b = (byte[])imgconv.ConvertTo(img, typeof(byte[]));
    6             return b;
    7         }
    复制代码

    然后在RDLC中创建模板,添加数据源为刚刚创建的数据集,插入图片对象,图像源选择数据库,”使用此字段“ 输入 System.Convert.ToBase64String(Fields!存储image对象的byte[]列名.Value)

    方法二:直接在后台字段中先转换为Base64字符串

    System.Convert.ToBase64String(ImageToBytes(image));

    barcodelib.dll的调用方法封装

    注意:

    建议image流直接获取条码生成的图片流,即从内存读取。

    此外,RDLC图片属性的大小,要设置为原始大小(第一个选项),否则部分扫描枪不能扫描,因为条码图片被自动拉升而变形。

    如果使用图片文件,可能导致不清晰,如下

     Image img = Image.FromFile(path);

  • 相关阅读:
    SignalR客户端和服务端编写,winfrom端
    SQL 发送邮件msdb.dbo.sp_send_dbmail
    Stimulsoft打印内容横向,变成竖向,解决方法
    Chrome浏览器所有页面崩溃
    SQL存储过程直接传表
    c#SignalR一次发送最大数据量
    c#USB扫描枪,防止输入框手动输入
    SQLPrompt_9.5.5.9830破解版含注册机_永久激活不掉线
    SQL快捷键设置
    USB HDI 通信
  • 原文地址:https://www.cnblogs.com/xcsn/p/4579321.html
Copyright © 2011-2022 走看看