`
石头茨
  • 浏览: 18805 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

JAVA针式打印机打印整理

    博客分类:
  • java
 
阅读更多
转载于:http://blog.sina.com.cn/s/blog_8f54b9f901014fl9.html

在项目中,经常有可能需要通过针式打印机打印一些票据,如快递单,发票等...

之前在做JAVA打印时,也在网上找了好多资料,网上资料太多,讲的也不够详细,走了不少弯路,在做这个之前,连针式打印机都很少接触。。。,不多说了,言归正传吧

1、在编写代码之前,最好测试一下在你本机是否可以连接到打印机,正常打印,如果你本机都无法打印,也就不要指望程序可以打印了。

2、本机可以连接到打印机并可以打印后,就可以开始写代码了,首先写一个最简单的程序,打印一句最简单的话,代码如下:

package com.gotomycloud.print;



import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Graphics2D;

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;



public class Print implements Printable {

   private int pageSize;//打印的总页数

   private double paperW=0;//打印的纸张宽度

   private double paperH=0;//打印的纸张高度

   //实现java.awt.print.Printable接口的打印方法

   //pageIndex:打印的当前页,此参数是系统自动维护的,不需要手动维护,系统会自动递增

   public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)

        throws PrinterException {

      if (pageIndex >= pageSize)

        //退出打印

        return Printable.NO_SUCH_PAGE;

      else {

        Graphics2D g2 = (Graphics2D) graphics;

        g2.setColor(Color.BLUE);

        Paper p = new Paper();

        //此处的paperW和paperH是从目标打印机的进纸规格中获取的,实际针式打印机的可打印区域是有限的,

        //距纸张的上下左右1inch(英寸)的中间的距形框为实际可打印区域,超出范围的内容将不会打印出来(没有设置偏移的情况)

        //如果设置偏移量,那么超出的范围也是可以打印的,这里的pageW和pageH我是直接获取打印机的进纸规格的宽和高

        //也可以手动指定,从是如果手动指定的宽高和目标打印机的进纸规格相差较大,将会默认以A4纸为打印模版

        p.setImageableArea(0, 0, paperW, paperH);// 设置可打印区域

        p.setSize(paperW,paperH);// 设置纸张的大小

        pageFormat.setPaper(p);

        drawCurrentPageText(g2, pageFormat);//调用打印内容的方法

        return PAGE_EXISTS;

      }

   }



   // 打印内容

   private void drawCurrentPageText(Graphics2D g2, PageFormat pf) {

      Font font = null;

      //设置打印的字体

      font = new Font("新宋体", Font.BOLD, 11);

      g2.setFont(font);// 设置字体

      //此处打印一句话,打印开始位置是(200,200),表示从pf.getPaper()中座标为(200,200)开始打印

      //此处200的单位是1/72(inch),inch:英寸,所以这里的长度,在测量后需要进行转换

      g2.drawString("打印测试打印测试打印测试打印测试打印测试打印测试打印测试打印测试打印测试打印测试打印测试",200,200);

   }

   //连接打印机,弹出打印对话框

   public void starPrint() {

      try {

        PrinterJob prnJob = PrinterJob.getPrinterJob();

        PageFormat pageFormat = new PageFormat();

        pageFormat.setOrientation(PageFormat.PORTRAIT);

        prnJob.setPrintable(this);

        //弹出打印对话框,也可以选择不弹出打印提示框,直接打印

        if (!prnJob.printDialog())

           return;

        //获取所连接的目标打印机的进纸规格的宽度,单位:1/72(inch)

        paperW=prnJob.getPageFormat(null).getPaper().getWidth();

        //获取所连接的目标打印机的进纸规格的宽度,单位:1/72(inch)

        paperH=prnJob.getPageFormat(null).getPaper().getHeight();

        //System.out.println("paperW:"+paperW+";paperH:"+paperH);

        prnJob.print();//启动打印工作

      } catch (PrinterException ex) {

        ex.printStackTrace();

        System.err.println("打印错误:" + ex.toString());

      }

   }

   //入口方法

   public static void main(String[] args) {

      Print pm = new Print();// 实例化打印类

      pm.pageSize = 2;//打印两页

      pm.starPrint();

   }

}



在打印过程中,很可能代码正确,但是打印时,纸上确没打印上,原因很可能是纸张放的位置有偏差,所以打印测试时,可以让测试打印的打印内容多一点,只要能打印出内容就可以了

3、如果可以打印出内容,哪怕是一条线,那么第一步就算好了。下面就是控制打印位置了,打印的位置在纸张上是有一个最左上角点的(0,0),下图是一张类似的快递单打印纸,图上标有打印的起始位置、可打印区域等,可供参考,如下图所示





知道了打印位置的规律,就可以通过测试来设置内容的打印位置了。

4、上面讲的是单张打印,但很多时间需要批量打印,这样可以减少很多重复的工作,如果单张打印可以了,那多张打印也比较简单,首先要设置进纸规格,和偏移量,如果是共享的网络打印机,那么两边都需要设置,最后就是要在代码中设置打印区域和纸张大小了,关键部分代码上面已提到,可参考!

  • 大小: 22.3 KB
分享到:
评论

相关推荐

    java实现针式打印机套打功能

    总之,Java和SpringBoot为我们提供了强大的工具来实现针式打印机的套打功能,无论是简单的文档打印还是复杂的多联单据处理,都能通过编程灵活控制。关键在于理解打印服务模型,正确配置打印参数,并进行充分的测试以...

    针式打印机打印头24针测试程序

    针式打印机打印头24针测试程序针式打印机打印头24针测试程序针式打印机打印头24针测试程序针式打印机打印头24针测试程序针式打印机打印头24针测试程序针式打印机打印头24针测试程序针式打印机打印头24针测试程序针式...

    针式打印机万能驱动V3.0.rar

    针式打印机作为一种特殊的打印设备,主要应用于发票、报表、单据等大量连续纸张的打印。针式打印机的原理是通过机械式的打印头,利用打印针击打色带,将字符或图形打印在纸上。相较于喷墨打印机和激光打印机,针式...

    针式打印机测试软件 DOS版

    在信息化发展的早期阶段,针式打印机因其耐用、成本低和适合大量打印发票、单据等特点而广泛应用于办公和商业环境中。然而,随着技术的进步,针式打印机逐渐被喷墨和激光打印机所取代,但依然在某些领域如银行、邮政...

    针式打印机打印针测试工具

    针式打印机打印针测试工具是一种专门用于检测针式打印机核心部件——打印针工作状态的软件。针式打印机,作为打印机的一种类型,以其独特的打印方式在发票、收据、多层复写纸等领域有着广泛的应用。它通过一组精密的...

    针式打印机断针测试软件合集.rar

    针式打印机断针测试软件合集是一个非常实用的资源包,专为检查和评估针式打印机的打印头状况而设计。针式打印机以其耐用性和成本效益在某些领域,如发票打印、多层表格打印等,仍占有一定市场。然而,由于其工作原理...

    针式打印机打印问题剖析.pdf

    针式打印机打印问题剖析 针式打印机在办公应用中的常见问题及解决方法 随着科技的进展,激光打印机与喷墨打印机已取代针式打印机成为目前主流的办公设备。但由于针式打印机具有很多技术优势,使得它成为部分行业中...

    针式打印机断针测试软件

    针式打印机断针测试软件是一种专门用于检测针式打印机打印头状态的小型应用程序。针式打印机,作为传统的打印设备,其工作原理是通过一组细小的金属针击打色带来形成文字和图像。这些金属针是打印机的核心部分,如果...

    针式打印机打印头的结构及工作原理

    针式打印机打印头的结构及工作原理 任务1:认识和掌握针式打印头的结构特点。 针式打印机的机械部分故障占针式打印机故障的大部分,主要集中于打印头、字车机构、输纸机构、色带机构等。下面我们首先来学习打印头的...

    EPSON 针式打印机测针软件

    针式打印机以其独特的打印原理,能够在各种介质上实现清晰、持久的打印效果,尤其适合打印发票、收据等需要长期保存的文档。然而,针式打印机的维护与故障排查相对复杂,其中,打印针的状态至关重要。EPSON针式...

    针式打印机针头测试程序.rar

    针式打印机作为一款传统的打印设备,其工作原理是通过一组细小的金属针打击色带在纸上形成文字或图像。针头是针式打印机的核心组件,它的状态直接影响打印质量和耐用性。"针式打印机针头测试程序"是为了帮助用户检测...

    映美针式打印机打印头测量方法大全.pdf

    映美针式打印机的打印头测量方法涉及几个关键部分的检查,这包括线圈和热敏电阻的测量。针式打印机的打印头是打印机的核心部件之一,承担着将墨水或色带上的油墨转移至纸张上的任务,因此它的正常运作对打印质量至关...

    针式打印机免驱动测试软件.rar

    针式打印机的工作原理是通过打印头上的金属针击打色带,在纸上形成字符或图像。断针是指打印头上的某个针失去作用,无法正常打印,这可能导致打印质量下降,文字或图像部分缺失。因此,断针测试对于及时发现和解决...

    针式打印机VC程序,已经调试通过的

    针式打印机VC程序是一种利用Microsoft Visual C++(VC++)编写的软件,用于精确控制针式打印机执行打印任务。针式打印机通常使用机械式的打印头,由多针排列组成,每针撞击色带来形成文字或图像,适用于大量、经济且...

    针式打印机针测试程序

    针式打印机,作为传统的打印设备,以其独特的打印方式在某些领域仍有着不可或缺的地位,尤其是在发票、凭证等需要长期保存的文档打印中。针式打印机的工作原理是通过一组细小的金属针撞击色带,使色带上的墨粉转印到...

    针式打印机断针检测工具(非常好用,自己亲测)

    针式打印机断针检测工具是一种专门用于检测针式打印机内部打印针是否断裂的软件应用。针式打印机,作为传统的打印设备,主要依靠打印头上的金属针击打色带来形成字符或图像。随着时间的推移,打印针由于高频振动可能...

    针式打印机断针补偿调整工具.rar

    针式打印机断针补偿调整工具是一款专为解决针式打印机常见问题而设计的软件应用,主要针对的是打印机在打印过程中出现的断针现象。断针是针式打印机中常见的故障,由于打印头的针头在高速击打色带时可能会因磨损或...

    针式打印机套打程序针式打印机套打程序

    在商业和办公环境中,针式打印机常用于打印多联表格、发票、收据等,因为它们能够穿透多层碳纸,实现多份副本的同时打印。下面我们将深入探讨针式打印机套打程序的核心概念、工作原理以及相关的编程知识。 一、针式...

    Deli得力DE-620KII针式打印机说明书.pdf

    * 高速打印:DELI得力DE-620KII针式打印机具有高速打印功能,满足用户对高速打印的需求。 三、安装和使用 DELI得力DE-620KII针式打印机的安装和使用非常简单,用户可以根据用户手册中的指导进行安装和使用。以下是...

Global site tag (gtag.js) - Google Analytics