我已经在 Grails 中解决了这个问题,为我的条形码设置字体并覆盖Barcode中的calculateSize()方法:
private Dimension calculateSize(){
Dimension d = new Dimension();
if(EnvironmentFactory.getEnvironment() instanceof HeadlessEnvironment)
try
{
if(font == null)
{
d = draw(new SizingOutput(font, getForeground(), getBackground()), 0, 0, barWidth, barHeight);
} else
{
java.awt.FontMetrics fontMetrics = getFontMetrics(font);
d = draw(new SizingOutput(font, fontMetrics, getForeground(), getBackground()), 0, 0, barWidth, barHeight);
}
}
catch(OutputException e)
{
e.printStackTrace();
}
else
try
{
java.awt.FontMetrics fontMetrics = null;
if(font != null)
fontMetrics = getFontMetrics(font);
d = draw(new SizingOutput(font, fontMetrics, getForeground(), getBackground()), 0, 0, barWidth, barHeight);
}
catch(OutputException e) { }
return d;
}
sourceforge 中的这个线程可以更清楚地说明这个问题。