最近遇到一个项目,需要用到较为复杂的打印功能,包括批量打印等。
目前来说,一般一个简单的详情页面打印,直接调用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 Web打印以及使用iText库生成PDF文档的相关知识点和技术细节。希望这些内容能够帮助你更好地理解和实现Java Web打印功能。
JAVA的Web打印方式详解 JAVA的Web打印方式是指在Web应用程序中实现打印功能的各种方法和技术。...JAVA的Web打印方式有多种选择,开发者可以根据实际情况选择合适的打印方式来实现Web应用程序的打印功能。
在Java开发中,Web打印和PDF打印是两个重要的技术领域,尤其在企业级应用中,它们经常被用来生成报告、发票、合同等文档。本文将深入探讨这些技术,并结合项目描述,提供一个详尽的解释。 首先,让我们从Java Web...
轻量级Java Web打印程序库通过提供API接口,使得开发者可以方便地控制打印流程,包括设置纸张大小、方向、页边距,以及选择打印机等。这些库通常支持多种格式的数据输出,如PDF、HTML、图片等,以便满足不同类型的...
Java打印预览和Web打印是开发中经常遇到的需求,尤其在企业级应用或者网页服务中。本文将深入探讨如何在Java环境中实现这两种功能,并提供一个名为`JpdPreview`的工具包来帮助开发者轻松实现这一目标。 首先,让...
java实现web的打印,可以分页打印,可以批量打印,可以根据格式选择打印
ePrint是一个全面强大的web打印的解决方案。它可以直接在IE浏览器中可视化的设计各种复杂的打印模版, 轻松解决Web套打问题。也可以直接打印用ASP,JSP等动态程序生成的HTML页面。 ePrint内含一个在vc7.0上开发的...
### Java打印PDF文件及批量打印实现 #### 一、引言 在企业级应用开发中,经常需要处理各种文档操作,其中包括PDF文件的打印。Java作为一种广泛应用的企业级开发语言,提供了多种方式来实现这一功能。本文将详细...
5. **设置打印任务**: 创建一个Java程序或者Web服务接口,接收批量打印请求。这个接口会调用Java的`java.awt.print.PrintService` API来处理打印任务。你需要先获取可用的打印机列表,然后选择合适的打印机进行设置...
然而,对于Web应用,通常我们需要将网页内容转换为适合打印的格式,如PDF,然后由用户选择本地打印机进行打印。这是因为直接打印HTML在跨平台和样式控制方面存在挑战。 提到HTML转PDF,这里提到了一个关键文件...
3. 发布Java Web应用程序至Tomcat服务器:用户可以在MyEclipse中选择“Build Project”,然后发布Java Web应用程序至Tomcat服务器。 4. 启动Tomcat服务器:用户可以在MyEclipse中选择“Start Server”,然后启动...
无论是直接编程生成还是利用模板填充,iText都能满足不同场景下的需求,成为Java开发者实现报表打印的理想选择。通过本文的探讨,相信读者对如何在Web应用中实现报表打印有了更深入的理解和实践指南。
Web打印程序是一种允许用户在网页上直接进行打印操作的技术,它可以极大地提升用户体验,尤其是在需要大量打印文档或报表的场景中。本资源包含了一个优秀的Web打印程序,并提供了丰富的示例程序,便于开发者理解和...
"我印我形打印器"显然是一款专门针对打印任务的Java Web应用,源代码提供了深入理解其工作原理和实现细节的机会。 在Java Web开发中,主要涉及的技术包括Servlet、JSP(JavaServer Pages)、JavaBean、MVC(Model-...
首先,要理解Java Web打印涉及到的主要技术栈包括Servlet、JSP、JavaBeans(如果需要封装打印逻辑)以及可能用到的API,如Java的`java.awt.print`包和`javax.print`包。这些API提供了与打印机交互的能力。 1. **...
**JasperReports -- 客户端打印(WEB网页打印)** JasperReports 是一个功能强大的开源报告生成库,广泛应用于Java应用程序中,用于创建复杂的报表和图表。它支持多种数据源,包括数据库查询、XML、CSV等,并且可以...
通过以上步骤,我们可以实现在Java Web应用中通过Filter来打印请求和响应的数据。这种方法不仅能够帮助我们更好地理解和调试程序逻辑,还能为后续的日志记录和性能分析提供有用的信息。此外,通过对请求和响应的封装...
在`printdemo`这个示例项目中,可能包含了如何使用Java Print Service API创建和配置打印任务的代码示例,以及如何在Web环境中调用这些功能的演示。通过研究这个示例,你可以更深入地了解Java Print组件的使用方法,...
本资源提供的是一个通用的Web打印源码,适用于Java和C#环境,旨在简化Web打印流程,为开发者提供便捷的打印解决方案。 在Java中,Web打印主要通过Java的`java.awt.print`包来实现。这个包提供了诸如`PrinterJob`、`...
在Java编程环境中,实现Web打印功能是一项常见的需求,特别是在开发企业级应用时。Web打印主要涉及到将网页内容或者特定的数据转换成适合打印机输出的格式。本文将深入探讨如何利用Java来实现在Web环境下进行打印...