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

适用读者:用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以后没问题了。


你可能感兴趣的:(barcode4j,OCR-B)