barcode4j使用自定义字体生成条形码

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

需求的产生: ide

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

可是ocr-b不是系统自带字体 因此软件中要手动加载字体 spa


方案: 指针

我如今的作法是修改barcode4j的源码 加载本身的字体   关键代码以下: code

修改类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。 资源


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

------------------- 源码

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之后没问题了。

相关文章
相关标签/搜索