<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      WEB打印的相關技術區分

      [摘要]WEB打印的相關技術分析現有的Web打印控制技術分成幾種方案  自定義控件完成打印  利用IE自帶的WebBrowser控件實現打印  利用第三方控件實現打印以下主要談前兩個方面的內容一、 自定義控...
      WEB打印的相關技術分析

      現有的Web打印控制技術分成幾種方案

        自定義控件完成打印

        利用IE自帶的WebBrowser控件實現打印

        利用第三方控件實現打印

      以下主要談前兩個方面的內容



      一、 自定義控件方式

      自定義控件方式就是利用VB或VC等工具生成COM組件,用定義好的打印格式來分析打印源文件從而實現打印。只有將生成的組件下載并注冊到客戶機上,才能實現在客戶端的打印。

      難點主要是定義打印格式、如何來分析打印源文件,F有的比較好的方法是利用XML技術來全面的解決問題,利用XML可以非常容易地定義打印目標的文本、表格等內容的格式。但對程序員的開發要求高,難度比較大。



      二、 利用WebBrowser實現Web打印

      WebBrowser是IE內置的瀏覽器控件,無需用戶下載。本文檔所討論的是有關IE6.0版本的WebBrowser控件技術內容。與其相關的技術要求有:打印文檔的生成、頁面設置、打印操作的實現等幾個環節。



      (一)、 打印文檔的生成

      1、 客戶端腳本方式

      客戶端腳本分為VBScript、JavaScript、JScript幾種腳本語言。在IE下開發應用使用的語法為JScript的語法,由于它和JavaScript幾乎沒有什么區別,所以也可以稱其為JavaScript(下面簡寫為JS)。一般情況下,主要使用JS來實現DOM文檔的分析,DOM為微軟提出的一種Web文檔模型,主要用來實現Web腳本編程。

      利用JS可以分析源頁面的內容,將欲打印的頁面元素提取出來,實現打印。通過分析源文檔的內容,可以生成打印目標文檔。



      優點:客戶端獨立完成打印目標文檔的生成,減輕服務器負荷;

      缺點:源文檔的分析操作復雜,并且源文檔中的打印內容要有約定;



      2、 服務器端程序方式

      服務器端程序方式,主要是利用后臺代碼從數據庫中讀取打印源,生成打印目標文檔。當的頁面生成時,還應適當考慮使用CSS來實現強制分頁控制。



      優點:可以生成內容非常的豐富的打印目標文檔,目標文檔的內容的可控性強。由于打印內容是從數據庫中獲取的,所以生成操作相對簡單;

      缺點:服務器端負載比較大;



      (二)、 頁面設置

      頁面設置主要是指設置打印文檔的頁邊距、頁眉、頁腳、紙張等內容。頁面設置將直接影響到打印文檔版面的生成效果,所以它和打印文檔的生成有著密切的關系。比如:表格的行數、大小、位置、字體的大小等。

      現有的技術是利用IE6.0內置的打印模板方式來控制頁面設置,其可以對打印目標文檔產生非常大的影響。打印模板可以控制頁邊距、頁眉、頁腳、奇偶頁等內容,并可以將用戶的設置取得,還可以將設置發送到服務器端。

      打印模板技術可以自定預覽窗口和打印格式,最大限度地影響目標文檔和打印效果。



      (三)、 打印操作的實現

      此功能的實現主要是利用WebBrowser控件的函數接口來實現打印、打印預覽(默認的)、頁面設置(默認的)。

      <object ID='WebBrowser1' WIDTH=0 HEIGHT=0

      CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'>

      //打印

      WebBrowser1.ExecWB(6,1);

      //打印設置

      WebBrowser1.ExecWB(8,1);

      //打印預覽

      WebBrowser1.ExecWB(7,1);



      三、 本項目采用的打印方案

      服務器端程序方式、打印預覽接口調用,下面為例,主要參考項目中的:pageErrorPrint.aspx.vb文件

      主調用頁

      function PrintPage(iPageIndex,strQuery)

      {

      var strURL;

      strURL = "PageErrorPrint.aspx?PageIndex=" + iPageIndex + "&QueryString=" + strQuery;

      winPrint=window.open(strURL,"","left=2000,top=2000,fullscreen=3");

      }



      打印頁HTML源中的預覽控制

      <SCRIPT language="javascript">

      document.write("<object ID='WebBrowser' WIDTH=0 HEIGHT=0

      CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object>");

      WebBrowser.ExecWB(7,1);

      window.opener=null;

      window.close();

      </SCRIPT>





      程序頭

      '首先聲明表格容器

      Protected WithEvents phContainer As System.Web.UI.WebControls.PlaceHolder

      '每個表格中的記錄數量

      Private Const ItemPerTable As Integer = 20





      關鍵的實現部分

      '創建一個符合打印要求的表格

      tabPagePrint = NewPrintTable()

      '將表頭添加到此表格中

      Call AddTableTitle(tabPagePrint)



      '初始化記錄器

      i = 0

      iItemIndex = iStartPoint

      For Each clsItem In clsAllData.ErrorCollection

      If i > 0 And i Mod ItemPerTable = 0 Then

      '添加表格控件到頁面中

      phContainer.Controls.Add(tabPagePrint)

      '在頁面中添加一個換行符

      Call AddPageBreak()



      '創建新一輪的表格

      tabPagePrint = NewPrintTable()

      Call AddTableTitle(tabPagePrint)

      End If



      '將記錄添加到表格中

      Call AddItemToTable(iItemIndex, tabPagePrint, clsItem)

      iItemIndex = iItemIndex + 1

      i = i + 1

      Next



      '添加表格控件到頁面中

      phContainer.Controls.Add(tabPagePrint)





      支持函數

      '功能:添加頁的換行符

      Private Sub AddPageBreak()

      Dim ltBreak As LiteralControl



      ltBreak = New LiteralControl("<p style='page-break-before:always'>")

      phContainer.Controls.Add(ltBreak)

      End Sub



      '功能:創建一個符合打印要求的表格

      Private Function NewPrintTable() As Table

      Dim tabSrc As New Table()



      tabSrc.Width = Unit.Percentage(100)

      tabSrc.Attributes("border") = "1"

      tabSrc.CellPadding = 4

      tabSrc.CellSpacing = 0

      tabSrc.BorderWidth = Unit.Pixel(2)

      tabSrc.BorderColor = Color.Black

      tabSrc.Style.Add("FONT-SIZE", "12px")

      NewPrintTable = tabSrc

      End Function


      摘自CSDN論壇




      日韩精品一区二区三区高清