<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jinfeng_wang

    G-G-S,D-D-U!

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks
    import java.awt.*;
    import java.awt.print.*;
    import java.io.*;

    /**
    * Utility class to print some lines of text to the default printer. Uses some
    * default font settings, and gets the page size from the PrinterJob object.
    *
    * Note: this little example class does not handle pagination. All the text must
    * fit on a single page.
    *
    * This class can also be used as a standalone utility. If the main method is
    * invoked, it reads lines of text from System.in, and prints them to the
    * default printer.
    */

    public class PrintGIF implements Printable {
    /**
    * Default font size, 12 point
    */
    public static final int DEFAULT_FONT_SIZE = 12;

    /**
    * Default type name, Serif
    */
    public static final String DEFAULT_FONT_NAME = "Serif";

    private PrinterJob job;

    private String typeName;

    private int typeSize;

    private Font typeFont;

    private Font typeFontBold;

    private String[] header;

    private String[] body;

    /**
    * Create a TextPrinter object with the default type font and size.
    */
    public PrintGIF() {
    this(DEFAULT_FONT_NAME, DEFAULT_FONT_SIZE);
    }

    /**
    * Create a TextPrinter object ready to print text with a given font and
    * type size.
    */
    public PrintGIF(String name, int size) {
    if (size < 3 || size > 127) {
    throw new IllegalArgumentException("Type size out of range");
    }
    typeName = name;
    typeSize = size;
    typeFont = new Font(typeName, Font.PLAIN, typeSize);
    typeFontBold = new Font(typeName, Font.BOLD, typeSize);
    job = null;
    }

    /**
    * Initialize the printer job.
    */
    protected void init() {
    job = PrinterJob.getPrinterJob();
    }

    /**
    * Initialize the print job, and return the base number of characters per
    * line with the established font size and font. This is really just a
    * guess, because we can't get the font metrics yet.
    */
    public int getCharsPerLine() {
    if (job == null) {
    init();
    }
    PageFormat pf;
    pf = job.defaultPage();
    double width = pf.getImageableWidth(); // in 72nd of a pt
    double ptsize = typeFont.getSize();
    double ptwid = ptsize * 3 / 4;
    double cnt = (width / ptwid);
    return (int) (Math.round(cnt));
    }

    /**
    * Print some text. Headers are printed first, in bold, followed by the body
    * text, in plain style. If the boolean argument interactive is set to true,
    * then the printer dialog gets shown.
    *
    * Either array may be null, in which case they are treated as empty.
    *
    * This method returns true if printing was initiated, or false if the user
    * cancelled printer. This method may throw PrinterException if printing
    * could not be started.
    */
    public boolean doPrint(String[] header, String[] body, boolean interactive)
    throws PrinterException {
    if (job == null) {
    init();
    }
    if (interactive)
    try {
    if (job.printDialog()) {
    // we are going to print
    } else {
    // we are not going to print
    return false;
    }
    } catch (Exception pe) {
    System.err.println("Could not pop up print dialog");
    // assume user wants to print anyway...
    }

    job.setPrintable(this);
    this.header = header;
    this.body = body;
    job.print();
    job = null; // we are no longer initialized
    return true;
    }

    /**
    * Perform printing according to the Java printing model. NEVER CALL THIS
    * DIRECTLY! It will be called by the PrinterJob as necessary. This method
    * always returns Printable.NO_SUCH_PAGE for any page number greater than 0.
    */
    public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
    throws PrinterException {
    if (pageIndex != 0) {
    return NO_SUCH_PAGE;
    }
    FontMetrics fm;
    graphics.setFont(typeFont);
    graphics.setColor(Color.black);
    fm = graphics.getFontMetrics();

    // fill in geometric and rendering guts here
    int i;
    double x, y;
    x = pageFormat.getImageableX();
    y = pageFormat.getImageableY() + fm.getMaxAscent();

    // do the headings
    if (header != null) {
    graphics.setFont(typeFontBold);
    for (i = 0; i < header.length; i++) {
    graphics.drawString(header[i], (int) x, (int) y);
    y += fm.getHeight();
    }
    }

    // do the body
    if (body != null) {
    graphics.setFont(typeFont);
    for (i = 0; i < body.length; i++) {
    graphics.drawString(body[i], (int) x, (int) y);
    y += fm.getHeight();
    }
    }

    return PAGE_EXISTS;
    }

    /**
    * Main method for testing. This main method sets up a header of
    * "PRINTER TEST" and reads System.in to get body text.
    */
    public static void main(String[] args) {
    BufferedReader br;
    java.util.List lines;

    TextPrinter tp;
    tp = new TextPrinter();
    lines = new java.util.ArrayList();
    try {
    InputStreamReader isr;
    isr = new InputStreamReader(System.in);
    br = new BufferedReader(isr);
    String line;
    for (line = br.readLine(); line != null; line = br.readLine()) {
    lines.add(line);
    }
    br.close();

    System.out.println("chars per line: " + tp.getCharsPerLine());
    System.out.println("attempting to print...");
    String[] headers = new String[1];
    headers[0] = "PRINT TEST";
    String[] body = new String[lines.size()];
    for (int ix = 0; ix < lines.size(); ix++) {
    body[ix] = (String) (lines.get(ix));
    }
    boolean didit = tp.doPrint(headers, body, true);
    System.out.println("doPrint returns " + didit);
    } catch (Exception e) {
    System.err.println("Error printing: " + e);
    e.printStackTrace();
    }
    }
    }














    posted on 2008-08-05 17:13 jinfeng_wang 閱讀(274) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 久久影院亚洲一区| 亚洲国产精品人人做人人爱| 亚洲国产精品热久久| 中文永久免费观看网站| 亚洲乱码日产一区三区| 中文字幕免费在线观看动作大片 | caoporn国产精品免费| 成人伊人亚洲人综合网站222| 朝桐光亚洲专区在线中文字幕| 国产小视频在线观看免费| 爱情岛亚洲论坛在线观看 | 亚洲日本国产精华液| 国产大片91精品免费观看不卡| 亚洲最大黄色网站| 成年人网站在线免费观看| 亚洲AV噜噜一区二区三区| 亚洲电影日韩精品| 91视频免费观看| 亚洲宅男天堂a在线| 暖暖免费高清日本一区二区三区| 青草青草视频2免费观看| 亚洲综合图色40p| 91精品全国免费观看含羞草| 亚洲av成人综合网| avtt亚洲天堂| 久久99国产综合精品免费| 亚洲狠狠色丁香婷婷综合| 亚洲人妻av伦理| 97公开免费视频| 久久亚洲中文无码咪咪爱| 亚洲精品乱码久久久久久| 免费观看无遮挡www的视频| 国产亚洲精品91| 亚洲午夜久久久精品影院| 四虎影视大全免费入口| 在线观看免费播放av片| 亚洲日本久久久午夜精品| 国产亚洲精aa成人网站| 国内免费高清在线观看| 久久国产乱子伦精品免费强| 亚洲一区二区三区在线观看网站|