javaweb條形碼產生、打印、掃描
阿新 • • 發佈:2017-05-25
ins htm blank sets dem trac buffer ext base
前臺例如以下調用就可以
產生條形碼的插件到是不少,可是能用針式打印機打印在合適表單上,並且能用經常使用的激光掃描器掃描出來的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="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; } }
javaweb條形碼產生、打印、掃描