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);
将图片缩小。
这回终于可以正常的打印图片了!
java打印插件_怎样使用C-Lodopa插件打印本地图片(Java)相关推荐
- 组件 模块 插件_播放2 –模块,插件有什么区别?
组件 模块 插件 关于Play 2模块和插件似乎有些困惑. 我想这是因为两者经常是同义词. 在Play(两个版本-1和2)中,存在明显的差异. 在本文中,我将研究什么是插件,如何在Java和Scala ...
- ai二维码插件_超实用的AI脚本插件合集2.0免费分享,让你的设计快人一步
AI脚本插件合集2.0版,除了更新部分插件以及增加几款新插件外,还支持AI CC 2019了.此AI插件包目前有62款ai脚本插件,已经整合成插件面板的形式,方便在AI中调用 AI脚本插件合集说明 A ...
- python使用rpa需要什么插件_使用Python制作ArcGIS插件基础篇——工具介绍
ArcGIS从10.0开始支持addin(ArcGIS软件中又叫作加载项)的方式进行插件制作.相对于以往9.x系列,addin的无论是从使用或者编写都更加方便快捷.通过开发语言,可以制作ArcGIS ...
- 实用插件_这些实用的PR插件你知道吗?
学习PR,安装使用插件必定是绕不开的过程.一款强大的插件可以节省剪辑时间,极大的提高工作效率. 常见的视频插件类型想必大家都知道,无非是包括调色.降噪.字幕.特效四种. 调色:Magic Bullet ...
- python处理ppt的插件_几款PPT神器插件,千万不能错过!
本文首发于公众号"干货plus" 虽然说本身PPT的功能就已经很强大了,但是,如果借助一些官方或非官方的PPT插件,就能快速制作高逼格的PPT,十分节省时间,无论是上班一族还是学生 ...
- mysql 半同步 插件_编写半同步复制插件
编写半同步复制插件 本节介绍如何使用plugin/semisyncMySQL源代码分发目录中的示例插件编写服务器端半同步复制插件.该目录包含名为rpl_semi_sync_master和的主插件和从插 ...
- java syn包_月薪3K的后端面试点-网络与Java
网络基础 传输控制协议TCP简介 面向连接的.可靠的.基于字节流的传输层通信协议 将应用层的数据流分割成报文段并发送给目标节点的TCP层 数据包都有序号,对方收到则发送ACK确认,未收到则重传 使用校 ...
- cad批量打印快捷键_原来CAD还能这么打印?批量打印了解一下?1分钟打印100张...
我们在CAD中绘制完图纸之后,最重要的一步就是要把图纸打印出来啦,不过小伙伴们总是在打印的时候遇到各种各样的问题,也为此困惑了很久,那么,在CAD中打印有什么技巧呢?今天小编就大家经常遇到的几个问提, ...
- c4d python 插件_好用的C4D插件都在这里了,还不赶紧收藏起来?
学C4D少不了插件,有关C4D软件的插件实在是太多太多了,下面整理了一些常用的比较酷炫的分享给大家.[找不到插件的小伙伴可以见文章末尾!!!] 一.Signal Signal是GSG出品的一款C4D程 ...
最新文章
- 微信支付invalid total_fee 的报错
- 【问题】14500充电锂电池电量问题及测试方案
- C语言再学习 -- 随机数函数
- SuperMap.IS.AjaxScript缓冲区分析及专题图制作
- 【CSS3】-webkit-margin-before与margin-top
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1108:向量点积计算
- java中如何调用dal接口案例_关于Java:接口的目的
- 不定期更新的IDEA功能整理
- 29 上传下载 socketserve
- WebForm控件多字段绑定
- 14.高性能MySQL --- 应用层优化
- Linux串口驱动分析write
- (原创)巧用通道作颜色网
- html底部友情链接代码,wordpress友情链接添加到页面底部的方法
- 关于Matplotlib作图时中文字体无法显示问题
- scrapy 抓取豆瓣Top250书籍信息
- 开关电源学习笔记7 --- DC-DC变换器的储能电感设计之磁芯及气隙
- 2018秋季阿里实习生面试总结
- module 与 component 的区别
- 随机数rand和srand的用法
热门文章
- Java编程中的注意点
- Java控制台打印爱心算法(今典算法案例)
- 锐龙4000系列运行matlab,修复了!AMD锐龙运行Matlab恢复正常,性能提升60%
- android 无障碍的菜单,讯飞输入法Android V9.1.9652 菜单及表情适配无障碍模式
- 新西兰打工度假指南之 学历证明
- Linux下的C编程实战(开发平台搭建,文件系统编程,进程控制与进程通信编程,“线程”控制与“线程”通信编程,驱动程序设计,专家问答)
- 《哪吒》导演,被动画“耽误”的项目经理
- Linux网络原理与编程——第十一节 网络基础及套接字
- mysql建表 时间_mysql建表的时候,时间戳的选用
- HTML列宽调整,调整表格中的列宽(CSS/HTML)