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之後沒問題了。

相關文章
相關標籤/搜索