java连续走纸打印源代码

这个Java类实现了连续走纸打印功能,适用于打印表格数据。它根据预设的行宽和行高,调整文本布局,确保打印内容适配。通过处理字符串、标题、表头和表格数据,该类可以计算文本的宽度并进行居中处理,同时支持汉字和ASCII字符的打印布局。
摘要由CSDN通过智能技术生成

package tablePrint;

import java.awt.Color;
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.swing.JOptionPane;
import javax.swing.table.TableModel;

/**
 * 打印的内容每行宽188毫米每行高度为5毫米
 * @author tiger
 *
 */
public class TablePrint implements Printable{

 private String printStr;//要打印的字符串
 private final int PAGES=1;//连续走纸,所以只打印一页
 private final float heightEachLine=5*72/24.5f;//每行的高度5毫米,每72个点等于24.5毫米
 private final float widthEachLine=188*72/24.5f;//每行的宽度188毫米
 private final float asciiCharWidth=6;//一个ascii字符的宽度占的点数
 private final int asciiCharNumber=(int)(widthEachLine/asciiCharWidth);//一行最多打的ascii字符个数,1个汉字的宽度等于2

个ascii字符
 
 /**
  * 实现java.awt.print.Printable.print
  */
 public int print(Graphics g, PageFormat pf, int page)
 throws PrinterException {
  
  Graphics2D g2 = (Graphics2D) g;
  g2.setPaint(Color.black)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值