制作条码(barcode)
条形码制作- barbecue 及 krysalis-barcode
encoding="UTF-8"?>
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
barbecue
Barbecue
Barcode
generating servlet (serves images)
net.sourceforge.barbecue.BarcodeServlet
1
barbecue
*
他使用一个叫做 net.sourceforge.barbecue.BarcodeServlet 的程序接收传入的参数, 可以接收以下这几种参数
- data *: 这是必要项, 就是你要对什么数值做 barcode 编码
- type: 以下是支持的格式列表 , 请注意大小写, 默认为 Code128B
- Code128
- Code128A
- Code128B
- Code128C
- EAN128
- USPS
- ShipmentIdentificationNumber
- SSCC18
- SCCC14ShippingCode
- GlobalTradeItemNumber
- UCC128
- PDF417
- Code39
- 3of9
- USD3
- Codabar
- USD4
- NW7
- Monarch
- 2of7
- appId: 只有 UCC128 格式需要.
- width: 最小的 bar 宽度 pixels.
- height: 输出的图片高度 pixels.
- resolution: 输出的图片分辨率 dpi.
- drawText: 默认为 true, 当设为 false 时将不会同时绘出文字, 但是有些 type 即使设为 true 也不会绘出文字. (1.0.6RC1 此处有bug)
- drawText: 默认为 false, 当设为 true 时将增加一个检查码, 只有 Code39 格式有用.
SECTION 03 在 swing 中使用 barbecue
我们如果要在 swing 中使用, 范例程序如下, 因为 barcode 本身就是 JComponent, 所以可以直接 add();
import javax.swing.*;
import net.sourceforge.barbecue.BarcodeFactory;
import net.sourceforge.barbecue.Barcode;
import
net.sourceforge.barbecue.BarcodeException;
import
net.sourceforge.barbecue.BarcodeImageHandler;
import java.awt.image.BufferedImage;
import java.awt.*;
import java.awt.event.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class SwingApplication {
public static void main(String[] args) {
//Create the top-level container and add contents to it.
JFrame frame = new JFrame("SwingApplication");
SwingApplication app = new SwingApplication();
Component contents = app.usingBarbecueAsSwingComponent();
frame.getContentPane().add(contents, BorderLayout.CENTER);
//Finish setting up the frame, and show it.
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.pack();
frame.setVisible(true);
}
public Component usingBarbecueAsSwingComponent() {
// Always get a Barcode from the BarcodeFactory
Barcode barcode = null;
try {
barcode = BarcodeFactory.createCode128B("12345");
} catch
(BarcodeException e) {
// Error handling
}
return barcode;
}
}
执行的结果是.
SECTION 04 krysalis 的 barcode
#ASF License# , 目前版本 0.9, 由此下载 binary/source 文件
相同的, krysalis barcode 也有提供一个 krysalis-barcode.war, 你可以直接 deploy 到 %Tomcat_HOME%/webapps 之下, 直接 http://localhost:8080/krysalis-barcode 就可以看到执行的页面了, krysalis barcode 主要输出 SVG 图片文件格式为主, 如果没有安装过 SVG 的使用者, 可以到 adobe 的网站下载 SVG Viewer 3.0.1 . 当我输入, type=code128, msg=12345, height=2.5cm, mw=0.5mm, wf=2, qz=10mw, hrp=bottom 的画面如下
SECTION 05 krysalis barcode 的使用
也是相同的观念, 使用了一个 org.krysalis.barcode.servlet.BarcodeServlet 作为接值及呈现的处理.
encoding="ISO-8859-1"?>
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
BarcodeServlet
org.krysalis.barcode.servlet.BarcodeServlet
BarcodeErrorServlet
org.krysalis.barcode.servlet.BarcodeErrorServlet<
SPAN CLASS="syntax17">
BarcodeServlet
/gensvg
BarcodeErrorServlet
/errsvg
xhtml
text/html
svg
image/svg+xml
svgz
image/svg+xml
org.krysalis.barcode.BarcodeException
/errsvg
目前支持的 type 有以下几种
- Interleaved 2 of 5
- Code 39
- Codabar
- Code 128
- UPC-A
- UPC-E
- EAN-13
- EAN-8
SECTION 06 krysalis barcode 输出的 SVG 文件
当我们执行 gensvg?type=code128&msg=12345&height=2.5cm&mw=0.5mm&wf=2&qz=10mw&hrp=bottom 他会产生一个 svg 文件. 文件内容就是 XML 文件. 内容如下..
SECTION 07 结论
目前我们所见到的都是属于一维条形码, 未来希望能够看到二维甚至多维条形码的制作或是其它 opensource 能够出现. 当然, 如果你们有特别制作特殊的条形码格式, 或是有一些比较冷僻的条形码标准不在这两个项目中, 希望你能够加入他们的开发工程.. 感谢这么多愿意默默付出的工程师们, 相较之下, 自己非常的渺小
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
