每日一得

          不求多得,只求一得 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 閱讀(576) 評論(1)  編輯  收藏 所屬分類: web技術

          評論

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

          主站蜘蛛池模板: 平江县| 涡阳县| 尉氏县| 博野县| 瑞安市| 连城县| 小金县| 凉山| 怀集县| 太仆寺旗| 正安县| 南乐县| 台江县| 西吉县| 闽侯县| 泰安市| 潢川县| 体育| 高阳县| 兴隆县| 邓州市| 沾益县| 贵南县| 沿河| 区。| 宣恩县| 徐闻县| 英吉沙县| 南城县| 毕节市| 蓝山县| 珠海市| 正镶白旗| 河间市| 夹江县| 廊坊市| 漳州市| 昌平区| 克什克腾旗| 临安市| 罗定市|