开始打印工作之前,可以通过PrinterJob.printDialog来显示一个打印对话框。它给用户一个机会以选择应该打印的页码范围,并可供用户改变打印设置。它是一个本地对话框。

解决方案 »

  1.   

    http://www.javaresearch.org/article/showarticle.jsp?column=451&thread=9145
      

  2.   

    lapwing2002()
    谢谢!但我要做的就是要不出现任何对话框的情况下(preview,page setup ,printer set up)的情况下,实现指定的打印效果
    1.我要打的是两个文件,test.gif,test.txt
    2.我要打的东西只有一页(这两个文件的内容肯定能在一张A4纸上打得下,这是由我的应用决定的)
    3.打印时上边和左边都是靠边的,即上边距和左边距均<1mm
    4.要能打印多国文字(test.txt中的内容)
      

  3.   

    这个程序我早就下载了
    http://www.javaresearch.org/article/showarticle.jsp?column=451&thread=9145
    这个例子不能实现我要的效果
    1.不能将两个文件的内容打在同一张纸上
    2.上边距和左边距均>1mm
    刚工作,又是初学java,
    饭碗攸关,高手帮忙呀!
      

  4.   

    工作中还没有用到过如此要求如果是混打,设置DocFlavor的MIME type为"application/octet-stream" 友情UP!
      

  5.   

    都要小于1mm好像比较困难吧,我没看到过怎么实现的,因为一张打印纸上划分为好几个不同的区域,每个区域好像都有最小值。我试过用kodark的图像处理打印好像也不能页边距<1mm。
    :(
    不过我可以帮你找找资料,这两天白天忙,我回家帮你看看
      

  6.   

    Pager.setImageableArea(1,1,595,842)
    可以解决页边距<1mm的问题,
    打印图片和文本的还没解决
      

  7.   

    要把两个文件里的内容读出来,然后draw到你的Printable里,这里你要重写一个类 implements Printable,在充实print(Graphics graphics, PageFormat pageFormat, int pageIndex){}方法。
        public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
            //int i;
            Graphics2D g2d;
            //Line2D.Double line = new Line2D.Double ();
            //--- Create a graphic2D object a set the default parameters
            g2d = (Graphics2D) g;
            //--- Set the drawing color to black
            g2d.setColor (Color.black);
            g2d.setStroke (new BasicStroke ((float)0.5));
            //--- Translate the origin to be (0,0)
            g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());        //--- Validate the page number
            if (pageIndex == 0) {
                printout(g2d);
                return (PAGE_EXISTS);
            }else{
                return (NO_SUCH_PAGE);
            }
        }private printout(Graphics2D g){
    g.drawImage();//具体你自己看着办吧
    g.drawString();//具体你自己看着办吧}然后再printJob.print();的时候就会将Image和文件内容打印出来了
        public void printOutWithAlertFlag(boolean alertFlag) {
            //--- Create a printerJob object
            PrinterJob printJob = PrinterJob.getPrinterJob();        PageFormat pageFormat = printJob.defaultPage();
            Paper paper = new Paper();
            paper.setSize(this.A4_PAPER_WIDTH,this.A4_PAPER_HEIGHT);
            paper.setImageableArea(this.A4_IMAGEABLE_AREA_X
                                    ,this.A4_IMAGEABLE_AREA_Y
                                    ,this.A4_IMAGEABLE_AREA_WIDTH
                                    ,this.A4_IMAGEABLE_AREA_HEIGHT
                                    );
            pageFormat.setPaper(paper);
            pageFormat.setOrientation(PageFormat.LANDSCAPE);        printJob.setPrintable (this,pageFormat);        if(alertFlag){
                if (printJob.printDialog()) {
                    try {
                        printJob.print();
                    } catch (PrinterException pe) {
                        pe.printStackTrace();
                    }
                }
            }else{
                try {
                    printJob.print();
                } catch (PrinterException pe) {
                    pe.printStackTrace();
                }
            }
        }
      

  8.   

    谢谢ActiveJava(ActiveJava) 
    其实要打一点东西出来很容易,网上有几个例子,书上也有
    但是要打的和自己想要得一样就不太容易了
    这个问题,我也没有很好解决,但能打出来了
    明天回家!
    过年了,大家接分快乐!