Barbecue 条形码

jasperreports6.3中barbecue-1.5时在linux下打印条码无法显示条码数字drawText 使用到的lib包是jasperreports6.3  + barbecue-1.5 最近碰到的一个坑,在windows下打印出来的含有条码的pdf完全正常,如图所示 但是把程序部署到linux下之后 条码下的“012345679”就打印不出来了。 最后看了下barbecue的源代码,发现原因是由于linux下是以为jvm平台差异的原因。 linux服务器没有安装图形 阅读详情

文前声明:我是从这个地址转载过来的

文章的名字我自己加的!他发表的日期是2008-04-30!现在的Barbecue版本至少是1.5了!


(转别人的)条形码
转自www.alibubu.com 
本周主题 -- 条形码制作- barbecue 及 krysalis-barcode 
SECTION 00 简介 

记得我在大学的时候, 去大众计算机实习工读, 那 时候在工业管理部门, 那时候我仅是呆呆笨笨的学生, 他们跟我说要我学 习 clipper 去印制条形码, 朦胧无知的我就乖乖地学习 clipper 艰深难懂完全 没有对象导向的语法, 不过, 当我出了社会, 协助一家 ec 网站建立 7-11 的整套系统, 那时候, 我采用了 asp 通过 activx 的组件产生 barcode. 最近刚好有人在 jsptw 问起 barcode 的产生, 我又回想当时制作的方式, 不由得好奇 java 是否 有相关的 opensource 可以使用, 在 sourceforge 上有存在着 barbecue 这个项目, Jiayun 大侠也提供了 krysalis barcode 这个 opensource 给我知道. 因此, 本周就介绍如何制作 Barcode . 

SECTION 01 Barbecue 



#BSD License# , 目前版本 1.0.6 RC1, 由此下载 binary/source 文件 

Barbecue 这个 opensource 项目使用 java 制作了 一些 barcode 的格式, 只需要通过简单又具有弹性的 java api 就可以使 用了. 他输出的格式为图片文件, 也可以使用在 Swing 之 中, 更可以输出成为 SVG 的格式. 

使用 Barbecue 这个项目非常简单, 当你下载他的 binary 文件解压缩后, 你会找到一个 barbecue.war文件, 你把它放到 %TOMCAT_HOME%/webapps/ 之下, 接着你可以直接执行 http://localhost:8080/barbecue/barcode?data=123545&height=50, 你就可以看到 


这样的 barcode 图片了 ( 此图片为1.0.5输出, 1.0.6 RC1有点 bug, 无法输出文字部分 ). 如果你要在其它的 jsp 使用的话, 你可以用 <img src="http://localhost:8080/barbecue/barcode?data=123545&height=50" >, 他就会内嵌在你的网页之中. 

SECTION 02 barbecue 参数解释 

我们可以 trace 一下 barbecue.war 的 web.xml 是怎么设置的 
<?xml version="1.0" 

encoding="UTF-8"?> 
<!DOCTYPE web-app 
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" 
    "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> 

<web-app> 
    <servlet> 
        <servlet-name>barbecue</servlet-name> 
                <display-name>Barbecue</display-name> 
                <deSCRIPTion>Barcode 

generating servlet (serves images)</deSCRIPTion> 
        <servlet-class>net.sourceforge.barbecue.BarcodeServlet</servlet-class> 
                <load-on-startup>1</load-on-startup> 
    </servlet> 
        <servlet-mapping> 
                <servlet-name>barbecue</servlet-name> 
                <url-pattern>*</url-pattern> 
        </servlet-mapping> 
</web-app> 

他使用一个叫做 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 作为接值及呈现的处理. 
<?xml version="1.0" 

encoding="ISO-8859-1"?> 
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" 
    "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> 
<web-app> 
  <servlet> 
    <servlet-name>BarcodeServlet</servlet-name> 
    <servlet-class>org.krysalis.barcode.servlet.BarcodeServlet</servlet-class> 
  </servlet> 
  <servlet> 
    <servlet-name>BarcodeErrorServlet</servlet-name> 
    <servlet-class>org.krysalis.barcode.servlet.BarcodeErrorServlet< 

SPAN CLASS="syntax17"></servlet-class> 
  </servlet> 
  <servlet-mapping> 
    <servlet-name>BarcodeServlet</servlet-name> 
    <url-pattern>/gensvg</url-pattern> 
  </servlet-mapping> 
  <servlet-mapping> 
    <servlet-name>BarcodeErrorServlet</servlet-name> 
    <url-pattern>/errsvg</url-pattern> 
  </servlet-mapping> 
  <mime-mapping> 
    <extension>xhtml</extension> 
    <!--mime-type>application/xhtml+xml</mime-type--> 
    <!--the above is 

not supported by IE6--> 
    <mime-type>text/html</mime-type> 
  </mime-mapping> 
  <mime-mapping> 
    <extension>svg</extension> 
    <mime-type>image/svg+xml</mime-type> 
  </mime-mapping> 
  <mime-mapping> 
    <extension>svgz</extension> 
    <mime-type>image/svg+xml</mime-type> 
  </mime-mapping> 
  <error-page> 
    <exception-type>org.krysalis.barcode.BarcodeException</exception-type> 
    <location>/errsvg</location> 
  </error-page> 
</web-app> 

目前支持的 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 文件. 内容如下.. 
<?xml version="1.0" 

standalone="no"?> 
<!DOCTYPE svg> 
<svg 
        height="25mm" 
        width="49.5mm" 
        preserveAspectRatio="xMidYMid meet" 
        xmlns:xmlns="http://www.w3.org/2000/svg" 
zoomAndPan="magnify"> 
<g style="fill:black; stroke:none"> 
        <rect height="22.1781mm" width="1mm" x="5mm" y="0mm"/> 
        <rect height="22.1781mm" width="0.5mm" x="6.5mm" y="0mm"/> 
        <rect height="22.1781mm" width="1.5mm" x="8mm" y="0mm"/> 
        <rect height="22.1781mm" width="0.5mm" x="10.5mm" y="0mm"/> 
        <rect height="22.1781mm" width="1mm" x="11.5mm" y="0mm"/> 
        <rect height="22.1781mm" width="1.5mm" x="13.5mm" y="0mm"/> 
        <rect height="22.1781mm" width="0.5mm" x="16mm" y="0mm"/> 
        <rect height="22.1781mm" width="0.5mm" x="18mm" y="0mm"/> 
        <rect height="22.1781mm" width="1mm" x="19mm" y="0mm"/> 
        <rect height="22.1781mm" width="0.5mm" x="21.5mm" y="0mm"/> 
        <rect height="22.1781mm" width="2mm" x="22.5mm" y="0mm"/> 
        <rect height="22.1781mm" width="1.5mm" x="25mm" y="0mm"/> 
        <rect height="22.1781mm" width="1mm" x="27mm" y="0mm"/> 
        <rect height="22.1781mm" width="1.5mm" x="28.5mm" y="0mm"/> 
        <rect height="22.1781mm" width="0.5mm" x="31mm" y="0mm"/> 
        <rect height="22.1781mm" width="1.5mm" x="32.5mm" y="0mm"/> 
        <rect height="22.1781mm" width="0.5mm" x="34.5mm" y="0mm"/> 
        <rect height="22.1781mm" width="1mm" x="35.5mm" y="0mm"/> 
        <rect height="22.1781mm" width="1mm" x="38mm" y="0mm"/> 
        <rect height="22.1781mm" width="1.5mm" x="40.5mm" y="0mm"/> 
        <rect height="22.1781mm" width="0.5mm" x="42.5mm" y="0mm"/> 
        <rect height="22.1781mm" width="1mm" x="43.5mm" y="0mm"/> 
        <text 
          style="font-family:Helvetica; 

font-size:8.0pt; 

text-anchor:middle" 
          x="24.75mm" 
          y="24.4356mm" 
          startOffset="0" > 
                12345 
        </text> 
</g> 
</svg> 

SECTION 07 结论 

目前我们所见到的都是属于一维条形码, 未来希望能够看到二维甚至多维条形码的制作或是 其它 opensource 能够出现. 当然, 如果你们有特别制作特殊的条形码格式, 或 是有一些比较冷僻的条形码标准不在这两个项目中, 希望你能够加入他们的开发工程.. 感谢这么多愿意默默付出的工程师们, 相较之下, 自己非常的渺小
jarspertreport6.3解决barbecue1.5 linxu服务器中打印条码无法显示数字 开发时在windows下正常 但在linux下不正常条码下的“012345679”没有打印出来 看了下barbecu的源代码,发现是由于linux服务器是非图形化界面,导致Toolkit.getDefaultToolkit().getScreenResolution();获取每英寸的像素点时抛出了异常 但是源代码中又吧异常捕获住了。 private static void de... 阅读详情

相关推荐

JavaScript控制打印机打印条形码----条形码产生部分

    要真正的要用b/s架构实现web打印,相了很长时间。总算实现了。但还是有些小问题。跟大家共享一下        首先实现条形码的部分     我首先采用的是java做后台的web project。即将生成条形码的功能在后台实现,后台再将产生的条形码返回到前台显示。在这里我主要用了两个框架        第一种:barbecue-1.5-beta1    整個ja

疯狂的代码 5717

制作条码(barcode)

条形码制作- barbecue 及 krysalis-barcode SECTION 01 Barbecue #BSD License# , 目前版本 1.0.6 RC1, 由此下载 binary/source 文件 Barbecue 这个 opensource 项目使用 java 制作了一些 barcode 的格式, 只需要通过简单又具有弹性的 java api

Mydwr的专栏 4299

barbecue生成条形码

用java生成条形码(不带其它商标)

java 条形码_java条形码的生成与扫描

import java.awt.BorderLayout;import java.awt.Component;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java...

weixin_36169520的博客 573

java实现barbecue生成带+号的条码

barbecue.BarcodeServlet中默认不能实现带+号的barcode,此工具类可以试下带加号的barcode

barbecue条形码生成文档

用JAVA显示各种规格的条形码(18种),打印后可以被扫描设备扫描,具体方法看文档 1.需要一个jar包的支持,这里用的是barbecue-1.5-beta1.jar; 2.接下来就可以编写相关程序; 3.Web中生成条形码程序,在web.xml中加入如下Servlet配置信息: 4.编写JSP页面 5.条形码码的一些相关参数如下

转条形码制作

转自www.alibubu.com 本周主题 -- 条形码制作- barbecue 及 krysalis-barcode SECTION 00 简介 记得我在大学的时候, 去大众计算机实习工读, 那 时候在工业管理部门, 那时候我仅是呆呆笨笨的学生, 他们跟我说要我学 习 clipper 去印制条形码, 朦胧无知的我就乖乖地学习 clipper 艰深难懂完全 没有对象...

185

防火墙断网后Adobe软件还弹窗“THIS APP HAS BEEN DISABLED”?原来是科学上网导致的问题!用这个简单方法一键解决!

很多小伙伴在使用上网工具的时候时,突然遇到Adobe弹出“THIS APP HAS BEEN DISABLED”的烦人提示,这个非正版弹窗真的让人头疼!即使你之前尝试过,有时也不奏效,究其原因,原来是因为你使用了代理网络,这时Adobe的流量并不是走本地,而是走代理,导致防火墙的拦截无效。不用慌!今天我来教大家如何通过上网工具,轻松禁用Adobe验证的联网流量,彻底解决这个问题!

qq_34093397的博客 3万+

jsp页面打印条形码

因工作需要,需要jsp页面显示生成条形码.在网上查了下,找到一开源工具barbecue从下面的地址下载http://sourceforge.net/projects/barbecue/将 barbecue-1.5-beta1.jar 放入工程下的 WEB_INFO\lib目录里在工程的web.xml里增加 servlet映射文件 &lt;servlet&gt; &lt;servlet-n...

wuy13862574600的专栏 404

用Proteus8.9自带STM32F401VE的Controller仿真STM32F407ZGT6,F429IGT6

@用Proteus8.9自带STM32F401VE的Controller仿真STM32F407ZGT6,F429IGT6 一, 目前得到的 Proteus8.9版本软件能够支持的Cortex-M4固件库项目,只能到达STM32F401VE (如下图1所示)。 (图1) 作为ST公司Cortex-M4更为广泛应用的F407,F429系列芯片;现在的Proteus8.9版本软件还没有固件库支持,不能...

kaillen的博客 3万+

GmSSL国密双证书实战:从生成到Nginx配置全流程

本文详细介绍了使用GmSSL工具生成国密双证书(签名证书与加密证书)并配置Nginx支持国密HTTPS(TLCP协议)的全流程。内容涵盖环境准备、自签CA创建、服务器双证书生成、Nginx单向/双向认证配置以及兼容性处理,为部署符合国密标准的HTTPS服务提供实战指南。

weixin_29276847的博客 480

java条形码的生成与扫描

部分代码来自网上,所需jar包:barbecue-1.5-beta1.jar,jbarcode-0.2.8.jar import java.awt.BorderLayout; import java.awt.Component; import java.awt.event.KeyAdapte...

chuanwu8542的博客 495

OCS2 移动机械臂深度解析:ocs2_mobile_manipulator 与 ocs2_mobile_manipulator_ros 源码全拆解

摘要:本文深入解析OCS2移动机械臂MPC控制框架的两个核心工具包。ocs2_mobile_manipulator负责算法建模,通过MobileManipulatorInterface统一构建最优控制问题,支持4种机械臂模型并实现自动维度推导;ocs2_mobile_manipulator_ros负责ROS集成,包含MPC求解、虚拟跟踪等4个核心节点。文章详细剖析了工具包分工、最优控制建模架构(含动力学、代价约束设计)、ROS运行管线、参数配置映射,并提供了高效的源码阅读顺序建议,帮助开发者快速掌握移动机械

m0_73309445的博客 655

Java生成条形码给前端,使用什么来生成将合并动态生成的条形码(Java)的pdf文档?...

My requirements ask for generating pdf documents that contain both arbitrary text and barcodes. I have related question that addresses pdf generation part, but here I'd like to know about how to incor...

weixin_33059693的博客 248

任务混部最少服务器数量计算问题

这里的并行度指的是该任务运行时会占用的服务器数量。要注意的是,一个服务器在每个时刻可以被任意任务使用,但同一时刻最多只能被一个任务占用,并且任务运行结束后会立即释放服务器(结束时刻不占用)。最后,我们从字典中找出服务器数量的最大值,这个最大值就是完成这批任务混部最少需要的服务器数量。对于每个任务,我们会遍历其对应的时间区间,将该任务的并行度累加到对应时刻的服务器数量上。任务混部的目标是让这批任务由同一批服务器承载运行,你需要计算完成这批任务混部最少需要多少服务器,以此来最大化控制资源成本。

m0_62153576的博客 108

【温室气体数据集】全球总碳柱观测网络 TCCON

【温室气体数据集】全球总碳柱观测网络 TCCON

WW、forever的博客 437

jsp打印条形码

将 barbecue-1.5-beta1.jar 放入工程下的 WEB_INFO/lib目录里 在工程的web.xml里增加 servlet映射文件 参数解释 data=123456789 要生成条形码的字符 type=Code39   表示是code39码 ,条形码类型 width 表示生成的条形码的宽度 height=20 表示生成的条形码的高度 使用稍微需要注意一点的是 条形码下面是否同时显示条形码内容.下面这几句话是设置方法 headless true

` 3888

STM32G431的 FDCAN使用5M加速时,出现奇葩问题,如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1641

(转别人的)条形码

转自www.alibubu.com 本周主题 -- 条形码制作- barbecue 及 krysalis-barcode SECTION 00 简介 记得我在大学的时候, 去大众计算机实习工读, 那 时候在工业管理部门, 那时候我仅是呆呆笨笨的学生, 他们跟我说要我学 习 clipper 去印制条形码, 朦胧无知的我就乖乖地学习 clipper 艰深难懂完全 没有对象导向的语法, 不...

EJB_wawa 252

2026年全国青少年信息素养大赛算法应用主题赛C++样题及答案解析

2026年全国青少年信息素养大赛算法应用主题赛C++样题

王老师青少年编程 3724

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

条形码生成的开源代码

java 常用的是barbecue和barcode4j,另外还有一个是jbarcodebean,barbecue(1.5beta)在显示条码文本的时候下面多了一条黑色的 横线,barcode4j据说比较好用,但是我没有用过,我用的是jbarcodebean,看说明,3个条码库的用法都差不多,都是通过一个 servlet返回一幅图片,在应用的时候调用这个servlet,并显示和打印图像,j...

weixin_33850890的博客 562

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java生成USPS条形码

1.引入依赖 <dependency> <groupId>net.sourceforge.barbecue</groupId> <artifactId>barbecue</artifactId> <version>1.5-beta1</version> </dependency> 2.使用UCCEAN128Barcode打印USPS条形码 import java.io.FileOutputStre

luo381821的博客 706

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

barbecue生成二维码,比barcode4J要好一些,还可以直接生成在本地

1.将 barbecue-1.5-beta1.jar 放入工程下的 WEB_INFO\lib目录里。 2.在工程的web.xml里增加 servlet映射文件。 BarcodeServlet net.sourceforge.barbecue.BarcodeServlet BarcodeServlet /barcode 3.jsp页面添加。 /barc

bonlog的专栏 6114

一维条形码解码java,如何扫描条形码并解码。并使用java swing在jtextbox中获取解码值...

I have used barbecue 1.5 api for creating code 128 barcode and saving them in database as well as printing them.Now please tell me how can i read that barcode and comapare with the value stored in dat...

weixin_42518334的博客 259
上一篇: ActionScript® 3.0 Reference for the Adobe® Flash® Platform下載
下一篇: barcode4j的使用
lsrmake
博客等级 码龄18年 5粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值