C#打印条码的几种方式

标题虽然是说C#,但是以下介绍的几种方法不是只能在C#中使用,在其它的语言里面也行。

总结一下常见的条码打印方法,其实打条码的方式很多,大概有以下几种:

1.斑马打印软件制作好模板,保存为.prn格式的文件,文件格式大致如下

^XA^LH30,0^JMA^XZ

~DG000.GRF,04096,128,

,::::::::::::::::::rQF0,:::,::::::::~DG001.GRF,04096,128,

,:::::::rQF0,:::a,:::::::::::::::::::~DG002.GRF,04096,128,

,:::::::::::::::rQF0,::::,::::::::::~DG003.GRF,04096,128,

,::::::::::::::::::::rQF0,::::,:::::^XA

^MMT

^PW1004

^LL1890

^LS0

^FT0,544^XG000.GRF,1,1^FS

^FT0,1856^XG001.GRF,1,1^FS

^FT0,1792^XG002.GRF,1,1^FS

^FT0,1728^XG003.GRF,1,1^FS

^FT21,449^A0N,33,33^FH\^FDUPC:^FS

^FT425,450^A0N,33,33^FH\^FDEAN:^FS

^BY1,3,18^FT604,1691^BCN,,N,N

^FD>:{SN1}^FS

^BY2,3,30^FT494,1638^BCN,,N,N

^FD>:{SN2}^FS

模板中红色的字段则是需要用变量替换的,这个很简单,只需要Replace即可,然后将替换好之后的模板内容发送给打印机打印出来就行。

2.使用BarTender制作btw的模板文件,文件格式即为.btw,为模板文件指定数据源,数据源的种类很多,比如数据库、文本文件等等,这里我以文本文件举例:

首先制作好模板,

其中Temp.ActiveCode1和Temp.ActiveCode2则是两个文本文件,文件格式为:

ActiceCode1,ActiceCode2

K0NBHE-T0DZDR-B3QSP6,K0NBHE-T0DZDR-B3QSP7

程序中根据前台传入的数据,将最终的数据写入到这个数据源中,然后通过拆分这个数据源获取每一个字段,调用打印方法,

Process.Start(bartendAdd, "/NOSPLASH  /F=\"" + btw + "\" /D=\"" + sn + "\" /P /X");

3.通过FastReport打印

这里重点说一下参数的传递和接收问题,其它的应该都还比较简单,我们首先创建一个模板文件,这里值得一提的是,使用FastReport.Net设计器产生的文件是以frx为后缀的文件,以FastReport.Studio设计器产生的文件是以fr3为后缀的文件,当时我也搞不清楚则个区别,后来慢慢摸索出来的。

这里传入参数给报表:

这里接收传入的参数值:

预览一下获取参数之后的结果:

时间: 2024-10-10 11:15:05

C#打印条码的几种方式的相关文章

【巨坑】springmvc 输出json格式数据的几种方式!

最近公司项目需要发布一些数据服务,从设计到实现两天就弄完了,心中窃喜之. 结果临近部署时突然发现.....  服务输出的JSON 数据中  date 类型数据输出格式要么是时间戳,要么是  {"date":26,"day":1,"hours":21,"minutes":38,"month":5,"seconds":22,"time":1498484302259,&qu

关于整合spring+mybatis 第二种方式

和第一种方式一样的步骤,不过bean.xml中有些许差异 <!-- 配置sqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property&g

XFire构建web service客户端的五种方式

这里并未涉及到JSR181Annotations的相关应用,具体的三种方式如下 ①通过WSDL地址来创建动态客户端②通过服务端提供的接口来创建客户端③使用Ant通过WSDL文件来生成客户端 第一种方式:通过WSDL地址来创建动态客户端 view plainprint? packagecom.jadyer.client; importjava.net.MalformedURLException; importjava.net.URL; importorg.codehaus.xfire.client

em创建的两种方式

em创建(两种方式1,图形dbca,当然了,前提是先创建一个监听. 2,手工命令安装em)手工命令创建em(确保数据库开启,确保监听正常并且最好是动态监听,确保system表空间够用大概1G左右),我的空间有限只给了800M,如下 select file_name,tablespace_name,bytes/1024/1024 from dba_data_files where tablespace_name like 'SYSTEM';alter database datafile '/u01

Android——数据存储(四种方式之一)SharedPrefereces

Android--数据存储(四种方式) 1.SharedPrefereces   轻量级.XML  存储文件名,数据保存在data/data/basepackage/shared_prefs/myopt.xml中   实例-收藏-记住密码自动登录 //一种轻量级的数据存储方式//通过KEY 存入数据--putxxxx(key,value) 取出数据--getxxxx(key  default)   2.读写SD卡  SD的根目录  适用于数据流读写 3.SQLite  轻量级.dp文件多用于手机

AngularJs学习——实现数据绑定的三种方式

三种方式: 方式一:<h5>{{msg}}</h5>  此方式在页面刷新的时候会闪现{{}} 方式二:<h5 ng-bind="msg"></h5> 方式三:<h5 ng-clock class="ng-clock">{{msg}}</h5> 示例代码: <!DOCTYPE html> <html lang="en" ng-app="myapp&q

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 选择调用的进程为 24 i386 getuid sys_getuid1647 i386 getgid sys_getgid16 使用库函数API方式 使用C代码中嵌入汇编代码方式

Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition

在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权.因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就不会让队列有空间,那么生产者就会一直无限等待下去.因此,一般情况下,当队列满时,会让生产者交出对临界资源的占用权,并进入挂起状态.然后等待消费者消费了商品,然后消费者通知生产者队列有空间了.同样地,当

小蚂蚁学习页面静态化(2)——更新生成纯静态化页面的三种方式

更新生成纯静态化页面的三种方式:1.按照时间间隔更新.2.手动更新.3.定时更新(需要系统配合). 1. 按照时间间隔更新. 当用户第一次访问这个页面的时候,程序自动判断,该静态文件是否存在,并且该文件是否还在有效时间内,如果该文件未超出了有效时间,用户访问的是已经生成的静态文件.如果超出了有效时间,用户得到的是动态输出的内容,同时重新生成静态文件.稍微修改一下昨天的代码为例: <?php //首先判断是否有静态文件,并且文件的最新修改时间到现在是否大于20秒 if(is_file('./tex