jsp實現套打(發票列印)

來源:互聯網
上載者:User

   jsp普通列印很簡單,有很多方式,可以用window.print()這種內建的方法,也可以用組件webBrowser,還可以用ScriptX這樣的第三方組件來實現。這樣的列印都是列印預設的A4,如果碰到到發票的列印要怎麼實現呢?
    首先,我們要明白,實現網頁套打,還是用我們現有的方法去實現。
    其次,要知道發票的使用的紙張是不一樣的,首先它用的是複寫紙,要實現複寫紙的列印,必須要用針式印表機,這樣才能在二三張複寫出內容來。同時,發票紙張的大小不是我們平常使用的A4紙,那我們就必鬚根據發票紙張的大小自訂紙張。
    因為發票的列印是一張發票的空白地方列印我們想要的東西,這就需要我們用CSS來控制列印的距離,可以用table或者div來實現列印內容的定位。在這中間可能會遇到問題,因為印表機都有預設的頁面邊界,如果預設的頁面邊界過大,我們在頁面怎麼調,可能打出來都對不上發票,所以必要的時候還要調一下頁面邊界。當定位好了以後,要考慮發票的連續列印問題了,發票一般都是比A4要小,所以如果多張發票的內容放在頁面上,不加以控制的話,列印出來可能只有第一張能對的上發票。我們使用一個CSS來控制列印的分頁:.PageNext{page-break-after:always;}。

    一般發票列印是把內容以及格式用js拼起來,然後放到一個Iframe裡,再列印。


 function printActive(newstr){
  var headstr ='<html><head><title></title></head><body>';
  var footstr = '</body></html>';
  newstr = headstr + newstr + footstr;
  var ifr = document.createElement_x_x("iframe");//建立iframe
    document.body.appendChild(ifr);           //添加iframe
     var ifrdoc = ifr.contentWindow.document;
     //命名
    ifr.name='i_frame';                       
     ifr.id='i_frame';
     ifrdoc.designMode = "on";   //文檔進入可編輯模式
    ifrdoc.open();              //開啟流
    ifrdoc.write(newstr);        //寫入內容
     ifrdoc.close();             //關閉流
     ifrdoc.designMode ="off";   //文檔進入非可編輯模式
    setTimeout("printIframe()","1");    //延遲1毫秒執行
 }

上面的Js就是一種方式,先建立一個Iframe,然後把要列印的內容寫進去,在列印,因為這種列印一般會用到Ajax來從後台取資料,所以Js最後要延遲一毫秒執行,以保證列印的內容可以寫進去。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.