条形码的打印效果如下图:

想实现上面的这种打印输出(内容可以自己设定),大概需要三大步。

第一步:选择jar包(其实实现条形码可以有多个方式,这里讲述下我最熟悉的);采用barcode4j这个jar包。

第二步:采用barcode4j来生成image流,即生成条形码。这个是核心步骤。下面我就来具体来说说这个步骤。废话不多说,先上传  这个方法吧。(可能写的不够简洁,但能实现基本功能,有余力的话可以继续改进哈)

1.核心类Code128Bean(有兴趣的小伙伴可以查看源码).   Code128Bean bean = new Code128Bean();

首先是设置宽度,一般为1.0/150或者1.0/200.大家可以根据自己的具体调试。

final double moduleWidth = UnitConv.in2mm(1.0f / 150);

bean.setModuleWidth(moduleWidth);

其次是设置条形码高度  根据纸张的大小等具体调试(调试出最适合自己的)

     bean.setBarHeight(hight);//hight为int型参数。

然后是设置条形码下面输出的内容的字体大小(例如上面图中的 201-1-2-1-1)

   bean.setFontSize(font);//font参数类型为Font类型,不懂Font类型的可以百度或者pdfp打印(博客)上面有使用

再然后就是设置条形码下字体的位置(比如靠左,居中,靠右等)  

  bean.setMsgPosition(HumanReadablePlacement.HRP_BOTTOM);//方法名很好理解

最后一步也是最关键的,涉及到核心类  BitmapCanvasProvider(本人了解不多)。主要代码如下,稍作讲解:

ByteArrayOutputStream out = null;
         try {
            out = new ByteArrayOutputStream();
            BitmapCanvasProvider canvas = new BitmapCanvasProvider(out,
                    "image/png", pdi, 12, true, 0);

bean.generateBarcode(canvas, barCode);
            canvas.finish();

 canvas为bean生成条形码参数.

其中   BitmapCanvasProvider canvas = new BitmapCanvasProvider(out,  "image/png", pdi, 12, true, 0);中,pdi是关键

是条形码的精度设置,我做的时候测试了n遍。最终发现大点会好点。给个参考吧(400起步最好,自己慢慢调试)

然后基本条形码的字节流就生成了。代码如下:

private static byte[] genBarCodeJpg(String barCode,int pdi,int hight,int font) {Code128Bean bean = new Code128Bean();// module宽度final double moduleWidth = UnitConv.in2mm(1.0f / 150);System.out.println(moduleWidth);// 样式bean.setModuleWidth(moduleWidth);bean.doQuietZone(false);//两边空白区bean.setBarHeight(hight);bean.setQuietZone(2);bean.setFontSize(font);// 两边空白区bean.setFontName("Helvetica");bean.setMsgPosition(HumanReadablePlacement.HRP_BOTTOM);ByteArrayOutputStream out = null;try {out = new ByteArrayOutputStream();BitmapCanvasProvider canvas = new BitmapCanvasProvider(out,"image/png", pdi, 12, true, 0);bean.generateBarcode(canvas, barCode);canvas.finish();return out.toByteArray();} catch (Exception e) {e.printStackTrace();} finally {try {if (out != null)out.close();} catch (IOException e) {e.printStackTrace();}}return null;}

第三步(也很重要,里面有几个坑,我踩过了,大家可以跳过去了)

                             byte[] genBarCodeJpg = genBarCodeJpg(result,1000,3,1);//接收上面方法的返回值。注意几个参数,上面有描述
                                Image image= Image.getInstance(genBarCodeJpg);
                                image.scalePercent(18);//18根据自己的需要调节
                                PdfPCell barcode = new PdfPCell(image);//采用pdf将其输出
                                barcode.setBorderWidth(0);   //将边框去掉。必须设置(不然扫码的时候边框会对条形码产生干扰)
                                barcode.setHorizontalAlignment(Element.ALIGN_CENTER);//居中
                                tableOne.addCell(barcode); 

基本就这些,pdf打印不太了解的可以查看我的pdfp博客

:https://blog.csdn.net/echohuangshihuxue/article/details/80874429

条形码的打印,pdf打印条形码相关推荐

  1. c++ byte转cbitmap_关于 C++ 打印 PDF 打印及 PDF 转图片、合并

    关于 C++ 打印 PDF 打印及 PDF 转图片.合并 原文: http://www.aqcoder.com/post/42 pdf(Portable Document Format 的简称,意为& ...

  2. 打印PDF(打印外访单)

    jsp: <div class='form-group mini-form-group col-sm-12 '><div class='row col-sm-6 mini-div'& ...

  3. winfrom 实现条形码批量打印以及将条形码信息生成PDF文件

    最近,老大让给客户做个邮包管理程序.其中,包括一些基本信息的增.删.查和改,这些倒不是很难搞定它分分钟的事.其主要难点就在于如何生成条形码.如何批量打印条形码以及将界面条形码信息批量生成以其各自的 b ...

  4. winfrom 实现条形码批量打印以及将条形码信息生成PDF文件

    最近,老大让给客户做个邮包管理程序.其中,包括一些基本信息的增.删.查和改,这些倒不是很难搞定它分分钟的事.其主要难点就在于如何生成条形码.如何批量打印条形码以及将界面条形码信息批量生成以其各自的 b ...

  5. C#-利用ZPL语言完毕条形码的生成和打印

     近期由于公司项目的须要,研究了一项对我来说算是新的技术-条形码的生成和打印.由于之前没有接触过这方面的知识,所以刚開始还有点小迷茫和小兴奋,只是一步一步来,问题总会解决的.如今来总结一下做条形码 ...

  6. 如何在A4纸上打印连续的条形码

    大家是不是会这样认为:只要是条码标签就应该打印在不干胶标签纸上,其实不然.很多用户是需要打印在A4纸上使用的.今天小编就给大家介绍如何在A4纸上打印连续的条形码. 首先打开软件,新建一个标签页面,设置 ...

  7. 记录一次java生成条形码并调用打印机打印

    生成条形码需要ja坐标: <!--生成条形码--><dependency><groupId>net.sf.barcode4j</groupId>< ...

  8. 【C#】最全单据打印(打印模板、条形码二维码、字体样式、项目源码)

    系列文章 [C#]编号生成器(定义单号规则.固定字符.流水号.业务单号) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/12912978 ...

  9. C#-利用ZPL语言完成条形码的生成和打印

     最近因为公司项目的需要,研究了一项对我来说算是新的技术-条形码的生成和打印.因为之前没有接触过这方面的知识,所以刚开始还有点小迷茫和小兴奋,不过一步一步来,问题总会解决的.现在来总结一下做条形码 ...

最新文章

  1. 双系统(xp+ubuntu)删除ubuntu(好用)
  2. 猛男把400+条猫咪叫声做成数据集,可识别猫咪的3种不同状态丨开源
  3. ABAP 时间月份的F4帮助
  4. 【java.lang.UnsupportedClassVersionError】版本不一致出错
  5. gRaphael——JavaScript 矢量图表库:两行代码实现精美图表
  6. uva 1476 - Error Curves
  7. mysql使用主从复制迁移,[MySQL进阶之路][No.0003] 主从复制(Replication)在运维中的运用...
  8. 对pthread_create未定义的引用
  9. 大数据到底有多大,人工智能到底有多能
  10. python 多线程 popen ping指定IP是否在线 判断连通
  11. 单例模式 java 实现_单例模式
  12. NASA的10条代码编写原则
  13. 为什么至今为止有些人的电脑系统还在使用XP?
  14. fpga从入门到放弃(一)基于vivado2018环境开发板Artix 7系列BASYS3(更新中)
  15. Qt 实现Windows系统Win10 c++音量调节
  16. 十大网站压力测试软件-- WEB压力测试工具介绍
  17. 如何在SSH项目中布置多个定时任务?
  18. Runtime Error! R6025-pure virtual function call 问题怎么解决
  19. linux转置的命令,转置文件(awk)
  20. 《CSS揭秘》-总结47个Css技巧(一):常用的背景与边框技巧

热门文章

  1. 自动驾驶技术综述1:自动驾驶算法软件架构介绍
  2. java语言的Dao层设计(一)—— Dao层基本结构设计
  3. 跨国企业在中国 | 德国马夸特在华第二家工厂威海开业;格兰富水环境治理体验中心落户福州...
  4. 服务器同步电脑文件夹在哪,把文件同步到服务器上
  5. CNN实现手写0-9数字识别
  6. 含有受控源的电路分析
  7. Yahoo,Msn,Skype,QQ,阿里旺旺在线聊天链接接口调用
  8. 【通信原理】六、数字基带传输系统
  9. opencv中Mat究竟是什么?
  10. 记录M1Mac基础的Command快捷键