我尝试在独立的Java应用程序中使用BBQ条形码生成器,并且能够打印具有条形码编号的条形码,如图所示。



但是,当我从Spring Web应用程序执行相同的方法时,生成的条形码未显示下图所示的条形码编号。我正在使用相同的文件路径来保存图像,并对目录具有完全的读写权限。您对此有任何线索吗,谢谢



我正在使用下面的代码片段

barcode = BarcodeFactory.createCode128A(barcode_Id);
File f = new File("/opt/rd/barcode/"+barcode_Id+".png");
BarcodeImageHandler.savePNG(barcode, f);

最佳答案

我已经在Grails中为条形码设置字体并覆盖Barcode中的computeSize()方法,解决了此问题:

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中的This thread可以进一步阐明该问题。

08-03 21:10