Java实现打印功能
来源:互联网 发布:aipc 性能测试 知乎 编辑:程序博客网 时间:2024/06/05 08:12
主要调整x,y坐标的变化来布局(记住类必须implements Printable接口)
public int print(Graphics gra, PageFormat pf, int pageIndex) throws PrinterException { Component c = null; // 转换成Graphics2D Graphics2D g2 = (Graphics2D) gra; // 设置打印颜色为黑色 g2.setColor(Color.black); // 打印起点坐标 double x = pf.getImageableX();//返回与此 PageFormat 相关的 Paper 对象的可成像区域左上方点的 x 坐标。 double y = pf.getImageableY(); switch (pageIndex) { case 0: //新建一个打印字体样式(1.字体名称,2.样式(加粗).3字号) Font font = new Font("微软雅黑", Font.PLAIN, 14); //给g2设置字体 g2.setFont(font); //保存虚线的参数(线长度,缺口长度) float[] dash1 = { 2.0f,0.0f }; // 设置打印线的属性。1.线宽 2、3、不知道,4、空白的宽度,5、线,6、偏移量 g2.setStroke(new BasicStroke(0.5f, BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER, 2.0f, dash1, 0.0f)); float fontHeigth1 = font.getSize2D(); //标题 String str1 ="利息支出凭证"; g2.drawString(str1, (int)x+60, (int)y + fontHeigth1+60); //新建一个字体样式 Font font2 = new Font("微软雅黑", Font.PLAIN, 9); g2.setFont(font2);// 设置字体 // (刷新字体样式)设置打印线的属性。1.线宽 2、3、不知道,4、空白的宽度,5、线,6、偏移量 g2.setStroke(new BasicStroke(0.7f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 2.0f, dash1, 0.0f)); float fontHeigth2 = (int)font.getSize2D(); int tempHeight = (int) (fontHeigth1*2+10); /* * 添加文本 * */ //创建一个文本对象 String str3 ="单据编号:201745545623266656565655454"; //添加到g2的指定位置 g2.drawString(str3, (int)x+250, (int)y + fontHeigth2+10 +tempHeight); /* * 画线 * */ //创建一条线对象 Line2D lin = new Line2D.Float((int)x, (int)y + fontHeigth2*3+10+8 +tempHeight, (int)x, (int)y + fontHeigth2*10+20+4 +tempHeight); //把线添加到g2里面 g2.draw(lin); //放置图片(二维码) Image src = Toolkit.getDefaultToolkit().getImage("D:\\1.jpg"); //把图片添加到g2中(1,图片来源,2.x坐标,3.y坐标,4.宽,5.高) g2.drawImage(src, (int) x+440, (int)( y + fontHeigth2 +tempHeight),50,50, c);//打印条形码 int img_Height = src.getHeight(c); int img_width = src.getWidth(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(595, 842);//纸张大小 p.setImageableArea(40,10, 595,842);//A4(595 X 842)设置打印区域,其实0,0应该是72,72,因为A4纸的默认X,Y边距是72 pf.setPaper(p); //把 PageFormat和 Printable添加到文档中,组成一个页面 book.append(new Test3(), pf); //获取打印服务对象 PrinterJob job = PrinterJob.getPrinterJob(); // 设置打印类 job.setPageable(book); try { //可以用printDialog显示打印对话框,在用户确认后打印; //不加这个可以不提示直接用job.print();函数直接打印 boolean a=job.printDialog(); if(a) { //打印 job.print(); }else{ //取消 job.cancel(); } } catch (PrinterException e) { e.printStackTrace(); }}
阅读全文
0 0
- java 打印功能实现
- java实现打印功能
- Java实现打印功能
- Java实现打印功能
- java实现打印功能
- 用java实现打印功能
- java代码实现打印功能!
- 用java实现打印功能
- 用Java实现打印功能
- 用java实现打印功能
- java web实现打印功能
- 用JAVA实现打印功能
- 用java实现打印功能
- 用java实现打印功能
- 用java实现打印功能
- 用java实现打印功能(转)
- 用java实现打印功能 (转)
- 用java实现打印功能(转)
- 303. Range Sum Query
- String.prototype是什么以及怎么使用
- 虚函数和纯虚函数
- 关于Java并发编程的总结和思考
- 九度OJ 1087:约数的个数
- Java实现打印功能
- 【zookeeper 安装教程】centos 5.8搭建环境
- 2016校招真题解析(一)小米git
- svn使用过程中使用post-commit自动同步如果服务器文件变化怎么处理
- qt在图片中绘制文本且不改变图片像素
- R语言学习-Group by的实现
- 剑指offer——扑克牌顺子(思路,bitmap思想,位运算)
- 支付风控模型
- MATLAB学习笔记 形态学图像处理(一)