首先,是接到了一个在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);

将图片缩小。

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

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

  1. 组件 模块 插件_播放2 –模块,插件有什么区别?

    组件 模块 插件 关于Play 2模块和插件似乎有些困惑. 我想这是因为两者经常是同义词. 在Play(两个版本-1和2)中,存在明显的差异. 在本文中,我将研究什么是插件,如何在Java和Scala ...

  2. ai二维码插件_超实用的AI脚本插件合集2.0免费分享,让你的设计快人一步

    AI脚本插件合集2.0版,除了更新部分插件以及增加几款新插件外,还支持AI CC 2019了.此AI插件包目前有62款ai脚本插件,已经整合成插件面板的形式,方便在AI中调用 AI脚本插件合集说明 A ...

  3. python使用rpa需要什么插件_使用Python制作ArcGIS插件基础篇——工具介绍

    ArcGIS从10.0开始支持addin(ArcGIS软件中又叫作加载项)的方式进行插件制作.相对于以往9.x系列,addin的无论是从使用或者编写都更加方便快捷.通过开发语言,可以制作ArcGIS ...

  4. 实用插件_这些实用的PR插件你知道吗?

    学习PR,安装使用插件必定是绕不开的过程.一款强大的插件可以节省剪辑时间,极大的提高工作效率. 常见的视频插件类型想必大家都知道,无非是包括调色.降噪.字幕.特效四种. 调色:Magic Bullet ...

  5. python处理ppt的插件_几款PPT神器插件,千万不能错过!

    本文首发于公众号"干货plus" 虽然说本身PPT的功能就已经很强大了,但是,如果借助一些官方或非官方的PPT插件,就能快速制作高逼格的PPT,十分节省时间,无论是上班一族还是学生 ...

  6. mysql 半同步 插件_编写半同步复制插件

    编写半同步复制插件 本节介绍如何使用plugin/semisyncMySQL源代码分发目录中的示例插件编写服务器端半同步复制插件.该目录包含名为rpl_semi_sync_master和的主插件和从插 ...

  7. java syn包_月薪3K的后端面试点-网络与Java

    网络基础 传输控制协议TCP简介 面向连接的.可靠的.基于字节流的传输层通信协议 将应用层的数据流分割成报文段并发送给目标节点的TCP层 数据包都有序号,对方收到则发送ACK确认,未收到则重传 使用校 ...

  8. cad批量打印快捷键_原来CAD还能这么打印?批量打印了解一下?1分钟打印100张...

    我们在CAD中绘制完图纸之后,最重要的一步就是要把图纸打印出来啦,不过小伙伴们总是在打印的时候遇到各种各样的问题,也为此困惑了很久,那么,在CAD中打印有什么技巧呢?今天小编就大家经常遇到的几个问提, ...

  9. c4d python 插件_好用的C4D插件都在这里了,还不赶紧收藏起来?

    学C4D少不了插件,有关C4D软件的插件实在是太多太多了,下面整理了一些常用的比较酷炫的分享给大家.[找不到插件的小伙伴可以见文章末尾!!!] 一.Signal Signal是GSG出品的一款C4D程 ...

最新文章

  1. 微信支付invalid total_fee 的报错
  2. 【问题】14500充电锂电池电量问题及测试方案
  3. C语言再学习 -- 随机数函数
  4. SuperMap.IS.AjaxScript缓冲区分析及专题图制作
  5. 【CSS3】-webkit-margin-before与margin-top
  6. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1108:向量点积计算
  7. java中如何调用dal接口案例_关于Java:接口的目的
  8. 不定期更新的IDEA功能整理
  9. 29 上传下载 socketserve
  10. WebForm控件多字段绑定
  11. 14.高性能MySQL --- 应用层优化
  12. Linux串口驱动分析write
  13. (原创)巧用通道作颜色网
  14. html底部友情链接代码,wordpress友情链接添加到页面底部的方法
  15. 关于Matplotlib作图时中文字体无法显示问题
  16. scrapy 抓取豆瓣Top250书籍信息
  17. 开关电源学习笔记7 --- DC-DC变换器的储能电感设计之磁芯及气隙
  18. 2018秋季阿里实习生面试总结
  19. module 与 component 的区别
  20. 随机数rand和srand的用法

热门文章

  1. Java编程中的注意点
  2. Java控制台打印爱心算法(今典算法案例)
  3. 锐龙4000系列运行matlab,修复了!AMD锐龙运行Matlab恢复正常,性能提升60%
  4. android 无障碍的菜单,讯飞输入法Android V9.1.9652 菜单及表情适配无障碍模式
  5. 新西兰打工度假指南之 学历证明
  6. Linux下的C编程实战(开发平台搭建,文件系统编程,进程控制与进程通信编程,“线程”控制与“线程”通信编程,驱动程序设计,专家问答)
  7. 《哪吒》导演,被动画“耽误”的项目经理
  8. Linux网络原理与编程——第十一节 网络基础及套接字
  9. mysql建表 时间_mysql建表的时候,时间戳的选用
  10. HTML列宽调整,调整表格中的列宽(CSS/HTML)