首页 > 代码库 > javaweb条形码产生、打印、扫描
javaweb条形码产生、打印、扫描
产生条形码的插件到是不少,但是能用针式打印机打印在合适表单上,而且能用常用的激光扫描器扫描出来的demo到不是很多。
本文,所牵扯的代码与工具均亲测可用。
使用工具:
epson LQ-630K针式打印机
honeywell ms9540 激光条码扫描枪
激光打印机
难度:
激光打印机,不管用什么编码格式,用下文的代码输出图片,扫描枪均可以扫描出来;
针式打印机打印效果没有那么好,打印出来的不能扫描出来,刚开始不知道什么问题,换编码方式,换样式表示方式等,调针式打印机配置等,各种组合测试。
解决方案:
采用下文代码、适当调宽条形码宽度即可。
也不用增加太大(太大显得不协调),15位(5位字母后面都是数字)一般正常输出的话宽度是51mm左右吧,调到56就可以识别了,当然如果不理想,可以再调下。
demo:
另外项目中要加入jbarcode-0.2.8.jar包。
项目使用struts框架,struts中如下配置:
<action name="barcode" class="XX.YY.ZZAction"> <span style="white-space:pre"> </span><result type="stream"> <span style="white-space:pre"> </span><param name="contentType">image/jpeg</param> <span style="white-space:pre"> </span><param name="inputName">inputStream</param> <span style="white-space:pre"> </span></result> </action>前台如下调用即可
<img style="width:56mm" src=http://www.mamicode.com/"barcode.action?barcode=ABCDE0123456789">
aciton类
import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import javax.imageio.ImageIO; import javax.imageio.stream.ImageOutputStream; import org.jbarcode.JBarcode; import org.jbarcode.encode.Code93Encoder; import org.jbarcode.paint.BaseLineTextPainter; import org.jbarcode.paint.EAN13TextPainter; import org.jbarcode.paint.WidthCodedPainter; public class BarcodeAction { private ByteArrayInputStream inputStream; private String barcode; public String execute() throws Exception { JBarcode jBarcode = new JBarcode(Code93Encoder.getInstance(), WidthCodedPainter.getInstance(), BaseLineTextPainter.getInstance()); jBarcode .setShowCheckDigit(false); jBarcode .setCheckDigit(true); jBarcode .setShowText(false); jBarcode .setBarHeight(10); BufferedImage bufferedImage = jBarcode .createBarcode(barcode); ByteArrayOutputStream output = new ByteArrayOutputStream(); ImageOutputStream imageOut = ImageIO.createImageOutputStream(output); ImageIO.write(bufferedImage , "JPEG", imageOut); imageOut.close(); inputStream = new ByteArrayInputStream(output.toByteArray()); return "success"; } public void setInputStream(ByteArrayInputStream inputStream) { this.inputStream = inputStream; } public ByteArrayInputStream getInputStream() { return inputStream; } public String getBarcode() { return barcode; } public void setBarcode(String barcode) { this.barcode = barcode; } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。