需求
公司产品需要生成条形码并可以使用打印机清晰打印产品标签。最终效果类似下图
测试过程中使用的为TSC打印机。
遇到问题
起初查找了一些java条形码生成方案。毕竟常见的有Barcode4j、zxing等。由于都能达到目的且Barcode4j条形码相关内容代码更方便查找故选择了Barcode4j。下图为官网提供的demo。(注:不同的条码规格所对应的bean不同,图中为Code39,其中还有Code128等等。只需使用正确的Bean即可。)
起初测试使用hp打印机(平常打印纸张的打印机)并没有什么问题,内容也较为清楚。后来更换为TSC打印机(更为专业的条码打印机)后发现条码内容弯弯曲曲,扫码枪根本无法识别。
排查问题
首先排除打印机问题,因为打印机打印其它网站生成的条形码并没有问题(例如菜鸟打印、lodop等)。
最终打开菜鸟打印所生成的pdf查看发现条码内容为矢量图。而我们项目中生成的条形码为png格式图片,再将png条形码图片添加至itext pdf中,再将pdf输出值打印机中。
那么使用Barcode4j生成svg条形码并再将svg加入itext中是否能够解决问题?
经调试是可行的。
相关代码
Barcode4j生成svg条形码文件。
1 | /** |
itext添加svg文件(如果使用的是itext7 简单更代码7.0版本提供了方法,这里为itext5)
1 | /** |