java 根据条码字体_barcode4j使用自定义字体生成条形码

本文介绍了如何在Java中利用barcode4j库生成使用自定义字体(非系统自带的OCR-B字体)的条形码。通过修改barcode4j源码,加载指定的字体资源文件,从而实现对字体的定制。在生成条形码图片时,可以指定fontName参数,确保生成的条形码符合特定字符集标准。文章还提到了在打包成jar时需要注意的资源路径问题及其解决方案。
摘要由CSDN通过智能技术生成

适用读者:用barcode4j生成自定义字体(非系统自带的字体)的条形码; java生成图片

需求的产生:

生成条形码图片的时候 生成的字体有指定的标准的 必须使用OCR-B 10 BT.ttf字符集

但是ocr-b不是系统自带字体 所以软件中要手动加载字体

方案:

我现在的做法是修改barcode4j的源码 加载自己的字体   关键代码如下:

修改类org.krysalis.barcode4j.output.java2d.Java2DCanvasProvider#deviceText:

Font font = null;

if("OCR-B".equalsIgnoreCase(fontName)) {

try {

String path = Java2DCanvasProvider.class.getResource("OCR-B 10 BT.ttf").toURI().getPath();

font = Font.createFont(Font.TRUETYPE_FONT, new File(path));

font = font.deriveFont(Font.BOLD, (int)Math.round(fontSize)); // 粗体比Font.PLAIN清晰

} catch (Exception e) {

e.printStackTrace();

}

} else {

font = new Font(fontName, Font.PLAIN, (int)Math.round(fontSize));

}

//Font font = new Font(fontName, Font.PLAIN, (int)Math.round(fontSize)); // 之前的代码

注意:字体资源文件OCR-B 10 BT.ttf在同级目录下;  fontName为生成图片传的参数。生成条形码的时候可以指定fontName。

写的比较马虎 这里仅仅是一个思路吧

-------------------

2013-02-04 修改

String path = Java2DCanvasProvider.class.getResource("OCR-B 10 BT.ttf").toURI().getPath();

font = Font.createFont(Font.TRUETYPE_FONT, new File(path));

如果需要重新打jar包,这个代码会报错滴。如果是直接把源码放在项目里没问题。

报错是因了path是指向了jar里面的字体资源文件。最后得到的物理路径找不到。new File(path)的时候会报空指针异常。

这地方可以改写成

InputStream is = Java2DCanvasProvider.class.getResourceAsStream("OCR-B 10 BT.ttf");

font = Font.createFont(Font.TRUETYPE_FONT, is);

这样打成jar以后没问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值