欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員
ajava.org書城訂單明細   [br][br]     [br][br]     [br][br]         [br][br]         [br][br]         [br][br]         [br][br]         [br][br]       [br][br]   [br][br]      [br][br]       [br][br]       [br][br]       [br][br]       [br][br]       [br][br]      [br][br]      [br][br]     

WEB打印的幾種方案

admin
2010年7月9日 23:9 本文熱度 5861
js代碼 [url=#][img]/images/icon_copy.gif[/img][/url]        pagesetup([color=#0000ff]'header'[/color],[color=#0000ff]'ajava.org'[/color]);    pagesetup([color=#0000ff]'footer'[/color],[color=#0000ff]'ajava.orgweb打印系列教程'[/color]);             pagesetup('header','ajava.org');    pagesetup('footer','ajava.orgweb打印系列教程');      [p][br][br] -------------------------------------------一 基于web的打印方案比較分析-------------------------------- [br][br]  基于web的套打,難度在于要將瀏覽器中呈現的html,精確地打印到票據中,而且能夠實現對分頁位置的控制。下面就ie瀏覽器所能采用的套打解決方案,來個匯總分析,希望對大家有所幫助。 [br][br]  [b]一、瀏覽器的打印功能菜單[/b] [br][br]  這種方案的優勢是不需要對瀏覽器作任何擴充,是最簡單的辦法,但問題也最多,如: [br][br]  不能精確分頁。瀏覽器一般是根據用戶設置的頁面大小,web頁面的內容多少,來自行決定分頁位置,程序員很難控制。會有頁腳頁眉干擾。 [br][br]  不能準確對齊邊邊距及打印文字。 [br][br]  不能解決連續打印。比如,不是僅打印一張票據,而是連續一次打印若干個票據。 [br][br]  [b]二、使用webbrowser控件+ javascript[/b] [br][br]  這實際上,是瀏覽器打印功能菜單的一種程序調用,與打印功能菜單沒什么兩樣。分頁的問題仍然存在,只不過,可以讓用戶不用去點菜單,直接在網頁中的一個按鈕,或一個鏈接里面調用罷了。 [br][br]  [b]三 、使用print css[/b] [br][br]  這是一種最理想的實現web套打的方法。這種方法通過在html文檔中,嵌入打印相關的css樣式,來實現對html文檔輸出打印的控制,比如設置紙張大小,紙張縱橫方向,打印邊距,分頁等。顯而易見,這種方式成本小,不需要下載任何插件,而且跨平臺性非常好。print css推出已經有些時日,但遺憾的是,至今沒有一個廠商的瀏覽器很好地實現了這些標準,這使得程序員目前還不能利用print css進行實際的開發。關于打印css,參見http://css-discuss.incutio.com/?page=printstylesheets [br][br]  [b]四 、使用pdf文件[/b] [br][br]  用這種方式,就是從服務器端下載一個pdf文件流,在ie中用adobe插件打開,然后用adobe的打印菜單進行打印,雖然這種方案,也能實現精確套打,但需要下載adobe插件。這是國外報表工具經常推薦的一種打印方法,但在pdf不那么普及的中國,這種方案不是最好選擇。 [br][br]  [b]五 、采用純activex[/b] [br][br]  這種方案就是下載一個控件,票據的數據不再以html方式呈現,而是呈現在activex中。這種方案的優點是打印的精確度高,分頁的可控性好,但缺點也是很明顯的,嵌入activex控件破壞了web應用的整體html風格,且這樣的控件比較大(一般超過1m),下載頗費時間)。市場上的非java類報表產品,一般都采用這種方案。 [br][br]  [b]六 、采用applet方式[/b] [br][br]  采用applet方式,分頁或精確打印,都可以做到完美,但缺點也很明顯,表現在: [br][br]  安裝applet成本巨大。需要下載十幾m的文件。 [br][br]  打印報表時,需要重新向服務器檢索數據,效率低。因為applet方案,一般采用html方式呈現數據,打印時applet必須向服務器檢索同一張票據的數據,看上去,是打印了當前頁的票據,實際上,applet根本不會用當前html頁的數據來打印,而是向服務器下載數據到applet中來打印。也就是說,打印的話,必須兩次請求,一次html呈現,一次用來打印。 [br][br]  不能解決連續打印。比如,不是僅打印一張票據,而是連續一次打印若干個票據。 [br][br]  不能解決打印機設置問題,如存在多臺打印機時,總是需要手工選擇,打印到哪一臺打印機。 [br][br]  市場上java類的報表工具,一般推薦applet方式來實現打印。 [br][br]  [color=red][b]七 、輕量級的activex打印方式[/b][/color] [br]-----scriptx----- [br] scriptx的免費版本好點,已經能滿足大部分的需求. [br]meadco's scriptx控件有兩種使用方式,一種是做為免費版本使用,一種是做為收費版本使用,免費版本支持的功能要少些,不過最重要也是最常用的頁面設置,它還是提供的,因此使用免費版本即可。不過這兩個版本用的都是同一個cab文件,只不過在代碼設置中有一些不同。 [br][br]-----pazu (四方)----- [br] pazu 個人或者商業使用均真正免費授權,無ip或者域名限制。 [br][br] pazu自2009年6月起采用免費的許可,申請時,您必須有確定的ip地址或者域名(主機名),pazu是綁定ip或者域名的,ip或域名尚未確定的我們不能頒發授權,另外,授權一經頒發就不能修改綁定。 綁定的ip和域名必須是最終用戶的,所以,最終用戶的應用網站必須和4fang網站做好鏈接,否則 pazu會因為無法驗證授權的合法性而不能正常工作(內網應用除外)。 [br][br]企業可以購買開發集成版(適合項目集成或者產品開發公司,提供keygen工具,自己生成許可授權,不限制發行) [br][br][br]-----jatoolsprinter(杰表.打印控件)----- [br] 免費版本只能在192.168.*** 網段使用,2.0之前的版本有免費版本,2.0之后是收費的。目前最新版本是4.2.他們可以通過web腳本來選擇輸出打印機,紙張大小,打印方向等,不必每次手工設定。 [br][br]價格請看:http://jatools.com/print/howtobuy.htm [br][br][br] [br]  對于簡單的打印,我們用ie的功能就可以了,對于需要復雜的設置的,建議使用輕量級的activex打印方式。在接下來的系列教程里,我們會一一介紹。 [br][br][br][br]---------------------------------------二 使用ie的打印功能進行一般的網頁打印----------------------------- [br][br]在我們進行web開發的時候,通常會需要用到打印,然而,由于web技術的限制及考慮到安全的問題,一直以來,web打印的功能都是非常弱的,對此,我們也只能接受。也許你在開發過程中經常會遇見客戶對你說,“你們系統的打印太差了,你看看excel的打印多好啊,”,面對這樣的用戶,我們除了苦笑,還能說什么呢?如果你對著他們去解釋什么是bs架構,什么是cs架構,不但不能夠解決問題,反而會招致用戶的反感。 [br][br]  那么,我們是不是就什么都不能做了呢?答案當然是否定的。利用現有的web技術,再加上針對求的靈活實現,我們也可以做出漂亮的打印出來。 [br][br]  在接下來的幾篇文章里,我將分別介紹幾種打印的方法或技術。這些方法有的很簡單,有的稍微復雜一點。我們還是從基礎做起,先了解最簡單的打印技術,然后再一步一步提高,這樣也有利于消化技術。 [br][br]  本篇內容講述利用ie提供的簡單的打印功能,進行打印的設置以及打印。 [br][br]  在ie里打印,我們可以通過javascript來調用window.print()函數實現。下面是一個簡單的代碼示例。[/p] [p] [/p] java代碼 [url=#][img]/images/icon_copy.gif[/img][/url]     [p] 點擊“打印”后,即可彈出打印窗口,如下圖 [br][br][img]http://dl.javaeye.com/upload/attachment/269213/9991e273-7cd0-3894-a367-5521d62ab6d6.bmp[/img][br] [/p] [p]通過這個函數,可以實現最簡單的打印功能。如果我們要對紙張,頁邊距進行設置,那該怎么做呢? 我們知道,我們可以方便地通過 internet explorer 用戶界面更改頁邊距、頁眉和頁腳設置和默認 internet explorer 打印機,ie也提供了一個叫webbrowser 控件來供我們調用,通過調用,可以在頁面上調出打印的設置窗口,在設置窗口里,用戶可以更改頁邊距、頁眉和頁腳設置等。(但是,在 internet explorer 或 webbrowser 控件下沒有以編程方式更改這些設置的方法。在本系列教程的第三篇,我將介紹如何在頁面上通過編程的方式來更改設置。)我們可以在頁面上輸入如下代碼來調用webbrowser 控件。[/p] java代碼 [url=#][img]/images/icon_copy.gif[/img][/url]                       [p] [/p] [p]上例中的object就是ie提供的打印控件,叫webbrowser,我們在網頁中可以用我們設置的id或name來引用它。 [br][br]  這個對象有很用法,其中涉及到打印的有下面三項。 [br][br]  wb.execwb(6,1) 打印 [br][br]  wb.execwb(7,1) 打印預覽 [br][br]  wb.execwb(8,1) 打印頁面設置 [br][br]  點擊“打印”按鈕,即可彈出和window.print()函數一樣的窗口。 點擊打印預覽,即可預覽當前頁面。[/p] [p] [/p] [p][br][img]http://dl.javaeye.com/upload/attachment/269215/6ef00446-139a-33ac-857e-e6fddd458e12.bmp[/img][br] [/p] [p]點擊“頁面設置”,即可彈出頁面設置窗口,在設置窗口里,可以對邊距,頁眉等進行詳細設置。 [br][br][img]http://dl.javaeye.com/upload/attachment/269217/ba95de22-7d89-3640-84d6-c7406e38386a.bmp[/img][br] [/p] [p] [/p] [p]通過以上三個功能,我們就可以進行簡單的打印和設置了,對于一般的打印需求來說基本足夠。 [br][br]  這里需要說明的是,“頁面設置”中的各個值,是存儲在用戶的注冊表中。 [br][br]  下面是 microsoft internet explorer 訪問打印設置的方式: [br][br]  對于頁邊距,microsoft internet explorer 首先嘗試從以下注冊表項中獲取值:[/p] java代碼 [url=#][img]/images/icon_copy.gif[/img][/url] hkey_current_usersoftwaremicrosoftinternet explorerpagesetup hkey_current_usersoftwaremicrosoftinternet explorerpagesetup [p] [/p] [p]如果沒有此項,internet explorer 將通過從以下注冊表項中復制值來創建此項:[/p] [p] [/p] java代碼 [url=#][img]/images/icon_copy.gif[/img][/url] hkey_local_machinesoftwaremicrosoftinternet explorerpagesetup hkey_local_machinesoftwaremicrosoftinternet explorerpagesetup [p] 如果沒有此項,將提供默認值。 [br][br]  對于頁眉和頁腳,將從以下項中獲取值:[/p] java代碼 [url=#][img]/images/icon_copy.gif[/img][/url] hkey_current_usersoftwaremicrosoftinternet explorerpagesetup hkey_current_usersoftwaremicrosoftinternet explorerpagesetup [p] 如果沒有此項,將提供默認值。 [br][br]  頁邊距的默認值是 0.75, [br][br]  對于 internet explorer 默認打印機,默認值將從以下項提供: [/p] [p] [/p] java代碼 [url=#][img]/images/icon_copy.gif[/img][/url] hkey_current_usersoftwaremicrosoftinternet explorerpagesetupprinter   hkey_current_usersoftwaremicrosoftinternet explorerpagesetupprinter   [p] [/p] [p]請注意,這些值作用于整個系統,影響著當前用戶的 webbrowser 控件和 internet explorer 的所有實例。因此,如果你設置了第一張網頁的頁眉是“ajava.org”,那么第二張網頁的頁眉也是它。 [br][br]  那么,有沒有一種辦法,能夠在程序里對這些選項進行設置,而不需要用戶每次都手工來設置呢?請看下面. [br][br][br][br][br][br]------------------------------------三 使用wscript.shell通過編程方式進行復雜的web打印設置----------------------------- [br][br]上篇文章介紹了如何進行簡單的打印和設置,適用與一般的打印要求,如互聯網上網站的打印。然而,在我們為政府或企業開發系統時,打印需求較為復雜,一般的打印設置可能滿足不了用戶需求,特別是為了用戶良好的可操作性,不能要求用戶在打印時都手工進行打印設置,這時,就需要我們在程序里實現對打印的預設置,用戶只需要點擊打印就可以了。 [br][br]  那么如何實現可編程的打印設置呢?有很多種方法,本文將介紹wscript.shell來進行打印設置。 [br][br]  使用wscript.shell,必須要求客戶ie允許 activex進行交互。如果是你開發的系統是針對于特定的用戶群,如一個政府單位,或一個企業,那么建議你要求客戶將你的系統加入可信任站點。 [br][br]  從《[ajava原創]web打印系列教程之二--使用ie的打印功能進行一般的網頁打印》一文中,我們知道,頁邊距,頁眉,頁腳是存儲在注冊表里的。因此,接下來,我們主要是針對注冊表進行可編程設置。 [br][br]  請看如下代碼。[/p] js代碼 [url=#][img]/images/icon_copy.gif[/img][/url] ajava.orgweb打印系列教程           [color=#008200]//定義注冊表位置    [/color] [b][color=#7f0055]var[/color][/b] hkey_path=[color=#0000ff]"hkey_current_user\software\microsoft\internet explorer\pagesetup\"[/color];        [color=#008200]//name的值可為header(頁眉),footer(頁腳),margin_bottom(下邊距),margin_left(左邊距),margin_right(右邊距),margin_top(上邊距)。    [/color] [color=#008200]//    [/color] [b][color=#7f0055]function[/color][/b] pagesetup(name,value) {     [b][color=#7f0055]try[/color][/b] {     [b][color=#7f0055]var[/color][/b] wsh=[b][color=#7f0055]new[/color][/b] activexobject([color=#0000ff]"wscript.shell"[/color]);     wsh.regwrite(hkey_path+name,value);     [color=#008200]//修改注冊表值    [/color] }     [b][color=#7f0055]catch[/color][/b](e){        alert([color=#0000ff]'需要運行運行activex才能進行打印設置。'[/color]);    }     }         ajava.orgweb打印系列教程           //定義注冊表位置    var hkey_path="hkey_current_user\software\microsoft\internet explorer\pagesetup\";        //name的值可為header(頁眉),footer(頁腳),margin_bottom(下邊距),margin_left(左邊距),margin_right(右邊距),margin_top(上邊距)。    //    function pagesetup(name,value) {     try {     var wsh=new activexobject("wscript.shell");     wsh.regwrite(hkey_path+name,value);     //修改注冊表值    }     catch(e){        alert('需要運行運行activex才能進行打印設置。');    }     }         [p] [/p] [p] [/p] [p]面的代碼是本道寫的一個簡單的函數,它可以對header(頁眉),footer(頁腳),margin_bottom(下邊距),margin_left(左邊距),margin_right(右邊距),margin_top(上邊距)進行設置。 [br][br]  如果你想對一個要打印的網頁通過編程方式進行以上設置,只需要調用pagesetup即可。例如:[/p] [p]如果你沒有把站點加到可信任站點,那么在執行上面的代碼時,可能會彈出一個對話框。如下。[/p] [p]  圖片1[/p] [p]  選擇“是”,程序即對打印進行了設置。如果你打開頁面設置窗口,你會發現,頁眉,頁腳,已經被修改了。[/p] [p]  圖片1[/p] [p]  對于頁邊距的值,你只需要根據你自己的版面要求進行設置成相關的值就可以了。下面主要講一下頁眉頁腳的詳細值?!⊥ǔN覀儠陧撁技由暇W頁的標題,在頁腳加上頁面代碼,日期等等,我們該如何設置呢?[/p] [p]  下面就是可供我們使用的一些項目及值。[/p] [p]  鍵入 要打印[/p] [p]  &w 窗口標題[/p] [p]  &u 網頁地址 (url)[/p] [p]  &d 短日期格式(由“控制面板”中的“區域設置”指定)[/p] [p]  &d 長日期格式(由“控制面板”中的“區域設置”指定)[/p] [p]  &t 由“控制面板”中的“區域設置”指定的時間格式[/p] [p]  &t 24 小時時間格式[/p] [p]  &p 當前頁號[/p] [p]  &p 網頁總數[/p] [p]  && 單個 & 號 (&)[/p] [p]  &b 緊跟在這些字符之后的文本居中打印。[/p] [p]  &b&b 緊跟在第一個 "&b" 之后的文本居中打印,跟在第二個 "&b" 之后的文本按右對齊方式打印。[/p] [p]  光看這些說明可能有些不直觀,我們還是來點例子吧。[/p]        [br][br]pagesetup('header','&b&w&b&d');    [br][br]pagesetup('footer','ajava.org網站出品&b&w&b第&p頁,共&p頁');    [br][br]    [p]  運行后頁眉如下圖。[/p] [p]圖片1[/p] [p]  頁腳如下圖。[/p] [p][url=http://img.ddvip.com/2009_03_24/1237876151_ddvip_2447.png]  圖片看不清楚?請點擊這里查看原圖(大圖)。[/url][/p] [p]  圖片1[/p] [p]  對于其他的參數都很好理解,這里我只解釋一下如何居左,居中,居右。[/p] [p]  要想居中,使用“&b”,緊跟在這些字符之后的文本居中打印。例如“&b教程”,那么“教程”就會居中。[/p] [p]  要想居右,就在居中的后面再加上“&b”。例如“&b教程&b打印系列”,那么“教程”就會居中,打印系列就會居右。[/p] [p]  如果你不想居中,只要居右,“&b&b打印系列”這樣就可以了。[/p] [p]  第一個“&b”前面的文字都是居左。[/p] [p]  通過wscript.shell的使用,我們已經可以通過編程方式進行打印設置了,應該說,普通的打印需求都可以實現了。但是,在日常的打印里,還有一種特色的需求,那就是分頁,對于分頁打印,我們該如何實現呢?請看《[ajava原創]web打印系列教程之四--簡單的web打印分頁設置》[/p] [p]  在講述如何分頁打印之前,我們有必要先了解一下css中不為人知的一些用法。[/p] [p]  css里media的使用[/p] [p]  我們在網頁里引用外部的css文件時,通常是用如下的代碼:[/p]    [p][/p] [p]  實際上,上面的link對象里,我們是省略了一個叫“media”的屬性,這個屬性指定樣式表規則用于指定的設備類型。它有如下值可用:[/p] [p]  all-- 用于所有設備類型[/p] [p]  aural-- 用于語音和音樂合成器[/p] [p]  braille-- 用于觸覺反饋設備[/p] [p]  embossed-- 用于凸點字符(盲文)印刷設備[/p] [p]  handheld-- 用于小型或手提設備[/p] [p]  print-- 用于打印機[/p] [p]  projection-- 用于投影圖像,如幻燈片[/p] [p]  screen-- 用于計算機顯示器[/p] [p]  tty-- 用于使用固定間距字符格的設備。如電傳打字機和終端[/p] [p]  tv-- 用于電視類設備[/p] [p]  這么多的值,并不是每個都可用,因為瀏覽器廠商并沒有全部實現它們。[/p] [p]  在ie里面,可用的值有all,print,screen三個。上面的代碼里,我們沒有使用“media”,實際上ie或其他瀏覽器是用了“all”這個值?!皊creen”,用于顯示器,也就是我們一般看到的效果?!皃rint”,用于打印的效果。[/p] [p]  也就是說,我們沒有指定“media”,那么我們看到的效果和打印的效果,它們用的都是同樣的css文件。如果我們指定了一個“screen”,又指定了一個“print”,那么在打印時就會用“print”指定的css來渲染網頁并打印。例如一個網頁里有如下代碼:[/p]      [br][br]    [p]  那就表示,我們通過ie看到的網頁,用到的css文件是mycss.css,而通過ie打印時用到的css文件則是myprintcss.css。想到什么了嗎?對,我們可以通過print的設置,來讓網頁上的一些不需要打印的內容隱藏起來,比如,打印按鈕。實際上,media還可以這樣使用:[/p]    [br][br]//這里定義你要打印時用到的css類    [br][br]   [p]  或者這樣使用:[/p]    [p]  css里用于打印的屬性[/p] [p]  page-break-after : auto | always | avoid | left | right | null[/p] [p]  參數:[/p] [p]  auto : 假如需要在對象之后插入頁分割符[/p] [p]  always :始終在對象之后插入頁分割符[/p] [p]  avoid : 避免在對象后面插入頁分割符[/p] [p]  left : 在對象后面插入頁分割符直到它到達一個空白的左頁邊[/p] [p]  right :在對象后面插入頁分割符直到它到達一個空白的右頁邊[/p] [p]  null : 空值。ie5用來取消頁分割符設置[/p] [p]  這個page-break-after,主要用來在打印時插入一個分頁符,分頁就靠它了。它還有個雙胞胎的兄弟,叫page-break-before,參數和它一樣,看名字即知道它是用來在對象之前插入分頁符。[/p] [p]示例[/p] [p]  在理解了以上兩個css用法后,下面通過一個示例來說明如何分頁。[/p]    [br][br]    [br][br]   ajava.org書城訂單明細   [br][br]     [br][br]    [br][br]   [br][br]   [br][br] 
   [br][br]    [br][br]   [br][br]   [br][br]   [br][br]   [br][br]   [br][br]
   [br][br]    [br][br]
書名價格送貨地址送貨時間狀態
《java 編程思想》¥60.00伊拉克巴格達總統府9棟8單元7門654室2009-8-8已送達

該文章在 2010/7/9 23:09:22 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved