程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> javase-沒有打印機,如何測試打印程序,所輸出的結果?

javase-沒有打印機,如何測試打印程序,所輸出的結果?

編輯:編程解疑
沒有打印機,如何測試打印程序,所輸出的結果?

例如,下面這段程序,我如何測試他的打印結果呢?

 package com.cn.gao;

import java.awt.Graphics;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.awt.*;
public class PrintTest implements Printable{
    /**

     * @param Graphic指明打印的圖形環境

     * @param PageFormat指明打印頁格式(頁面大小以點為計量單位,1點為1英才的1/72,1英寸為25.4毫米。A4紙大致為595×842點) 

     * @param pageIndex指明頁號

     **/

    public int print(Graphics gra, PageFormat pf, int pageIndex) throws PrinterException {

        System.out.println("pageIndex="+pageIndex);
        Component c = null;

        //print string    
        String str = "中華民族是勤勞、勇敢和富有智慧的偉大民族。";

        //轉換成Graphics2D  
        Graphics2D g2 = (Graphics2D) gra;

        //設置打印顏色為黑色  
        g2.setColor(Color.black);

        //打印起點坐標  
        double x = pf.getImageableX();
        double y = pf.getImageableY();

        switch(pageIndex){
            case 0:
                //設置打印字體(字體名稱、樣式和點大小)(字體名稱可以是物理或者邏輯名稱)  
                //Java平台所定義的五種字體系列:Serif、SansSerif、Monospaced、Dialog 和 DialogInput  
                Font font = new Font("新宋體", Font.PLAIN, 9);
                g2.setFont(font);//設置字體  

                //BasicStroke bs_3=new BasicStroke(0.5f);     

                float[] dash1 = {2.0f};

                //設置打印線的屬性。   
                //1.線寬 2、3、不知道,4、空白的寬度,5、虛線的寬度,6、偏移量  
                g2.setStroke(new BasicStroke(0.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 2.0f, dash1, 0.0f));
                //g2.setStroke(bs_3);//設置線寬 
                float heigth = font.getSize2D();//字體高度   
                System.out.println("x="+x);
                // -1- 用Graphics2D直接輸出   
                //首字符的基線(右下部)位於用戶空間中的 (x, y) 位置處   
                //g2.drawLine(10,10,200,300);   

                Image src = Toolkit.getDefaultToolkit().getImage("F:\\workspace\\QQ.png");
                g2.drawImage(src,(int)x,(int)y,c);
                int img_Height=src.getHeight(c);
                int img_width=src.getWidth(c);
                //System.out.println("img_Height="+img_Height+"img_width="+img_width) ;  

                g2.drawString(str, (float)x, (float)y+1*heigth+img_Height);
                g2.drawLine((int)x,(int)(y+1*heigth+img_Height+10),(int)x+200,(int)(y+1*heigth+img_Height+10));
                g2.drawImage(src,(int)x,(int)(y+1*heigth+img_Height+11),c);

                return PAGE_EXISTS;

            default:

                return NO_SUCH_PAGE;

        }

    }

    public static void main(String[] args) {

        //    通俗理解就是書、文檔   
        Book book = new Book();

        //    設置成豎打   
        PageFormat pf = new PageFormat();
        pf.setOrientation(PageFormat.PORTRAIT);

        //    通過Paper設置頁面的空白邊距和可打印區域。必須與實際打印紙張大小相符。  
        Paper p = new Paper();
        p.setSize(590,840);//紙張大小   
        p.setImageableArea(10,10, 590,840);//A4(595 X 842)設置打印區域,其實0,0應該是72,72,因為A4紙的默認X,Y邊距是72  
        pf.setPaper(p);

        //    把 PageFormat 和 Printable 添加到書中,組成一個頁面    
        book.append(new PrintTest(), pf);

        //獲取打印服務對象  
        PrinterJob job = PrinterJob.getPrinterJob();

        // 設置打印類   
        job.setPageable(book);

        try {
            //可以用printDialog顯示打印對話框,在用戶確認後打印;也可以直接打印  
            boolean a=job.printDialog();
            if(a)
            {
                job.print();
            }else{
                job.cancel();
            }
        } catch (PrinterException e) {
            e.printStackTrace();
        }

    }

}

最佳回答:


安裝一個虛擬打印機軟件,打印到圖片文件或pdf之類的都可以

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved