zoukankan      html  css  js  c++  java
  • java打印技术实例

    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.Printable;
    import java.awt.print.PrinterException;

    import javax.print.Doc;
    import javax.print.DocFlavor;
    import javax.print.DocPrintJob;
    import javax.print.PrintException;
    import javax.print.PrintService;
    import javax.print.PrintServiceLookup;
    import javax.print.SimpleDoc;
    import javax.print.attribute.DocAttributeSet;
    import javax.print.attribute.HashDocAttributeSet;
    import javax.print.attribute.HashPrintRequestAttributeSet;
    import javax.print.attribute.PrintRequestAttributeSet;
    import javax.print.attribute.standard.MediaSizeName;
    import javax.swing.JOptionPane;
    /**
     * java定位打印,把打印内容打到指定的地方
     * @author edz
     *
     */
    public class throwadv implements Printable {
              private int PAGES=0;
              private String printStr;
              /*
               * Graphics指明打印的图形环境;PageFormat指明打印格式(页面大小以点为计量单位;page指明页号
               */
              public int print(Graphics gp,PageFormat pf,int page) throws PrinterException{
                  Graphics2D g2=(Graphics2D)gp;
                  g2.setPaint(Color.black);
                  if(page>=PAGES){//当打印页号大于需要打印的总页数,打印工作工作结束
                      return Printable.NO_SUCH_PAGE;
                  }
                  g2.translate(pf.getImageableX(), pf.getImageableY());//转化坐标,确定打印边界
                  Font font=new Font("宋体",Font.PLAIN,24);
                  g2.setFont(font);
                  //打印当前页面
                  int printFontCount=printStr.length();//打印字数
                  int printFontSize=font.getSize();//font的磅值大小
                  float printX=595/2;//给定字符点阵,X页面正中
                  float printY=843/2;//给定字符点针,Y页面正中
                  float printMX=printX-(printFontCount*printFontSize/2);//打印到正中间
                  float printMY=printY-printFontSize/2;//打印到正中间
                  g2.drawString(printStr, printMX, printMY);//具体打印每一行文本,在指定位置
                  g2.drawString(printStr, printMX-printFontSize*printFontCount, printMY+printFontSize);//具体到打印每一行文本
                  g2.drawString(printStr, printMY, printMY+printFontSize*2);
                  g2.drawString(printStr, printMY, printMY+printFontSize*2);
                  g2.drawString(printStr, printMX, printMY+printFontSize*2);
                  return Printable.PAGE_EXISTS;//存在打印页时,继续打印工作
                  }
                 //打印内容到指定位置
              public void printContent(){
                  printStr="打印测试内容";//获取需要打印的目标文本
                  if(printStr!=null&&printStr.length()>0){//当打印内容不为空时
                      PAGES=1;//获取打印总页数
                      //指定打印输出格式
                      DocFlavor flavor=DocFlavor.SERVICE_FORMATTED.PRINTABLE;
                      //设置打印属性
                      PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
                     //设置纸张大小,也可以新建MediaSize类来自定义大小
                      pras.add(MediaSizeName.ISO_A4);
                      DocAttributeSet das=new HashDocAttributeSet();
                      //指定打印内容
                      Doc doc=new SimpleDoc(this,flavor,das);
                      //定位默认的打印服务
                      PrintService printService=null;
                      printService=PrintServiceLookup.lookupPrintServices(flavor, pras)[0];
                      System.out.println(printService);
                      //创建打印作业
                      DocPrintJob job=printService.createPrintJob();
                      try{
                          job.print(doc, pras);//进行每一页的具体打印操作
                      }catch(PrintException pe){
                          pe.printStackTrace();
                      }
                  }
                  else{
                      //如果打印内容为空时,提示用户打印将取消
                      JOptionPane.showConfirmDialog(null, "Sorry,Printer Job is Empty,Print Cancelled!","Empty",JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);
                      
                  }
              }
              public static void main(String[]args){
                  throwadv ip=new throwadv();
                  ip.printContent();
              }
              
    }

  • 相关阅读:
    Python--文件操作
    Python--数据类型整理
    u-boot之NAND启动与NOR启动的区别
    u-boot之make all执行过程分析
    编译过程和符号表重定位问题、静态和动态链接
    u-boot之make <board_name>_config执行过程分析
    u-boot之ARM920T的start.S分析
    在使用Myeclipse时,用Tomcat添加部署项目的时候报错,或启动tomcat报错
    关于JDK,tomcat,eclipse的配置
    我的博客
  • 原文地址:https://www.cnblogs.com/zhouzetian/p/8574065.html
Copyright © 2011-2022 走看看