Web打印解決方案一:目前的幾種方式及我們的任務

B/S平臺下的MIS軟件,打印是不可缺少的功能,好的報表輸出,能讓你的產品在用戶的心中增加不少的分量。但是打印模塊所花的時間也是非常的多的。其實現方式有如下幾種:
1、使用Crystal Report等通用報表組件來完成

  優點:功能強大,對於CS/BS都可以通用,Crystal Report等甚至與還有Report Service等功能,對於業務流程非常複雜的大項目應該是很適合的了。這種項目人手充足,時間充足,資金也充足,老闆也重視。(這是個人猜測,因爲我沒做過大項目^_^)。

  缺點:工作量大,對每一個報表都需要設計模板,這個需要花費不少的時間和精力。我們這種小項目,流程不復雜,Report Service等功能用不上,也不用CS/BS通用,也許將來某個時候需要需要在C/S下用,但還不知道那是什麼時候。就是需要控制頁邊距、紙張大小等,然後把當前界面或者某個報表(很少的情況)打印出來就可以了。另外,我們因爲項目小,所以項目成員也少,也就5~6個人,項目的開發週期也短,也就2~3個月,如果還需要抽出人手來專門做報表模板,還真有點緊張。看着兄弟們加班加點,還真不忍心再加大工作量。還有一個最要命的是,這些東西真的貴。資金本來就少,還需要買這些服務,一談起這個事情,老闆總是搖頭。

2、使用IE自帶的打印功能,加上CSS的支持

  優點:不用專人花時間來寫打印模板,節省時間,也不要另外花錢,老闆很高興。似乎是一個好的方案。

缺點:功能太弱小了。不能控制頁邊距、紙張大小等,更不用說不打印當前界面而是打印另外一個報表了。這樣,客戶就不高興了,幹嘛非得每次讓我自己設置頁邊距、設置紙張大小、設置頁眉頁腳等,或者是有些報表根本就沒有提供。

3、使用meadroid等提供的免費客戶端打印組件

  優點:同2。

  缺點:meadroid的這個東西很好,可惜只能使用半年。半年之後你必須重新下載,並更改該組件的GUID,真麻煩。如果用戶這個時候正好需要打印,那真是臭大了。而且,如果你想避免這種情況的發生,那就請交錢吧,即使是1年的費用好像也不便宜。這樣的話,我們似乎又回到了第一個解決方案。當然還有許多其他公司提供的免費組件,但是性質和meadroid公司提供的都差不多,費用有便宜的,也有貴的,總的說來,老闆都總是搖頭。

4、使用服務器端生成PDF等文件的方式

    優點:現在生成PDF文件的免費組件很多,不用另外花錢。效果也很好。

缺點:學習困難。代碼量也非常大。而且,對於我們這種需求多變的小項目,一旦客戶的要求變了,那麼就必須相應的更改代碼。維護的代價真的高。

看了這麼幾種方案,都不適合我們使用。還是毛主席老人家講得好,“自己動手,豐衣足食”,看來得自己動手寫一個IE客戶端打印組件了,他實現如下功能:

1、 可以用js控制頁邊距、紙張大小、頁眉頁腳、橫向縱向等。

2、 可以用js控制打印內容。

找了幾天的資料,終於找到了2篇好文:《Beyond Print Preview: Print Customization for Internet Explorer 5.5》、《Print Preview 2: The Continuing Adventures of Internet Explorer 5.5 Print Customization》。看了半天,終於摸出了一點頭緒,在那個Sample的基礎上改了改,做了個ActiveX,現供朋友們使用。可以用js控制頁邊距,設置當前打印的URL,至於紙張大小,頁眉頁腳等功能,容我實現後再提供給朋友們使用。至於源碼,因涉及公司機密,所以……請朋友們見諒。

使用方法:

1、首先在被打印頁面中包含如下語句:

<OBJECT ID="DLPrinter" CLASSID="CLSID:5C230622-45E5-4e3c-893C-3BFDDC4DB5E4" height="0" width="0" codebase="DLPrinter.CAB" ></OBJECT>

2、打印預覽:<input type="button" id="btnPrint" value="Print Preview" />

3、設置頁邊距:

DLPrinter.MarginLeft=20; //這是毫米制的

DLPrinter.MarginRight=20;

DLPrinter.MarginTop=20;

DLPrinter.MarginBottom=20;

4、不打印當前頁面而是另外一個頁面:

DLPrinter.ContentURL="http://www.cnblogs.com/Yahong111/archive/2007/09/19/898326.html";

在後續的文章中,我會講述是如何實現這些功能的。歡迎拍磚。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章