jasperreports6.3中barbecue-1.5时在linux下打印条码无法显示条码数字drawText

在Linux服务器上,使用jasperreports6.3和barbecue-1.5库时,条码下的数字在打印时不显示。原因在于Linux服务器的无图形化界面导致Toolkit.getDefaultToolkit().getScreenResolution()异常。barbecue库捕获异常并使用HeadlessEnvironment,其默认字体为null。为解决这个问题,可以创建自定义Environment子类,设置合适的分辨率和默认字体,确保与jasperreports字体一致。
摘要由CSDN通过智能技术生成

使用到的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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值