IE下实现打印功能

先贴代码:


<html>
<head>
<style type="text/css">
*{margin:0px;padding:0px;}
.noprint{margin:20px 0px;}
.noprint input{padding:5px 10px;margin:10px 5px;}
#p{display:none;}
</style>

<!--该样式表设置的是打印时的样式,要放到其他style的下面,否则会被覆盖-->
<style media="print">
.noprint { display : none;}
#p{display:block;}
</style>

<script>
function doPrintSetup() {
IEPrinter.setup();
}
function doPrintPreview() {
IEPrinter.preview();
}
function doPrint() {
IEPrinter.print();
}

////边距设置时要注意数值单位
var IEPrinter = (function(){
var HKEY_Root, HKEY_Path, HKEY_Key
,HKEY_Root = "HKEY_CURRENT_USER"
,HKEY_Path = "\\Software\\Microsoft\\Internet Explorer\\PageSetup\\"
,Wsh,PRINT_SETTING={},printWB;

window.onload= Init;

////保存默认值
function Init(){
////生成Object标签

var html = "<object id=‘printWB‘ classid=‘clsid:8856F961-340A-11D0-A96B-00C04FD705A2‘ style=‘none‘></object>";
document.body.innerHTML += html;
printWB = document.getElementById("printWB");
try {
Wsh = new ActiveXObject("WScript.Shell");
}catch (e) {
return alert("请使用IE浏览器");
}

//页眉
PRINT_SETTING.Header = ReadReg("header");
//页脚
PRINT_SETTING.Footer = ReadReg("footer");
//下页边距
PRINT_SETTING.MarginBottom = ReadReg("margin_bottom");
//左页边距
PRINT_SETTING.MarginLeft = ReadReg("margin_left");
HKEY_Key = "margin_right";
//右页边距
PRINT_SETTING.MarginRight = ReadReg("margin_right");
//上页边距
PRINT_SETTING.MarginTop = ReadReg("margin_top");
//【启用缩小字体填充】yes|no
PRINT_SETTING.ShrinkToFit = ReadReg("Shrink_To_Fit");
//【打印背景颜色和图像】yes|no
PRINT_SETTING.PrintBackground = ReadReg("Print_Background");
}

function SetPrintOpt(opt) {
//设置页眉
SetReg("header",opt.Header);
//设置页脚
SetReg("footer",opt.Footer);
//设置下页边距
SetReg("footer",opt.MarginBottom);
//设置左页边距
SetReg("margin_left",opt.MarginLeft);
//设置右页边距
SetReg("margin_right",opt.MarginRight);
//设置上页边距
SetReg("margin_top",opt.MarginTop);
//设置【启用缩小字体填充】
SetReg("Shrink_To_Fit",opt.ShrinkToFit);
//设置【打印背景颜色和图像】
SetReg("Print_Background",opt.PrintBackground);
}

function ReadReg(key){
return Wsh.RegRead(HKEY_Root + HKEY_Path + key);
}

function SetReg(key,val){
Wsh.RegWrite(HKEY_Root + HKEY_Path + key,val);
}

return {
setInitOption:SetPrintOpt
////打开打印设置窗口
,setup:function(){
printWB.ExecWB(8, 1);
}
,preview:function(){
printWB.ExecWB(7, 1);
}
,print:function(){
printWB.ExecWB(6, 6);
}
};
}());
</script>
</head>
<body>
<div id="noprint" class="noprint">
<p>点击【打印】按钮前要更改浏览器设置:IE7及IE8用户,请先选择浏览器的“工具”-->“Internet选项”-->“安全”-->“自定义级别”中的</p>
<p>“对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本”以及“下载未签名的ActiveX控件”设置为“启用”或“提示”。</p>
<p>IE8以上用户,请先选择浏览器右上角的设置按钮然后选择“Internet选项”,后续操作同上。</p>
<hr />

<input type="button" value="打印设置" onclick="doPrintSetup();" />
<input type="button" value="打印预览" onclick="doPrintPreview();" />
<input type="button" value="打印准考证" onclick="doPrint();" />
</div>
<p id="p">ppp</p>
<span>spannnn</span>
</body>
</html>

着重点有这么几个

1.

<style media="print">
.noprint { display : none;}
#p{display:block;}
</style>

该标签设置的样式只针对打印时的效果,所以可以设置某些打印时要隐藏,或者只有打印时才显示的内容。而且该标签最好放到其他样式表的后面,否则会被覆盖。

2.使用打印功能要对浏览器做相应的设置才可以。

IE7及IE8:“工具”-->“Internet选项”-->“安全”-->“自定义级别”中的“对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本”以及“下载未签名的ActiveX控件”设置为“启用”或“提示”。
IE8以上用户,请先选择浏览器右上角的设置按钮然后选择“Internet选项”,后续操作同上。

IE下实现打印功能,布布扣,bubuko.com

时间: 2024-10-11 13:52:25

IE下实现打印功能的相关文章

测试打印功能

// 先创建窗体,后拉入Button控件两个,一个预览功能,一个打印功能,再拉入控件PrintDocument控件.PrintPreviewDilogs控件.pageSetupDilogs控件 // 后台代码 1 List<string> students = new List<string>() {"张三","李四","王五" }; 2 int count = 0;//要打印的学员姓名的下标值 3 private voi

借助Jquery Jqprint实现网页打印功能

今天利用闲余时间研究了一下Jquery Jqprint插件,使用该Jquery脚本可以轻而易举的实现打印网页指定区域内容的功能: 例子一: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&

vc 实现打印功能

Visual C++6.0是开发Windows应用程序的强大工具,但是要通过它实现程序的打印功能,一直是初学者的一个难点,经常有朋友询问如何在VC中实现打印功能,他们往往感到在MFC提供的框架内实现这个问题很复杂,不知道如何下手.本例针对这个问题,介绍一种简单的方法实现文字串的打印功能,读者朋友可以在此基础上稍微改动一下,就可以实现文件.图像的打印功能. 一.实现方法 在Windows操作系统下,显示器.打印机和绘图仪都被视为输出设备,正常情况下,系统默认的输出设备是显示器.要使用打印机,首先需

浅谈QT打印功能实现

QT作为一款轻量级的集成开发环境,其设计的目标是使开发人员利用QT这个应用程序框架更加快速及轻易的开发应用程序.要达到此目的,要求QT必须能够跨平台,QT能够在32位及64位的Linux,MAC OS X以及Windows上运行. 现在我们想在项目中加入一项打印功能,即使在不同的操作系统环境下,仍然能有相同的用户体验,在实现中发现QT对打印的支持不是那么友好.我们希望在跨平台的情况下,能打印各种文档,比如用户的简历,发现如果不调用对应操作系统的内核外壳打印函数,这项工作变得异常艰难.我们希望用Q

WEB打印功能相关

最近项目要实现WEB打印功能,各种调试. 首先要实现WEB打印,这块用的window下的print方法,下面的代码实现了WEB打印和去页眉页脚的功能,打印分页需要在想要分页的元素上设置style="page-break-after:always",我这里是在table元素上加的分页,其他元素没测 1 //打印代码 2 function Print() 3 { 4 var printStr = "<html> 5 <head> 6 <meta ht

VS2013自带报表+打印功能

经过了VB版机房收费系统的学习,相信现在说起报表,我们已经不再觉得陌生.VB打印报表的功能是通过引用第三方控件来实现的,而相对的VS就在VB的基础上完善了这一功能,VS自带报表控件和打印功能,这样就给我们这些编程者带来了很大的方便.下面就将我做程序的一些小经历来跟大家一起分享一下. 1,我们右击U层所在文件夹添加"新建项". 2,在弹出的的添加新建项窗口中找到"reporting",在右面的内容窗口中选中"报表"选项,设置报表的名称. 3,点击确

【JS】通过JS实现超市小票打印功能——ActiveX控件

应客户的需求= = ,要在网页端实现打印小票的功能 先来一张打印出的小票效果图(合计明显不对,因为有修改订单功能,请各位忽略) 用什么方法实现呢:我想应该是有三种吧 1.用第三方的浏览器控件(这个好似比较方便,我的老师也是这样建议我)向大家推荐一个 Lodop打印控件 2.用CSS写好模板,然后直接用页面打印的方法(应该是这样吧) (以上两种还没有尝试,这两天陆续尝试) 3.用微软自己的ActiveX控件(ActiveX控件可以实现调用本地的文件等操作(之前试过调用cmd,实现shutdown

【转】Android打印机--没有设备驱动sdk,自己实现USB打印功能

原文:http://blog.csdn.net/johnwcheung/article/details/71576833 Android下的设备调试,如果设备提供了驱动,按照厂家的驱动调试即可:设备未提供驱动,只能按照通用的方法进行调试. 对于智能POS.收银机以及其他打印设备,如果厂商不提供打印相关sdk,那么打印功能怎么实现呢?其实我们可以基于USB通信机制,自己去实现打印驱动. 整个实现流程如下 初始化打印机:首先要获取USB管理器:其次要注册监听USB设备插拔变化和请求权限的广播:最后列

打印功能会出现的问题

需求如图: 弹窗里有"打印"功能. 最开始网上找了个方案: http://www.cnblogs.com/huichao1314/p/5545992.html   参考下博客. 主要代码: js var oper = 1; //初始值 function preview(oper) { if (oper < 10) { bdhtml = window.document.body.innerHTML;//获取当前页的html代码 sprnstr = "<!--star