当前位置:  技术问答>java相关

求打印的例子

    来源: 互联网  发布时间:2015-10-11

    本文导语:  求打印的例子 | import javax.swing.*; import java.awt.print.Printable; import java.awt.print.PrinterJob; import java.awt.print.PageFormat; import java.awt.print.PrinterException; import java.awt.*; import java.awt.image.BufferedImage; impor...

求打印的例子

|
import javax.swing.*;
import java.awt.print.Printable;
import java.awt.print.PrinterJob;
import java.awt.print.PageFormat;
import java.awt.print.PrinterException;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.event.ActionEvent;

public class ImagePrint extends JFrame {
    ImageJPanel image;
    Image icon;

    public ImagePrint() {
        super("ImagePrint");
        setSize(400, 400);
        icon = Toolkit.getDefaultToolkit().getImage("meng.jpg");
        image = new ImageJPanel();
        image.setBufferedImage(icon);

        JButton button = new JButton("Print");
        getContentPane().add(image, BorderLayout.CENTER);
        getContentPane().add(button, BorderLayout.SOUTH);
        Action action = new AbstractAction() {
            public void actionPerformed(ActionEvent ea) {
                printIamge();
            }
        };
        button.addActionListener(action);
        setVisible(true);

    }

    public void printIamge() {
        try {
            PrinterJob print = PrinterJob.getPrinterJob();
            print.setPrintable(image);
            if (print.printDialog()) {
                print.print();

            } else {
                return;
            }
        } catch (Exception e) {
            System.out.println(e);
        }

    }

    public static void main(String args[]) {
        ImagePrint i = new ImagePrint();
    }
}

class ImageJPanel extends JPanel implements Printable {

    int max_page = 1;
    Image buffer = null;

    public ImageJPanel() {
    }

    public void setBufferedImage(Image bi) {
        if (bi == null)
            return;
        buffer = bi;
        Dimension d = new Dimension(buffer.getWidth(this),
                buffer.getHeight(this));
        setPreferredSize(d);
        revalidate();
        repaint();
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Dimension d = getSize();
        g.setColor(getBackground());
        g.fillRect(0, 0, d.width, d.height);
        if (buffer != null)
            g.drawImage(buffer, 0, 0, this);
    }


    public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
            throws PrinterException {
        if (pageIndex >= max_page || buffer == null) {
            return Printable.NO_SUCH_PAGE;
        }
        graphics.translate((int) pageFormat.getImageableX(), (int) pageFormat.getImageableY());
        int v_page = (int) pageFormat.getImageableWidth();
        int h_page = (int) pageFormat.getImageableHeight();
        int x = buffer.getWidth(this);
        int y = buffer.getHeight(this);
        if (x == 0 || y == 0) {
            return Printable.NO_SUCH_PAGE;
        }
        int nCol = Math.max((int) Math.ceil((double) x / v_page), 1);
        int nRow = Math.max((int) Math.ceil((double) y / h_page), 1);
        max_page = nCol * nRow;
        int iCol = pageIndex % nCol;
        int iRow = pageIndex / nCol;
        int w = iCol * v_page;
        int h = iRow * h_page;
        int wImage = Math.min(v_page, x - w);
        int hImage = Math.min(h_page, y - h);
        graphics.drawImage(buffer, 0, 0, wImage, hImage,
                w, h, w + x, y + hImage, this);

        System.gc();
        return Printable.PAGE_EXISTS;
    }


}

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.print类docflavor的类成员方法:服务格式化打印数据定义及介绍
  • (急,改天请吃饭,谢)如何把jsp页面的打印按纽关联到IE的打印功能或如何用简单的实现打印页面
  • Linux c字符串中不可打印字符转换成16进制
  • 用applet实现打印,除了弹出系统自带的打印对话框,在自其前后各弹出一个”小应用程序需打印,要继续吗?“的对话框,如何去掉这两个对话
  • java命名空间javax.print类docflavor的类成员方法:客户端格式化打印数据定义及介绍
  • UNIX下如何通过并口,驱动打印机打印格式文件
  • [debian]打印机装好了,但是打印不了,怎么检查是哪里的问题呢?
  • 打印高手请进:如何得到当前正在打印的页数
  • printFinal打印插件-基于jQuery-支持打印预览 printFinal
  • 如何能够只打印,页面上的表格,页面上的上一页,下一页,还有按钮不打印
  • redhat9 如何连接到xp上共享的打印机来打印?
  • 有谁在linux串口下用ESCPOS指令控制打印机打印,碰到问题,请赐教
  • 请问UNIX系统下装上WINDOWS的打印机驱动程序,可否打印?
  • Solaris打印,lp 命令打印有长行的文本文件时后半段被截掉了,怎么办? 急!!!!!!!!!!!!!!!!!!!
  • 如何配置linux,使windows系统可以直接打印到linux的打印机上??
  • jsp页面中如何打印格式报表(不是打印页面内容)?
  • 模拟打印机排队打印效果
  • 如何能够只打印页面上的表格,页面上的上一页,下一页(是链接)和按钮不打印
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请问如何在Unix C程序中使用打印控制码?(已有打印机使用手册)
  • 各位打印过PDF文档吗?我打印的时候,经常打出乱码来,比如don't就会变成乱码,还有其它非英文字符也会变成乱码,有解决方法吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3