条形码的打印,pdf打印条形码
条形码的打印效果如下图:
想实现上面的这种打印输出(内容可以自己设定),大概需要三大步。
第一步:选择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打印条形码相关推荐
- c++ byte转cbitmap_关于 C++ 打印 PDF 打印及 PDF 转图片、合并
关于 C++ 打印 PDF 打印及 PDF 转图片.合并 原文: http://www.aqcoder.com/post/42 pdf(Portable Document Format 的简称,意为& ...
- 打印PDF(打印外访单)
jsp: <div class='form-group mini-form-group col-sm-12 '><div class='row col-sm-6 mini-div'& ...
- winfrom 实现条形码批量打印以及将条形码信息生成PDF文件
最近,老大让给客户做个邮包管理程序.其中,包括一些基本信息的增.删.查和改,这些倒不是很难搞定它分分钟的事.其主要难点就在于如何生成条形码.如何批量打印条形码以及将界面条形码信息批量生成以其各自的 b ...
- winfrom 实现条形码批量打印以及将条形码信息生成PDF文件
最近,老大让给客户做个邮包管理程序.其中,包括一些基本信息的增.删.查和改,这些倒不是很难搞定它分分钟的事.其主要难点就在于如何生成条形码.如何批量打印条形码以及将界面条形码信息批量生成以其各自的 b ...
- C#-利用ZPL语言完毕条形码的生成和打印
近期由于公司项目的须要,研究了一项对我来说算是新的技术-条形码的生成和打印.由于之前没有接触过这方面的知识,所以刚開始还有点小迷茫和小兴奋,只是一步一步来,问题总会解决的.如今来总结一下做条形码 ...
- 如何在A4纸上打印连续的条形码
大家是不是会这样认为:只要是条码标签就应该打印在不干胶标签纸上,其实不然.很多用户是需要打印在A4纸上使用的.今天小编就给大家介绍如何在A4纸上打印连续的条形码. 首先打开软件,新建一个标签页面,设置 ...
- 记录一次java生成条形码并调用打印机打印
生成条形码需要ja坐标: <!--生成条形码--><dependency><groupId>net.sf.barcode4j</groupId>< ...
- 【C#】最全单据打印(打印模板、条形码二维码、字体样式、项目源码)
系列文章 [C#]编号生成器(定义单号规则.固定字符.流水号.业务单号) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/12912978 ...
- C#-利用ZPL语言完成条形码的生成和打印
最近因为公司项目的需要,研究了一项对我来说算是新的技术-条形码的生成和打印.因为之前没有接触过这方面的知识,所以刚开始还有点小迷茫和小兴奋,不过一步一步来,问题总会解决的.现在来总结一下做条形码 ...
最新文章
- 双系统(xp+ubuntu)删除ubuntu(好用)
- 猛男把400+条猫咪叫声做成数据集,可识别猫咪的3种不同状态丨开源
- ABAP 时间月份的F4帮助
- 【java.lang.UnsupportedClassVersionError】版本不一致出错
- gRaphael——JavaScript 矢量图表库:两行代码实现精美图表
- uva 1476 - Error Curves
- mysql使用主从复制迁移,[MySQL进阶之路][No.0003] 主从复制(Replication)在运维中的运用...
- 对pthread_create未定义的引用
- 大数据到底有多大,人工智能到底有多能
- python 多线程 popen ping指定IP是否在线 判断连通
- 单例模式 java 实现_单例模式
- NASA的10条代码编写原则
- 为什么至今为止有些人的电脑系统还在使用XP?
- fpga从入门到放弃(一)基于vivado2018环境开发板Artix 7系列BASYS3(更新中)
- Qt 实现Windows系统Win10 c++音量调节
- 十大网站压力测试软件-- WEB压力测试工具介绍
- 如何在SSH项目中布置多个定时任务?
- Runtime Error! R6025-pure virtual function call 问题怎么解决
- linux转置的命令,转置文件(awk)
- 《CSS揭秘》-总结47个Css技巧(一):常用的背景与边框技巧