国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

對于java的打印問題

2019-11-18 13:25:26
字體:
來源:轉載
供稿:網友

  對于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);
  }
  }
  }

上一篇:this關鍵字

下一篇:創建Excel格式的數據

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石狮市| 三原县| 东山县| 登封市| 无为县| 贺州市| 都江堰市| 阿鲁科尔沁旗| 屏边| 垫江县| 西乌| 南靖县| 鹤山市| 裕民县| 拜城县| 德惠市| 邢台市| 巴里| 朝阳区| 勃利县| 康乐县| 墨竹工卡县| 蚌埠市| 县级市| 漳平市| 万安县| 息烽县| 都江堰市| 克拉玛依市| 雷山县| 潮安县| 吉安县| 彭泽县| 二手房| 马公市| 嘉善县| 崇义县| 博乐市| 高雄县| 历史| 乌什县|