Pages

Subscribe:

Ads 468x60px

Labels

顯示具有 網頁列印 標籤的文章。 顯示所有文章
顯示具有 網頁列印 標籤的文章。 顯示所有文章

2016年4月12日 星期二

【雛型】Docx套版列印功能試作

資料來源

在我的程式開發生涯中,套版輸出指定格式的報表/表單一直是揮之不去的煩人差事,沒什麼營養,偏偏在每個案子裡幾乎都像小強一樣冒出來。
面對這類需求,轉成網頁是下策,因為列印時排版格式常會亂到一塌糊塗,鮮少讓人滿意。在經驗裡,Reporting Service是不錯的選擇(而且免費)。
但有些報表如確認書、通知書,在格式上並非Gird格式,跟Reporting Service最擅長的表格呈現有點差距,數量一多,要將User提供的Word檔一一轉成Reporting Service報表便成了苦差事,尤其某些文件被要求必須模仿到跟原始樣版分毫不差,常為了一兩公釐急死大丈夫。(有時,所謂原有樣版不過是某個User信手捻來的作品,並非官頒公訂,也沒人說過排版必須完全相符,但是你也知道的,各地風俗民情不同,尤其是澳洲...)
當以上情境發生,直接把User提供Word樣版裡文字換一換,照樣生出個Word檔來,在我看來是最簡便直覺省工的解法。


網頁列印

資料來源

在研究 Web列印時,在網路上看到有關 Web列印的文章如下:
一、 IE直接使用 window.print或 webrower控件的 ExecWB方法來列印網頁。
      1. 關於 ASP.NET頁面打印技術的總結:大陸網站
      2. WEB打印的相關技術分析:大陸網站
      3. WEB列印大全:WebBrowser、FileSystem元件實現 WEB應用中的本地特定列印(LPT1)
     
二、 透過 CSS與 JavaScript,實現網頁列印。
      1. 網頁列印
      2. ASP.NET 線上列印寫法~在網上看到的
      3. js的打印頁面裡指定的內容:大陸網站
三、 撰寫元件(如 Java Applet或 ActiveX)。
      5. WEB打印:大陸網站,沒有提供原始碼,但有敘述其原理。
      6. applet打印的屬性和配置:大陸網站
四、 使用 RSClientPrint控制項或 Crystal Reports報表工具。
      2. Crystal Reports:for .NET Framework 1.1
五、 IE中執行 WinForm控制項,即在網頁中執行 Windows Form控制項或程式。
      1. 利用 XML的實現通用的 WEB報表打印:大陸網站
六、 Silverlight 4 或 Flex3及以上版本的列印功能。
      2. Silverlight的企業應用實戰:SL的4.0打印,讓我拿什麼說愛你?
          認為 Silverlight 4的缺點在於,列印時以點陣圖(Bitmap)方式呈現,所以檔案的大小變大,使得印表機容易產生問題。
七、 將報表轉成 PDF、Excel、Word等檔案輸出至 Client端,藉由套裝軟體(如 Adobe Reader或 Office軟體)印出。
      1. ASP.NET產生PDF檔
      2. 用 Flex和 .NET建造應用系統模組(上):說明如何匯出Excel檔、產生Word檔的步驟。
      4. NPOI 1.2教程(目錄):大陸網站
八、 付費的網頁列印元件或軟體。
2011/12/27新增
九、 使用 SVG(Scalable Vector Graphi,可縮放向量圖形)
      1. SVG - 維基百科
      3. SVG Tutorial
      4. svgweb:SVG Web is a JavaScript library which provides SVG support on many browsers,including IE、Firefox、Safari

網頁列印

開發必備:WEB列印程式碼大全

http://ltww.pbworks.com/w/page/9112654/%E7%B6%B2%E9%A0%81%E5%88%97%E5%8D%B0

web列印1


相信用B/S方式做過應用的人都可能會遇到這樣一個問題,如何方便、美觀地實現報表列印。如果使用瀏覽器的列印菜單列印的話,將把網頁上的一些無用的東西打到報表上,比如應用菜單等。因為選擇列印菜單列印網頁將會把網頁中的所有內容全部列印出來,如果你的應用有分幀則列印內容將包括各幀中的內容,而你實際要的內容只是其中一部分。所以有很多應用就只能把列印功能放到後台完成了。   針對這種情況,我們該怎麼辦?其實可以有多種方法實現網頁列印功能。

  一種方法就是使用專業的列印工具,如Crystal Reports(水晶報表)。用過Visual Studio 5.0的朋友肯定記得這個工具,不過那時的版本只有4.幾。現在的最新版本已達9了,近幾個版本的水晶報表都支援WEB列印。最簡單的方法是先用水晶報表製作好模板,然後使用ASP帶參數呼叫製作好的模板即可。水晶報表在網頁上產生報表後,可以直接列印,也可以轉存為其它的比較通過的檔案如Excel檔案。使用水晶報表可以製作出非常漂亮的樣式,關鍵在你對水晶報表的開發能力上,但由於水晶報表價格較高,只有當項目很賺錢時才買得起。

  第二種方法是購買第三方的網上列印控件,費用同水晶報表相比便宜,但效果性能到底如何則仁者見仁了。


  第三種方法是利用樣式表及JavaScript自定義函數實現。通過樣式表及JavaScript,實現網頁列印,效果也還可以。在此有一個實例請大家看看。下面是列印函數實現詳解:

  好了,一切就緒了,現在要做的就是呼叫DP函數,如果你將實現呼叫的按鈕設計在同一張網頁上,則直接呼叫即可;如果你用了分幀方法,實現呼叫的按鈕是在另一張網頁上,則在DP函數的第一行加入window.focus()命令,否則列印的只是有按鈕的網頁。
  第四種方法,實現是一種取巧的方法。一樣還是通過呼叫window.print()實現,只是將你要列印的內容專門產生一張網頁,而 列印按鈕在另一幀上。假設報表網頁在mainFrame上,按鈕在topFrame上,按鈕呼叫PrintReports()函數,PrintReports()函數如下即可實現列印工作。
function PrintReports() //topFrame網頁中的函數
{
try
// *******************************************************
// 錯誤處理,如果在mainFrame中的網頁沒有DP函數則不列印
// *******************************************************
{
window.parent.frames("mainFrame").DP();
}
catch(e)
{
alert("no object to print!");
}
}
function DP() // mainFrame網頁中函數
{
window.focus();
if (window.print)
{
window.print();
}
}

這是一個朋友推薦得方法,不知道還有沒有別得更好得方法


web列印2


看看








第1頁
這樣的報表
對一般的要求就夠了。

第2頁
看到分頁了吧
這樣的報表
對一般的要求就夠了。


WEB列印 3