网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.JAVA和.NET两个平台对于安全功能.
.在J2ME中实现基于UDP协议通讯程序.
.使用ActionHandler进行WEB应用编.
.CertificationNotes(中英对照).
.undefined 属性.
.eclipse-SDK-3.2M1-win32.
.如何使画出来的文字具有不一样的.
.Redhat9下的java中文问题解决.
.Java程序员面试三十二问.
.实例学习 Struts.
.HotJava?网络时代的热咖啡.
.Java中得到一个字符串中每个字符.
.休闲程序空间:趣说java处理异常的.
.Java模式设计之数据访问对象模式.
.WEB 开发技术系列之一.
.阳光在线电子商务解决方案.
.maven的安装和使用.
.JavaCard开发教程之规范.
.汉字问题深入谈.
.在应用程序中和Applets小程序中使.

对于java的打印问题

发表日期:2008-1-5



  对于Java的打印问题,各种书上谈的很少。我想主要原因可能是java的打印功能太弱了,没有什么可介绍的。 最近,我因为工作的关系,用到了java的打印图象功能。不过因为缺少可参考的例子和教材,我只有查看jdk 的API文档,的确不是很爽。下面就把我的程序给大家讲讲,顺便白话一下java的打印(是jdk1.2的)。 java的打印类都在java.awt.print包下,主要有四个类和两个interface:PrinterJob,PageFormat, Paper,Book; Printable,Pageable。(具体的情况,请查看jdk的API文档,我只讲我程序中用到的部分)
    Interface包括 Printable:主要是用来打印的接口,在打印的时候,它的print()方法不断地被调用,直到 返回NO_SUCH_PAGE为止。
  
  PrinterJob:初始化打印操作,可以显示系统特定的打印对话框,例如windows的。
  
  
  PageFormat:描述可打印区。例如我的程序用的几个方法
  
  
  public double getImageableX();
  public double getImageableY();
  public double getImageableWidth();
  public double getImageableHeight();
  
  
  
  package jinicup.printer;
  
  
  import java.awt.*;
  import java.awt.print.*;
  import java.awt.event.*;
  import javax.swing.JPanel;
  import javax.swing.JFrame;
  import javax.swing.ImageIcon;
  import java.io.*;
  
  
  /**********************************
  * Implemenation of the printer service
  ***********************************/
  public class PrinterImpl extends JPanel
  implements Printable {
  private Image image;
  private PrinterJob printJob;
  
  private double x,y,w,h;
  private int imagew,imageh;
  
  
  PrinterImpl () {
  
  
  printJob = PrinterJob.getPrinterJob();
  printJob.setPrintable(this);
  printJob.printDialog();
  }
  
  
  public int print (Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
  System.out.println("pageIndex"+pageIndex);
  if (pageIndex >= 1) {
  return Printable.NO_SUCH_PAGE;
  }
  x = pageFormat.getImageableX();
  y = pageFormat.getImageableY();
  w = pageFormat.getImageableWidth();
  h = pageFormat.getImageableHeight();
  
  if(imagew >= imageh){
  h=w*imageh/imagew;
  }else{
  w=h*imagew/imageh;
  }
  
  System.out.println(x+" "+y);
  System.out.println(w+" "+h);
  
  
  
  drawGraphics(graphics);
  return Printable.PAGE_EXISTS;
  }
  
  
  public void paint (Graphics graphics) {
  drawGraphics(graphics);
  }
  
  
  private void drawGraphics (Graphics graphics) {
  
  
  graphics.drawImage(image, (int)x,(int)y,(int)w,(int)h, null);
  // graphics.drawOval(10, 10, 100, 50);
  }
  
  
  /**********************************
  * starts the printing
  * @param byteArrayOfJPEGFile a valid byte array of a jpg file (can be directly from the camera)
  ***********************************/
  public void printByteArray (byte[] byteArrayOfJPEGFile) {
  // Toolkit tool = Toolkit.getToolkit();
  // image=tool.createImage(byteArrayOfJPEGFile);
  image = (new ImageIcon(byteArrayOfJPEGFile)).getImage();
  
  imagew=image.getWidth(null);
  imageh=image.getHeight(null);
  System.out.println(imagew+" "+imageh);
  
  
  System.out.println("kkk");
  try {
  System.out.println("start printing");
  printJob.print();
  System.out.println("printing was spooled to the printer");
  } catch (Exception ex) {
  System.out.println(ex);
  }
  return;
  }
  
  
  /**********************************
  * main method, only for text purposes
  * @param args no args are used
  ***********************************/
  public static void main (String[] args) {
  PrinterImpl pi = new PrinterImpl();
  try {
  FileInputStream fs = new FileInputStream("e:/test.jpg");
  System.out.println(fs.available());
  byte[] array = new byte[fs.available()];
  fs.read(array);
  pi.printByteArray(array);
  } catch (Exception e) {
  System.out.println(e);
  }
  }
  }
上一篇:创建Excel格式的数据 人气:543
下一篇:this关键字 人气:572
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐