`
xdoc
  • 浏览: 291771 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

纯java虚拟打印机

阅读更多
在项目中引入jpd.jar,示例代码如下:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;

/**
 * 打印示例
 */
public class PrintDemo implements Printable {
    private static final long serialVersionUID = 1L;
    /**
     * printable接口实现
     */
    public int print(Graphics g, PageFormat pageFormat, int pageIndex) throws PrinterException {
        if (pageIndex < 9) {
            g.setColor(Color.BLUE);
            g.setFont(new Font("Tahoma", Font.ITALIC, 10));
            g.drawString("http://www.hgsql.com", 20, 50);
            g.setColor(Color.ORANGE);
            g.setFont(new Font("Tahoma", Font.PLAIN, 100));           
            g.drawString("第" + (pageIndex + 1) + "页", 20, 150);
            return Printable.PAGE_EXISTS;
        } else {
            return Printable.NO_SUCH_PAGE;
        }
    }
}

import javax.print.DocFlavor;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.ServiceUI;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;

/**
 * 虚拟打印机
 * @author wanghg
 */
public class VPrinter {
    /**
     * @param args
     */
    public static void main(String[] args) {
        //声明JPD虚拟打印机
        try {
            Class.forName("com.hg.jpd.JpdPrintService");
        } catch (ClassNotFoundException e1) {
            e1.printStackTrace();
        }
        // 构建打印请求属性集
        PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
        // 设置打印格式
        DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
        // 查找所有的可用打印服务
        PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
        // 定位默认的打印服务
        PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
        if (defaultService != null) {
            PrintService service = ServiceUI.printDialog(null, 200, 200,
                    printService, defaultService, flavor, pras);
            if (service != null) {
                try {
                    service.createPrintJob().print(new SimpleDoc(new PrintDemo(), flavor, null), pras);
                } catch (PrintException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}



  • 大小: 11.5 KB
  • jpd.jar (102.5 KB)
  • 下载次数: 397
分享到:
评论
4 楼 xdoc 2015-07-25  
willralfwill 写道
打出来是pint.jar,是什么东西啊?

结果就是一个jar,是一个桌面应用,可以执行
3 楼 willralfwill 2015-07-22  
打出来是pint.jar,是什么东西啊?
2 楼 zhuiyifengzhong 2013-06-13  
   PrintDemo 继承 Printable能不能直接打开一个指定的文件进行打印?
1 楼 chenjl 2010-11-13  
你好,请问一下关于JAVA监控打印机,是如何获取打印机返回的状态信息。
我的程序中使用swing和jasperreport.


谢谢!

相关推荐

Global site tag (gtag.js) - Google Analytics