使用SCRIPT直接调用WINDOW的PRINT对话框不就得了 ^-^

解决方案 »

  1.   

    谢谢了,用这种方法WINDOW.PRINT()的局限性很大呀,再一个用这种方法打出来的东西好像都会有一些网页之类的信息在上面,也不能实现套打.请问有没有更好的方法?
      

  2.   

    1,可以用嵌入ie中的word,excel实现,如果你的服务器是tomcat
    word:
    文件头上加:<%@  page  contentType=  "application/msword  "  %  >  
    tomcat\conf\web.xml里:
    <mime-mapping>
            <extension>doc</extension>
            <mime-type>application/msword</mime-type>
        </mime-mapping>
    excel:
    文件头上加:<%@ page contentType="application/vnd.ms-excel" %>
    tomcat\conf\web.xml里:
    <mime-mapping> 
    <extension>xls</extension> 
    <mime-type>application/msexcel</mime-type> 
    </mime-mapping>
    2.直接调用windows函数
    <input type="button" value="print" 
    onclick="window.focus();window.print()">3.调用js 
    //放在head 与 head 之间
    <SCRIPT LANGUAGE=javascript>
    <!--
    function setPrint()
    {
    WB.ExecWB(8,1);
    }
    function previewPrint()
    {
    WB.ExecWB(7,1)
    }
    //-->
    </SCRIPT>
     
    //放在body与body之间
    <OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WB width=0>
    </OBJECT>
    <INPUT type="button" value="打印设置" id=button1 name=button1 onclick="setPrint();">
    <INPUT type="button" value="打印预览" id=button2 name=button2 onclick="previewPrint();">
    4,如果要求很高,就用专业报表工具,不过价格不便宜
      

  3.   

    感谢大家!
    是啊,只打印数据,就是实现套打的基础.
    用嵌入ie中的word,excel实现打印,打是可以打,但是客户端要装上OFFICE.再者,对于客户来说,用起来也会感觉不理想.
      

  4.   

    想研究的话可以试试fop,生成pdf文件打印不想研究的话买一套现有的比如华表等工具
      

  5.   


    用itext(免费的),生成PDF打印。
      

  6.   

    什么叫套打?打印发票时时全部的CSS实现格式,用JS实现分页和打印页眉、页脚。
      

  7.   

    我对这个也很关注,请问itext软件是什么?
      

  8.   

    谢谢各位支持
    用applet在客户端打印有没有实例呀?
    怎么调用客户端的打印机呢?
    我实在写不出来,:)
      

  9.   

    我自己写的打印程序,可根据打印机设置纸型自动缩放。程序稍加改动可实现分页打印功能。
    import java.awt.print.*;
    import javax.swing.*;
    import java.awt.*;
    import java.applet.*;public class Wellsingleprint extends Thread {
    JPanel mypanel;  public Wellsingleprint(JPanel panel) {
      mypanel=panel;
      }  public void run() {
       PrinterJob job = PrinterJob.getPrinterJob ();
        Book book =new Book();
        PageFormat pf = job.pageDialog(job.defaultPage());
        Wellprint pff = new Wellprint(mypanel);
        book.append(pff, pf, 1);
        job.setPageable(book);
        if(job.printDialog()) {
          try {
             job.print();
          } catch (PrinterException e) {
            e.printStackTrace();
          }
        }
       }
    }
    ————————————————————————————————————————
    import java.awt.print.*;
    import javax.swing.*;
    import java.awt.*;
    import java.applet.*;
    import java.math.*;public class Wellprint implements Printable {
    JPanel mypanel;  public Wellprint(JPanel panel) {
       mypanel=panel;
      }  public int print(Graphics g, PageFormat pf, int pageindex) throws PrinterException {
        if (pageindex > 1 ) { // Max_Y
          return  Printable.NO_SUCH_PAGE;
        }
        else {
          Graphics2D g2 = (Graphics2D)g;
          double scale=1;
          double sc1=pf.getImageableWidth()/mypanel.getWidth();
          double sc2=pf.getImageableHeight()/mypanel.getHeight();
          double sc=Math.min(sc1,sc2);
          if(sc<1)   scale=sc;
          // Do a translation.
          g2.translate(pf.getImageableX(), pf.getImageableY());
          g2.scale(scale,scale);
          mypanel.paint(g2); // It's the paint method of your Applet! Nothing need change.
          return Printable.PAGE_EXISTS;
        }
      }
    }
      

  10.   

    你可以考虑Cocoon
    Cocoon支持FO,可以把你的数据采集封装到XSP中,再一个人XSL来进行序列化输出,格式可以有PDF(不可修改),XLS(可以修改),SVG,JPG等等,最重要的它是免费的。
    如果你想直接打的话,可能要用到ActiveX控件,或者其它商业产品,当然价格不菲。自己考虑