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);

时间: 2024-10-29 19:10:40

RDLC系列之七 条码打印的相关文章

VS2012报表(RDLC)系列应用之单据批量打印

一.前言 最近做的项目需要单据批量打印的功能,优先想到用RDLC来实现.经过Visual Studio几个版本的发展后,RDLC愈发成熟,操作方式也变得简洁,相比vs2005的版本,有质的提升,不过仍有一下几点缺憾: 1.内置函数不支持C#,只支持Visual Basic 2.不支持Asp.net MVC,支持webForm和winForm 3.VS2008及以下版本开发WebForm时,不建议使用RDLC,因为生成的报表样式不兼容chrome浏览器. 如果未来时间充裕,我将会把RDLC一系列应

c# 条码打印—电子监管码打印

说到条码打印,很多人会说直接调用诸如codesoft 或者bartender之类的软件来打印.没错,简单单独打印是可以使用这些方法.但实际项目应用中所需要的条码打印功能却很复杂,必须结合公司的业务软件才能很到位的打印条码.这时候,咱们不能依赖别人给的软件来打印,必须自己写代码耦合应用程序中去.看下图: 如何打印中国药品电子监管码的条码?看起来很容易,实际上生成药品监管码有一定的命名规则.在这里就不说了,自己上网看一下就明白了.以后大家买药前也可以去http://www1.drugadmin.co

可视化、高智能、多功能、XML配置型工业条码打印、标签打印解决方案

前言 现代工业生产中,标签打印无处不在,可以说标签就是产品的脸面.标签种类繁琐,特别是在工业生产中,标签信息需要与生产系统相关联,动态地获取打印信息.当然我们可以为每个标签写一个生成程序,但如果标签种类成千上万,那么就需要投入大量的人力.物力.比如一个很小的布局变动也去修改程序代码,显然是不明智的.如何构建一个可视化.高智能.多功能的工业条码打印解决框架,正是我们迫切需要解决的难题. 可视化.高智能.多功能.XML配置型工业条码打印解决方案应运而生,旨在解决上述难题.下面简要的给出部分截图,有兴

白话经典算法系列之七 堆与堆排序

堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法.学习堆排序前,先解说下什么是数据结构中的二叉堆. 二叉堆的定义 二叉堆是全然二叉树或者是近似全然二叉树. 二叉堆满足二个特性: 1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值. 2.每一个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆). 当父结点的键值总是大于或等于不论什么一个子节点的键值时为最大堆.当父结点的键值总是小于或等于不论什么一个子节点的键值时为最小堆.下图展示一个最小堆

(Mirage系列之七)Mirage经典案例之管理和发布应用层

在(Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析中我们介绍过,Mirage从逻辑上把终端桌面分层了三层:系统层(包括驱动和基础层),应用层,以及用户数据层.在(Mirage系列之五)Mirage经典案例之桌面驱动和基础层管理中我们讲到Mirage可以灵活方便的管理终端的驱动并且发布基础层.本文将介绍Mirage如何管理终端的应用层. 一个公司往往有很多部门,各部门所需要的工作软件也不尽相同.Mirage通过分层这个核心技术,将应用层剥离出来,使得管

关于Rdlc报表无浏览打印 图片

1.创建一个将图片转化成字节数组的方法 /// <summary> /// 将图片转成字节数组 /// </summary> /// <param name="bitmap">图片</param> /// <returns></returns> private byte[] BitmapToBytes(Bitmap bitmap) { MemoryStream ms = null; try { ms = new M

Asp组件初级入门与精通系列之七

在运行前几章的例子,可能或多或少的都会碰上一些问题 如:组件编译后,又要修改,发生"权限被拒绝,'f:\csdn\fcom.dll'"等等的错误. 当asp页面浏览时,打开任务管理器,会看到一个dllhost.exe,用户名为IWAM_YANG的进程.IWAM_YANG会根据计算机名而有所不同. 可以使用以下几种方式来解决 1. 重新启动iis. 在控制面板中找到管理工具->internet信息服务->右键点击左边树图第二层本地计算机->所有任务->重新启动II

白话经典算法系列之七 堆与堆排序(转)

堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法.学习堆排序前,先讲解下什么是数据结构中的二叉堆. 二叉堆的定义 二叉堆是完全二叉树或者是近似完全二叉树. 二叉堆满足二个特性: 1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值. 2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆). 当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆.当父结点的键值总是小于或等于任何一个子节点的键值时为最小堆.下图展示一个最小堆: 由于其它几

进货单条码打印

进货单条码打印 要求: ????按进货单别单号查询进货单,打印进货单中包含的所有物料的条码: 条码规则: ????品号+批号+单别单号: 条码版面: ????包含:条码,品号,品名,规格: ? 带入单身设置: ????默认带入实际采购数量,增加列[条码打印数量],由用户输入: ? select * from DSCSYS.dbo.ADMMD where MD001='PURTH' select * from PURTH where TH001='3404' and TH002 like '16%