最近遇到一个项目,需要用到较为复杂的打印功能,包括批量打印等。
目前来说,一般一个简单的详情页面打印,直接调用window.print就行了;
但遇到复杂的时候,我们可能会想到用集成好的控件来解决,当然,如果你有时间又不怕麻烦,你也可以自己写一堆js。
这里,我就先抛砖引玉对两个比较常用的打印控件谈谈自己的看法。
文中所述两个打印控件均为免费版本,收费版本另当别论。
一、jatoolsPrinter
jatoolsPrinter号称真正的免费,不加水印,不限IP,兼容IE6+等等;
下载地址:http://printfree.jatools.com/
jatoolsPrinter的部署很简单,可以简单分为3个步骤:
1.将控件引入到项目中
2.编写打印js
function doPrint(how)
{
//打印文档对象.
var myDoc ={
documents: document,
// 在同一页面中,有多个可打印文档,他们可以用page_div_prefix属性来区别
// page_div_prefix前缀+page+页序号 构成可打印div的id,
// 如前缀为 'report1' ,则找到以 'report1page1'为id的div作为文档首页
// 该属性,默认值为空
page_div_prefix: "report",
copyrights: '杰创软件拥有版权 www.jatools.com'
};
// 调用打印方法
if(how == '打印预览...')
jatoolsPrinter.printPreview(myDoc ); // 打印预览
else if(how == '打印...')
jatoolsPrinter.print(myDoc ,true); // 打印前弹出打印设置对话框
else
jatoolsPrinter.print(myDoc ,false); // 不弹出对话框打印
}
3.给需要打印的div取id名
默认打印page1,page2,page3...,如果page_div_prefix不为空,需要在id前面加上page_div_prefix对应的值
杰表的优点就不说了,一大堆,这里说下最主要的两个缺失功能(当然,收费版应有尽有),
第一,不支持自动缩放打印,就是说,如果你的页面高度或者宽度过大,那么,肯定不完全打印,多余的部门会被截掉
解决的办法就是你只能把页面改小点来去兼容它;
第二,不支持打印隐藏对象,这个真的挺头疼,如果遇到批量打印,而且打印的内容需要到后台去查询的,这个就不能用了,
有个带点风险的解决办法,就是将你不显示出来的div设置z-index属性,放到显示内容的下面就行了。
二、LODOP
lodop同样免费,而且使用起来也很方便。
下载地址:http://www.lodop.net/download.html
lodop的部署:
1.引入lodop控件
<script language="javascript" src="LodopFuncs.js"></script> |
<object id="LODOP_OB" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width=0 height=0> |
<embed id="LODOP_EM" type="application/x-print-lodop" width=0 height=0></embed> |
</object> |
2.编写打印js
var LODOP; //声明为全局变量
function prn1_preview() {
CreateOneFormPage();
LODOP.PREVIEW();
};
function prn1_print() {
CreateOneFormPage();
LODOP.PRINT();
};
function prn1_printA() {
CreateOneFormPage();
LODOP.PRINTA();
};
function CreateOneFormPage(){
LODOP=getLodop(document.getElementById('LODOP_OB'),document.getElementById('LODOP_EM'));
LODOP.SET_PRINT_STYLE("FontSize",16);
LODOP.SET_PRINT_STYLE("Bold",1);
var htm = str+"<body>"+document.getElementById("page1").innerHTML+"</body>";
LODOP.ADD_PRINT_HTM("0%", "0%", "100%", "100%", htm);
}
具体方法作用可以参考官网demo
LODOP最主要的优点就是可以指定打印哪个模块,只要给他一个id就行,真的是很方便,比较明显的缺点有两个:
第一,打印页面不能将原页面中css带过来,需要自己引入,具体方法见LODOP功能演示
第二,直接打印出来的页面,底部居然有LODOP的logo信息,具体信息:本页由【试用版打印控件Lodop6.0.5.6】输出,这个让我无法接受,估计用户看到也会发疯,
咨询过LODOP作者,确定需要购买注册号才能去掉。
总的说来,两个控件都很不错,虽然免费的功能不是很多,但一般的项目中应该也是够用了。
相关推荐
Java web 打印,Java pdf打印,Java打印
JAVA的Web打印方式,主要使用PageOffice、POI、jacob,html打印等方式来进行。
轻量级Java Web 打印程序库、Api文档、demo程序
java实现web的打印,可以分页打印,可以批量打印,可以根据格式选择打印
该项目是Java 实现web打印的源码,非IE打印,而是通过Java调用pdf打印。该项目是用MyEclipse写的。
ePrint是一个全面强大的web打印的解决方案。它可以直接在IE浏览器中可视化的设计各种复杂的打印模版, 轻松解决Web套打问题。也可以直接打印用ASP,JSP等动态程序生成的HTML页面。 ePrint内含一个在vc7.0上开发的...
NULL 博文链接:https://xdoc.iteye.com/blog/764758
Java实现Web报表打印功能
java filter打印请求返回参数
Java web 我印我形打印器 源代码
这是一个快速方便的web打印解决方案,用户将要打印的数据装入一个表格,然后调用此打印工具将表格中的数据按预定格式打印。 详细使用文档和示例见 webgrid\index.html 3、eprint for dotnet 这是可以自定义打印...
code下载部署说明 以上是周末自己编写的小案例,供大家参考。 环境:myeclipse8.5 + tomcat6 + jdk7 + core-3.3.0.jar(google zxing)
非常不错的web打印程序,里面包括31个示例程序,这么好的资源,和大家分享下
java web 开发中有时需要连接打印机实现打印功能。
Java燗applet+jasperReport 实现web端打印
Lodop是一款专业的WEB打印控件,其设计目标是简单易用、功能强大且短小精悍,开创WEB打印开发的新局面 这是一个完整的测试实例,包括安装包,打印实例,说明文档
web批量打印。详细说明见博客地址:https://my.oschina.net/u/266034/blog/807252
系统涉及到复杂表单数据提交、AJAX无刷新数据提交、WEB打印等常用应用软件中涉及到的技术。 Java Web订销管理系统(java+mysql+html+运行指导说明文档) Java Web订销管理系统(java+mysql+html+运行指导说明文档) Java...
javaweb打印,控制 "纵打 "、 横打”和“页面的边距,ASP页面打印时如何去掉页面底部的路径和顶端的页码编号
j2ee 项目中实现web 票据打印,ie web 票据打印