java打印插件_怎样使用C-Lodopa插件打印本地图片(Java)

首先,是接到了一个在web端打印图片的需求。因为我前端使用Jsp,网上查到jsp页面不能够直接引用本地文件夹中的文件。所以只能另寻他法。

从C-Lodopa客服发的官方样例38了解到,C-Lodopa可以直接打印base64编码的图片,所以后端如下

@RequestMapping("/readImg")

@ResponseBody

public String readImg(HttpServletRequest request,HttpServletResponse response) throws IOException,ParseException {

String jpgPath = "输入你的图片路径";

byte[] data = null;

//读取图片

BufferedInputStream in = new BufferedInputStream(new FileInputStream(jpgPath));

//字节流转图片对象

Image bi =ImageIO.read(in);

//获取图像的高度,宽度

int height=bi.getHeight(null);

int width =bi.getWidth(null);

//构建图片流

BufferedImage tag = new BufferedImage(width / 4, height / 4,

BufferedImage.TYPE_INT_RGB);

//绘制改变尺寸后的图

tag.getGraphics().drawImage(bi, 0, 0,width / 4, height / 4, null);

//转字节流

ByteArrayOutputStream out = new ByteArrayOutputStream();

ImageIO.write(tag, "jpg",out);

//InputStream is = new ByteArrayInputStream(out.toByteArray());

data = out.toByteArray();

// 对字节数组Base64编码

BASE64Encoder encoder = new BASE64Encoder();

String img = encoder.encode(data).replaceAll("\r\n|\r|\n", "");

return img;

}

前端代码如下:

function printDraw(){

var LODOP;

LODOP = getLodop();

LODOP.SET_PRINT_PAGESIZE(1,0,0,"A1");

$.ajax({

type: 'post',

async: false,

data: {},

url: "${pageContext.request.contextPath}/F09/readImg",//方法路径

success: function (data1) {

debugger

if (data1 != null) {

var a = data1.replace(/\"/g, '');

LODOP.ADD_PRINT_IMAGE("5mm","5mm","190mm","350mm","data:image/jpg;base64,"+a);

}

}

})

LODOP.PREVIEW();

}

上过代码之后,说一下我在编写此段代码中遇到的坑。

首先是在后台转换base64编码后,打印图片会报错

查看前台的base64编码

发现前台读取后竟然多了很多“\t\n”,于是在后台代码中添加了

String img = encoder.encode(data).replaceAll("\r\n|\r|\n", "");

本来想这样肯定可以打出图片来,但是按过打印按钮以后,发现虽然插件没报错,但是打印出来的还是一张白纸。

经过一些图片的替换后,原来是图片尺寸过大,无法完全显示。之后又加上以下代码:

//获取图像的高度,宽度

int height=bi.getHeight(null);

int width =bi.getWidth(null);

//构建图片流

BufferedImage tag = new BufferedImage(width / 4, height / 4,

BufferedImage.TYPE_INT_RGB);

//绘制改变尺寸后的图

tag.getGraphics().drawImage(bi, 0, 0,width / 4, height / 4, null);

将图片缩小。

这回终于可以正常的打印图片了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值