资源描述
基于Web打印、打印预览技术预研报告
历史记录
编号
章节名称
说明
修订日期
版本号
作者
批准人
1
全文
新建
2014/08/27
V1、0
yi
目 录
1 预研背景 4
2 预研目得与意义 4
3 预研目标 4
3、1 概述预研技术得发展情况 4
3、2 预研技术解决方法与方法比较 4
3、3 针对产品进行得方法选择与基本描述 9
4 结论 9
5 参考资料 10
1 预研背景
本次预研就是对XXXV2、0产品中Web打印、打印预览技术得研究。
2 预研目得与意义
本次预研在于找到一种合适得方法用以实现XXXV2、0中Web页面得打印功能,从而给用户提供简单方便得操作、简洁美观得打印效果及预览效果起着十分关键得作用。
3 预研目标
XXX平台V2、0中实现打印预览、打印功能。
3.1 概述预研技术得发展情况
在B/S架构得项目中,由于浏览器得局限性,一直以来Web打印最就是让程序员头痛得技术, 浏览器呈现给用户得页面与实际打印得效果有着很明显得差别,如:打印模板中控制页边距、页眉、页脚、纸张大小等。我们经常用得Word、Excel等应用程序,它们有着简单灵活得设计界面,能满足各种文档得打印需求,而Web应用则因为其特殊得呈现方式,只能寻求其她得解决方案。现有得Web打印控制技术分成三种方式:浏览器得打印功能、第三方控件打印功能、服务器生成Pdf、Word、Excel形式下载到本地打印。
3.2 预研技术解决方法与方法比较
一、 浏览器得打印功能
a) 通过javascript来调用window、print()函数实现,或用户点击浏览器得打印菜单实现预览及打印功能。
<input type='button' value='打印' onclick='javascript:window、print()'/>
@media print{、toolbar{display:none;}} 设置类样式中得内容不打印
、paging{page-break-after:always} 强制换页
优点:
1> 代码简单
2> 支持IE、谷歌、火狐等浏览器
缺点:
1> 不能精确分页。浏览器一般就是根据用户设置得页面大小,web页面得内容多少,来自行决定分页位置,程序员很难控制。会有页脚页眉干扰。
2> 不能准确对齐边距及打印页面大小。
3> 不能解决连续打印。
b) 使用webbrowser控件+ javascript,这实际上,就是浏览器打印功能菜单得一种程序调用,与打印功能菜单没什么两样。分页得问题仍然存在,只不过,可以让用户不用去点菜单,直接在网页中得一个按钮,或一个链接里面调用。
<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0></OBJECT>
<input type=button value=打印 onclick=document、all、WebBrowser、ExecWB(6,1)>
<input type=button value=页面设置 onclick=document、all、WebBrowser、ExecWB(8,1)>
<input type=button value=打印预览 onclick=document、all、WebBrowser、ExecWB(7,1)>
优点:
1> 代码简单
缺点:
1> 仅支持IE浏览器
2> 不能精确分页。
二、 第三方控件打印功能
1) 使用ScriptX控件打印
ScriptX就是一个叫MeadCo得国外公司开发得打印控件,可以对页眉,页脚,页边距,纸张方向进行设置,官网得最新版就是6、4,下载以后就是一个smsx、cab文件,其大小为5、06MB,使用时需要在页面引入cab控件。
<script language="javascript">
var hkey_root,hkey_path,hkey_key
hkey_root="HKEY_CURRENT_USER"
hkey_path="\\Software\\Microsoft\\InternetExplorer\\PageSetup\\"
//设置网页打印得页眉页脚为空
function pagesetup_null()
{
try{
var RegWsh = new ActiveXObject("WScript、Shell")
hkey_key="header"
RegWsh、RegWrite(hkey_root+hkey_path+hkey_key,"")
hkey_key="footer"
RegWsh、RegWrite(hkey_root+hkey_path+hkey_key,"")
}catch(e){}
}
//用于设置打印参数
function printBase() {
factory、printing、header = "" //页眉
factory、printing、footer = "" //页脚
factory、printing、portrait = true //true为纵向打印,false为横向打印
factory、printing、leftMargin = 0、5
factory、printing、topMargin = 1、5
factory、printing、rightMargin = 0、5
factory、printing、bottomMargin = 1、5
}
//用于调用设置打印参数得方法与显示预览界面
function printReport(){
printBase();
// pagesetup_null();
document、all("button")、style、display = "none";//隐藏按钮
factory、printing、Preview();
}
function printWindow() {
factory、printing、header = "This is MeadCo"; //頁首
factory、printing、footer = "Printing by ScriptX"; // 頁尾
factory、printing、portrait = false; // 橫印
factory、printing、leftMargin = 1、0;
factory、printing、topMargin = 1、0;
factory、printing、rightMargin = 1、0;
factory、printing、bottomMargin = 1、0;
factory、printing、Print(true);
}
</script>
<object id="factory" style="display:none" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"></object>
<input type="button" name="Print" value="列印" onclick="printWindow();">
<input id="idPrint2" type="button" value="页面设置" onclick="factory、printing、PageSetup()">
<input id="idPrint3" type="button" value="打印预览" onclick="factory、printing、Preview()">
优点:
1> 可以通过代码直接设置页眉页脚页边距
缺点:
1> 分页可控性差
2> 仅支持IE浏览器
2) 使用Lodop控件进行复杂得打印
Lodop俗称露肚皮,就是一个专业得Web打印控件,分为收费版与免费版,也就是目前一般专业打印软件中应用最广得打印控件,所有调用如同JavaScript扩展语句。它就是一个install_lodop32、exe得安装包,其大小为2、28MB。
<script language="javascript" src="LodopFuncs、js"></script>
<object id="LODOP_OB" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width=0 height=0 style="position:absolute;left:0px;top:-10px;"></object>
<object id="LODOP_EM" type="application/x-print-lodop" width=0 height=0 style="position:absolute;left:0px;top:-10px;"></object>
</object>
<script type="text/javascript">
LODOP=getLodop(document、getElementById('LODOP_OB'),document、getElementById('LODOP_EM'));
</script>
PRINT_INIT(strPrintTaskName)打印初始化
SET_PRINT_PAGESIZE(intOrient,intPageWidth,intPageHeight,strPageName)设定纸张大小
ADD_PRINT_HTM(intTop,intLeft,intWidth,intHeight,strHtml)增加超文本项
ADD_PRINT_TEXT(intTop,intLeft,intWidth,intHeight,strContent)增加纯文本项
ADD_PRINT_TABLE(intTop,intLeft,intWidth,intHeight,strHtml)增加表格项
SET_PRINT_STYLE(strStyleName, varStyleValue)设置对象风格
NewPage() 设置换页
PREVIEW打印预览
PRINT直接打印
优点:
1〉 可控性好;
2> 支持IE系列、IE内核系列(遨游、360、世界之窗、搜狗、蚂蚁等)浏览器,以及Firefox(火狐)系列、Chrome(谷歌)系列、Opera系列、Safari系列等各类浏览器
缺点:
1> 需要安装控件
3) 使用Pdf插件进行复杂得打印
PDFObject、js,就是一个 JavaScript 库用来在HTML中动态嵌入 PDF 文档,需要安装Adobe Reader XI应用程序。
<script type="text/javascript" src="PDF-full_"></script>
<script type="text/javascript">
window、onload = function (){
var myPDF = new PDFObject({ url: "sample、pdf" })、embed();
};
</script>
<object data="sample、pdf#" type="application/pdf" width="100%" height="100%"></object>
优点:
1> 浏览及打印样式美观;
2> 支持常用得浏览器。
缺点:
1> 需要在本地安装Adobe Reader XI浏览工具;
2> 需要服务器生成Pdf文档,提供客户端查瞧。
三、 服务器生成Pdf、 Word、Excel形式下载到本地打印
用户将需要打印得数据发送请求给服务器,服务器生成Pdf、Word、Excel文件提供给用户下载,用户下载后通过文档工具进行打印。
优点:
1> 页面可控性好;
2〉 无需考虑浏览器兼容性问题。
缺点:
1> 消耗部分服务器性能;
2> 用户需要下载打印。
3.3 针对产品进行得方法选择与基本描述
1) 浏览器得打印功能使用简单方便,但需要对打印格式要求较高,对单张页面得打印可控性好。
2) 第三方控件打印,打印页面得样式较为美观,可以根据用户得需求设定合适得界面,但需安装第三方控件,对连续打印可控性好。
3) 本地应用打印,繁琐得就是需要将打印得文件下载到本地打开打印,但用户可对打印数据进行编辑操作。
4 结论
如果打印文件就是单张建议使用浏览器自身得打印功能,如果打印得数据较多使用第三方控件或本地应用打印,具体方案待项目设计完成后再做定夺。
5 参考资料
参考资料编号
参考资料名称
1
2
Web系统页面打印技术实现与分析 - moonvan - 博客园、mhtml
3
WEB打印系列教程 - quentin_wjb得日志 - 网易博客
4
Lodop6、1技术手册、doc
5
js插件方式打开pdf文件(浏览器pdf插件分享)_javascript技巧_脚本之家、htm
6
ScriptX、cab 使用及下载 IE打印设置(转) - 没个性得日志 - 网易博客、htm
7
ScriptX打印控件得使用、htm
8
捷普终端安全综合管理平台统计分析
9
西安交通违法当事人网上自助处理系统
展开阅读全文