纯java虚拟打印机

4 篇文章 0 订阅
1 篇文章 0 订阅
在项目中引入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)
  • 下载次数: 277
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值