每日一得

          不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開發
          最近關心的內容:SSH,seam,flex,敏捷,TDD
          本站的官方站點是:顛覆軟件

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            220 隨筆 :: 9 文章 :: 421 評論 :: 0 Trackbacks
          key words: IE打印 web打印 頁面打印

          最近又碰到了頁面打印,順便記錄一下,本來下午寫完了,可惜最近blogjava最近總是出現問題,提交居然失敗,只好再來一次.

          function?SaveDataSourec(HeadName1,?HeadName2,?DivName)?{
          ????
          var?Div1?=?DivName.innerHTML;
          ????
          var?css?=?'<style?type="text/css"?media=all>'?+
          ??????????????'p?{?line
          -height:?120%}'?+
          ??????????????'.fhead?{???font
          -size:?9pt;?text-decoration:?none;?color:?104A7B}'?+
          ??????????????'.ftitle?{?line
          -height:?120%;?font-size:?18px;?color:?#000000}'?+
          ??????????????'td?{?font
          -size:?10px;?color:?#000000}'?+
          ??????????????'
          </style>'?;

          ????
          var?body?=?'<table?width="640"?border="0"?cellspacing="0"?cellpadding="5">'?+
          ???????????????'?
          <tr>?'?+
          ???????????????'?
          <td?class="fbody">'?+
          ???????????????'?
          <b><div?align="center">'?+?'<font?size="+1"?class=fhead>'?+?HeadName1?+?'</div>'?+?'</font></b>'?+
          ???????????????'?
          <b><div?align="center">'?+?'<font?size="+1"?class=fhead>'?+?HeadName2?+?'</div>'?+?'</font></b>'?+
          ???????????????'?
          </td>'?+
          ???????????????'?
          </tr>'?+
          ???????????????'?
          <tr>?'?+
          ???????????????'?
          <td?class="fbody">'?+
          ???????????????'?
          <div?align="center"?class=ftitle>'?+?Div1?+?'</div>'?+
          ???????????????'?
          </td>'?+
          ???????????????'?
          </tr>'?+
          ???????????????'
          </table>';
          ????document.body.innerHTML?
          =?'<center>'?+?css?+?body?+?'<OBJECT?classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"?height=0?id=wb?name=wb?width=0></OBJECT>'?+?'</center>';
          }


          function?PrintDataSourec(HeadName1,?DivName)?{
          ????
          var?oldBody?=?document.body.innerHTML;
          ????
          var?Div1?=?DivName.innerHTML;
          ????
          var?css?=?'<style?type="text/css"?media=all>'?+
          ??????????????'p?{?line
          -height:?120%}'?+
          ??????????????'.fhead?{???font
          -size:?40pt;?text-decoration:?none;?color:?104A7B}'?+
          ??????????????'.ftitle?{?line
          -height:?120%;?font-size:?25px;?color:?#000000}'?+
          ??????????????'td?{?font
          -size:?25px;?color:?#000000}'?+
          ??????????????'
          </style>'?;

          ????
          var?body?=
          ????????????'
          <table?width="100%"?border="0"?cellspacing="0"?cellpadding="0">'?+
          ????????????'?
          <tr>'?+
          ????????????'???
          <td?height="40"></td>'?+
          ????????????'?
          </tr>'?+
          ????????????'
          </table>'?+
          ????????????'
          <table?width="640"?border="0"?cellspacing="0"?cellpadding="5">'?+
          ????????????'?
          <tr>?'?+
          ????????????'?
          <td?class="fbody">'?+
          ????????????'?
          <b><div?align="center">'?+?'<font?size="+3"?class=fhead>'?+?HeadName1?+?'</div>'?+?'</font></b>'?+
          ????????????'?
          </td>'?+
          ????????????'?
          </tr>'?+
          ????????????'?
          <tr>?'?+
          ????????????'?
          <td?class="fbody">'?+
          ????????????'?
          <div?align="center"?class=ftitle>'?+?Div1?+?'</div>'?+
          ????????????'?
          </td>'?+
          ????????????'?
          </tr>'?+
          ????????????'
          </table>'?+
          ????????????'
          <table?width="640"?border="0"?cellspacing="0"?cellpadding="5">'?+
          ????????????'?
          <tr>?'?+
          ????????????'?
          <td?class="fbody">'?+
          ????????????'?
          </td>'?+
          ????????????'?
          </tr>'?+
          ????????????'
          </table>';
          ????document.body.innerHTML?
          =?'<center>'?+?css?+?body?+?'<OBJECT?classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"?height=0?id=wb?name=wb?width=0></OBJECT>'?+?'</center>';
          ????
          try?{
          ????????wb.execwb(
          6,?6);
          ????}
          ????
          catch(ex)?{
          ????????alert(
          "請在IE里設置允許ActiveX");
          ????}
          ????document.body.innerHTML?
          =?oldBody;
          }

          function?PrintDataSourecWithSetup(HeadName1,?HeadName2,?DivName)?{
          ????
          var?oldBody?=?document.body.innerHTML;
          ????
          var?Div1?=?DivName.innerHTML;
          ????
          var?css?=?'<style?type="text/css"?media=all>'?+
          ??????????????'p?{?line
          -height:?120%}'?+
          ??????????????'.fhead?{???font
          -size:?9pt;?text-decoration:?none;?color:?104A7B}'?+
          ??????????????'.ftitle?{?line
          -height:?120%;?font-size:?18px;?color:?#000000}'?+
          ??????????????'td?{?font
          -size:?10px;?color:?#000000}'?+
          ??????????????'
          </style>'?;

          ????
          var?body?=?'<table?width="640"?border="0"?cellspacing="0"?cellpadding="5">'?+
          ???????????????'?
          <tr>?'?+
          ???????????????'?
          <td?class="fbody">'?+
          ???????????????'?
          <b><div?align="center">'?+?'<font?size="+1"?class=fhead>'?+?HeadName1?+?'</div>'?+?'</font></b>'?+
          ???????????????'?
          <b><div?align="center">'?+?'<font?size="+1"?class=fhead>'?+?HeadName2?+?'</div>'?+?'</font></b>'?+
          ???????????????'?
          </td>'?+
          ???????????????'?
          </tr>'?+
          ???????????????'?
          <tr>?'?+
          ???????????????'?
          <td?class="fbody">'?+
          ???????????????'?
          <div?align="center"?class=ftitle>'?+?Div1?+?'</div>'?+
          ???????????????'?
          </td>'?+
          ???????????????'?
          </tr>'?+
          ???????????????'
          </table>';
          ????document.body.innerHTML?
          =?'<center>'?+?css?+?body?+?'<OBJECT?classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"?height=0?id=wb?name=wb?width=0></OBJECT>'?+?'</center>';
          ????wb.execwb(
          6,?6);
          ????document.body.innerHTML?
          =?oldBody;
          }

          function?SetPrintSettings()?{
          ????
          //?--?advanced?features
          ????factory.printing.SetMarginMeasure(2)?//?measure?margins?in?inches
          ????factory.SetPageRange(false,?1,?3)?//?need?pages?from?1?to?3
          ????factory.printing.printer?=?"HP?DeskJet?870C"
          ????factory.printing.copies?
          =?2
          ????factory.printing.collate?
          =?true
          ????factory.printing.paperSize?
          =?"A4"
          ????factory.printing.paperSource?
          =?"Manual?feed"

          ????
          //?--?basic?features
          ????factory.printing.header?=?"This?is?MeadCo"
          ????factory.printing.footer?
          =?"Advanced?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

          }

          //調用接口
          function?printit(HeadName1,?DivName)?{
          ????
          if?(confirm('是否確認打印?'))?{
          ????????PrintDataSourec(HeadName1,?DivName);
          ????????
          return;
          ????}
          }

          //帶配置的接口
          function?printitWithSetup(HeadName1,?HeadName2,?DivName)?{
          ????
          if?(confirm('是否確認'))?{
          ????????PrintDataSourecWithSetup(HeadName1,?HeadName2,?DivName);
          ????}
          }

          //另存
          function?saveas(HeadName1,?DivName)?{
          ????SaveDataSourec(HeadName1,?
          "",?DivName);
          ????
          //wb.execwb(4,1);
          ????top.frames("mainFrame").document.execCommand("saveAs");
          ????window.history.back(
          0);
          }


          調用很簡單,把要打印的部分直接放在 <div>里就可以了
          <div?id="myPrint">

          ????your?content?to?print

          </div>



          把div傳給printit就可以了

          由于本質上是js調用了ActiveX,所以會涉及到安全的問題,如果客戶端對ActiveX禁用會出現問題,所以可以在異常處理信息里告訴用戶,可以在安全設置里把你的站點的URL放進信任站點

          關于打印,還有另一種類型,就是發票套打,可以用Applet實現,也可以用自己寫的ActiveX來實現,上一次的一個phs項目里他們就使用vc寫的ActiveX,用起來感覺不錯,不過依然存在安全上的限制問題,不過如果用Applet的話實際上也是需要客戶端安裝jre的,從某種角度上來說差不多。話又說回來,做項目不同于做產品,可以對客戶有所要求? :)
          posted on 2006-05-26 23:08 Alex 閱讀(570) 評論(1)  編輯  收藏 所屬分類: web技術

          評論

          # re: 整理:web打印 2008-01-28 17:02 kobe
          我想要VC寫的ActiveX源代碼,可以發給我嗎?我的郵箱:kobe8.chen@163.com.謝謝!  回復  更多評論
            

          主站蜘蛛池模板: 横山县| 长子县| 五华县| 铜川市| 左贡县| 通渭县| 宣恩县| 江北区| 通化市| 女性| 乌什县| 绥滨县| 宁南县| 调兵山市| 常山县| 静宁县| 左云县| 太谷县| 深水埗区| 石林| 满城县| 泰兴市| 武夷山市| 南平市| 云和县| 洞头县| 珲春市| 岳西县| 牟定县| 越西县| 如东县| 中西区| 罗江县| 姜堰市| 太康县| 大兴区| 沂水县| 永胜县| 克东县| 福安市| 新沂市|