一个需求需要采用横向打印,目前采用IE自身的打印功能(WebBrowser.ExecWB控件)很难进行横向设置,默认需要调用document.all.WebBrowser.ExecWB(8,1);打开打印设置对话框进行人工设置,颇为不方便,本次采用ActiveX控件,也即第三方的ScriptX控件进行横向设置。

ScriptX基本功能免费,但高级功能是收费的,下面我就把最近在项目中使用ScriptX的经验总结一下。

1. 首先把ScriptX.cab放在一个目录下面,比如根目录

2. 目前html5 doc需要把object放在head之外

引入如下

...

</head>

<object id="factory" style="display: none" viewastext classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"

        codebase="ScriptX.cab#Version=5,60,0,360"></object>

<body>

...

3. 设置打印属性

function InitPrinterSetting() {

            factory.printing.header = "";//页眉    

            factory.printing.footer = "";//页脚    

            factory.printing.leftMargin = 1.0;//左边距    

            factory.printing.topMargin = 1.3;//上边距    

            factory.printing.rightMargin = 1.0;//右边距    

            factory.printing.bottomMargin = 1.3;//下边距

factory.printing.portrait = false;//打印方向,true:纵向.false:横向    

        }

4.  如下style用于去除打印

<style   media="print">       

      .Noprint{display:none;} <!--用本样式在打印时隐藏非打印项目-->       

      .PageNext{page-break-after:   always;} <!--控制分页-->       

    </style>

完整代码如下(附件可下载):

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PrintPreviewAndUnion.aspx.cs" Inherits="TMIS.WebApp.CustomerMA.PrintPreviewAndUnion" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

            <script type="text/javascript" src="../Scripts/lib/jquery-1.4.2.min.js"></script>

            <script type="text/javascript" src="../Scripts/lib/jquery-ui-1.8.5.custom.min.js"></script>

            <script type="text/javascript" src="../Scripts/lib/jquery.formatCurrency-1.4.0.min.js"></script>

            <script type="text/javascript" src="../Scripts/lib/jquery.utils.js"></script>

            <script type="text/javascript" src="../Scripts/lib/jquery.numeric.pack.js"></script>

            <script type="text/javascript" src="../Scripts/lib/jquery.timepickr.min.js"></script>

    <title>WebPrint</title>

<script type="text/javascript">

 

        function PrintPage() {   

            factory.DoPrint(false);//设置为false,直接打印    

        }

function InitPrinterSetting() {

            factory.printing.header = "";//页眉    

            factory.printing.footer = "";//页脚    

            factory.printing.leftMargin = 1.0;//左边距    

            factory.printing.topMargin = 1.3;//上边距    

            factory.printing.rightMargin = 1.0;//右边距    

            factory.printing.bottomMargin = 1.3;//下边距

factory.printing.portrait = false;//打印方向,true:纵向.false:横向       

        }

$(document).ready(function () {

            InitPrinterSetting();

        })

</script>

 <style   media="print">       

      .Noprint{display:none;} <!--用本样式在打印时隐藏非打印项目-->       

      .PageNext{page-break-after:   always;} <!--控制分页-->       

    </style>

</head>

<object id="factory" style="display: none" viewastext classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"

        codebase="ScriptX.cab#Version=5,60,0,360"></object>

<OBJECT   id="WebBrowser"   height="0"   width="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"   VIEWASTEXT></OBJECT>

<body>

    <form id="form1" runat="server">

    <div>

        <center>

           

           <div class="div_content" style="border-color:white;">

            

               <div style='text-align:center; padding-top:15px; padding-bottom:15px;' class='Noprint' >

                     <input  id="btnPrint" type="button"  value="直接打印"  style="width: 90px;height:31px;"/>

                        &nbsp;&nbsp;&nbsp;&nbsp;  

                    <input  id='btnYes' value='打印预览' type='button' οnclick='document.all.WebBrowser.ExecWB(7,1);' style='width: 90px;height:31px;' />

                </div>

                <div id="print_div_receipt" style="width:950px;margin:0 auto " >

                    <div style="width:950px; margin:0 auto">

                        <div style="font-size:20px; line-height:160%; padding:20px;">

                        <div style="padding-bottom:10px;"></div>

                            <span style="font-size:30px; font-family:宋体;"><b>打印内容</b></span>    

                        </div>

                     </div>                 

                </div>

            

        </div>

        </center>

    </div>

    </form>

</body>

</html>

附件:http://down.51cto.com/data/2368505










本文转自 yuanzhitang 51CTO博客,原文链接:http://blog.51cto.com/yuanzhitang/1884516,如需转载请自行联系原作者

使用ScriptX控件进行Web横向打印的更多相关文章

  1. 使用MeadCo's ScriptX控件做WEB打印

    官方网址:http://www.meadroid.com/scriptx/index.asp MeadCo's ScriptX控件有两种使用方式,一种是做为免费版本使用,一种是做为收费版本使用,免费版 ...

  2. 使用ScriptX控件实现IE浏览器分页打印功能

    之前讲过js调用ie浏览器自带打印的用法,今天讲使用插件的方式.浏览器自带打印不能控制页边距.页眉页脚等选项,尤其是如果分页打印的话,无法自动将前一页标题带到本页,所以不适用多页打印的功能.使用Scr ...

  3. winform使用Barcodex控件预览和打印一维码

    1.控件下载. http://files.cnblogs.com/files/masonblog/barcodex.zip . 包含barcodex.ocx控件.barcodex帮助文档.两个winf ...

  4. 基于MVC4+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面

    最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重 ...

  5. 使用EasyUI的树控件构建Web界面

    最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重 ...

  6. 基类包括字段“ScriptManager1”,但其类型(System.Web.UI.ScriptManager)与控件(System.Web.UI.ScriptManager)的类型不兼容

    首先说下原先的情况,就是原本老项目的Web解决方案是使用.net framework 2.0的老版本, 所以机器也安装过Microsoft ASP.NET 2.0 AJAX Extensions..A ...

  7. Html控件和Web控件(转)

    作为一名ASP.NET的初学者,了解并且区别一些混淆概念是很必须的,今天这篇博文 就是主要向大家介绍一下Html控件和Web控件.在ASP.net中,用户界面控件主要就是 Html控件和Web控件,在 ...

  8. (转)基于MVC4+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面

    http://www.cnblogs.com/wuhuacong/p/3669575.html 最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开 ...

  9. 关于使用smsx.cab控件做web打印使用方法(转)

    注意:在使用之前先告诉下我的痛苦经历 在做WEB项目是我的JSP页面在jsp文件夹里,我把smsx.cab放在js文件夹里(jsp和js是用级别目录) 在本机上测试可以正确下载控件,但是部署到测试服务 ...

随机推荐

  1. LeetCode48, 如何让矩阵原地旋转90度

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode第29篇,我们来看一道简单的矩阵旋转问题. 题意 题目的要求很简单,给定一个二维方形矩阵,要求返回矩阵旋转90度之后的 ...

  2. php数据库应用程序建议

    一.保持独立的读写连接 开始就创建两个数据库连接是一个好的方法,一个用于读取,一个用于写入,并且允许不同的数据库服务器连接他们.如果只有一个服务器,则将它们设置彼此相同. 当操作为INSERT, UP ...

  3. C语言 文件操作(八)

    1.删除文件或目录 int remove(char * filename); [参数]filename为要删除的文件名,可以为一目录.如果参数filename 为一文件,则调用unlink()处理:若 ...

  4. 【网络编程01】socket的基础知识-简单网络通信程序

    1.什么是socket socket(套接字),简单来说是IP地址与端口(port)的组合,可以与远程主机的应用程序进行通信.通过IP地址可以确定一台主机,而通过端口则可以确定某一个应用程序.IP+端 ...

  5. 【C#】写一个支持多人聊天的TCP程序

    碎碎念 先谈谈我们要实现的效果:客户端可以选择要聊天的对象,或者直接广播消息(类似QQ的私聊和群消息) 那么,该如何实现呢? 首先明确的是,要分客户端和服务器端两个部分(废话) 客户端:选择要发送的对 ...

  6. JAVA—线程(Thread)

    1.线程的状态有哪些 我记得在操作系统原理的书上有一张具体的图,暂时找不到书... new:新建状态,被创建出来后未启动时的线程状态. runnable:就绪状态,表示可以运行. blocked:阻塞 ...

  7. L19深度学习中的优化问题和凸性介绍

    优化与深度学习 优化与估计 尽管优化方法可以最小化深度学习中的损失函数值,但本质上优化方法达到的目标与深度学习的目标并不相同. 优化方法目标:训练集损失函数值 深度学习目标:测试集损失函数值(泛化性) ...

  8. X - Ehab and Path-etic MEXs CodeForces - 1325C

    MMP,差一点就做对了. 题目大意:给你一个树,对这个树的边进行编号,编号要求从0到n-1,不可重复,要求MEX(U,V)尽可能的小, MEX(x,y)的定义:从x到y的简单路径上,没有出现的最小编号 ...

  9. D - Harmonious Graph

    题目大意: n个点,m条边,两个数l和r,如果l和r相连接,那么对于l和r之间值任意一个数都要和l相连.问达到这一目的需要添加的边的最小数量. 题解: 我们首先要找到当前连通块中最大的那个点,也就是说 ...

  10. Git 创建远程仓库并克隆到本地,创建本地仓库并推送到远程仓库

    配置用户信息 配置的是你个人的用户名称和电子邮件地址.这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,会随更新内容一起被永久纳入历史记录 git config --glo ...