使用到的lib包是jasperreports6.3 + barbecue-1.5
最近碰到的一个坑,在windows下打印出来的含有条码的pdf完全正常,如图所示
但是把程序部署到linux下之后 条码下的“012345679”就打印不出来了。
最后看了下barbecue的源代码,发现原因是由于linux下是以为jvm平台差异的原因。
linux服务器没有安装图形化界面,导致Toolkit.getDefaultToolkit().getScreenResolution()抛出异常,此句代码barbecue的EnvirementFactory调用的,是用来
获取每英寸像素点的个数,以便用来draw出来条形码和条形码下的数字
源码如下:
/**
* Returns the environment determined resolution for
* outputting barcodes.
* @return The resolution for the environment
*/
public int getResolution() {
return Toolkit.getDefaultToolkit().getScreenResolution();
}
private static void determineCurrentEnvironment() {
Environment current;
if (defaultEnvironment != null) {
current = defaultEnvironment;
} else {
current = new DefaultEnvironment();
}
try {
// Try to get the res, this will fail in headless mode
current