自己整理出来的java实现打印机打印小票
//实现Printable接口 用于创建打印内容
public class UserTicket implements Printable {private String name1;private String tel1;private String addr1;private String name2;private String tel2;private String addr2;private Font font;public UserTicket(String name1, String tel1, String addr1, String name2,String tel2, String addr2) {super();this.name1 = name1;this.tel1 = tel1;this.addr1 = addr1;this.name2 = name2;this.tel2 = tel2;this.addr2 = addr2;}@Overridepublic int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {int right = 115; //右边一张距离左边的距离int first_second = 0; //第一行与第二行的距离// 转换成Graphics2D 拿到画笔Graphics2D g2 = (Graphics2D) graphics;// 设置打印颜色为黑色g2.setColor(Color.black);// 打印起点坐标double x = pageFormat.getImageableX();double y = pageFormat.getImageableY();// 设置打印字体(字体名称、样式和点大小)(字体名称可以是物理或者逻辑名称)font = new Font("宋体", Font.BOLD, 10);g2.setFont(font);// 设置字体float heigth = font.getSize2D();// 字体高度// 标题 第一行g2.drawString("凤馨堂广和月子餐", (float) x, (float) y + heigth);g2.drawString("凤馨堂广和月子餐", (float) x + right, (float) y + heigth);float line = 2 * heigth + first_second;g2.scale(1, 1.5); //对接下来的内容(字体)进行拉高font = new Font("宋体", Font.BOLD, 8);g2.setFont(font);// 设置字体heigth = font.getSize2D();// 字体高度// 标题 第一点五行,电话和名字g2.drawString(name1, (float) x, (float) y + line);g2.drawString(tel1, (float) x + 30, (float) y + line);g2.drawString(name2, (float) x + right, (float) y + line);g2.drawString(tel2, (float) x + right + 30, (float) y + line);line += 1.3*heigth;font = new Font("宋体", Font.BOLD, 8);g2.setFont(font);// 设置字体heigth = font.getSize2D();// 字体高度// 第二行:地址g2.drawString(addr1, (float) x , (float) y + line);g2.drawString(addr2, (float) x +right, (float) y + line);line += heigth;g2.scale(1, 0.67); //将比例还原// 第三行:广告语font = new Font("宋体", Font.BOLD, 8);g2.setFont(font);// 设置字体g2.drawString("科学坐月子、健康一辈子", (float) x, (float) 75);g2.drawString("科学坐月子、健康一辈子", (float) x + right, (float) 75);switch (pageIndex) {case 0:return PAGE_EXISTS;default:return NO_SUCH_PAGE;}}
public class UserTest {public static void PrintUser(String name1, String tel1, String addr1, String name2,String tel2, String addr2) {try {// 通俗理解就是书、文档Book book = new Book();// 设置成竖打PageFormat pf = new PageFormat();pf.setOrientation(PageFormat.PORTRAIT);// 通过Paper设置页面的空白边距和可打印区域。必须与实际打印纸张大小相符。Paper paper = new Paper();paper.setSize(230, 85);// 纸张大小paper.setImageableArea(10, 3, 210, 75);pf.setPaper(paper);book.append(new UserTicket(name1,tel1,addr1,name2,tel2,addr2), pf);// 获取打印服务对象PrinterJob job = PrinterJob.getPrinterJob();// 设置打印类job.setPageable(book);job.print();} catch (PrinterException e) {e.printStackTrace();}}//该main函数是为了测试,可以在本地以图片的形式呈现一下打印小票的样式,方便打印测试,节省纸卷和碳带的资源public static void main(String[] args) {Font font = null;String path = "D:/testimg.png";int right = 120; //右边一张距离左边的距离int first_second = 0; //第一行与第二行的距离int w = 226;int h = 85;BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);Graphics2D g2 = img.createGraphics();g2.setColor(Color.black);PageFormat pf = new PageFormat();pf.setOrientation(PageFormat.PORTRAIT);Paper paper = new Paper();paper.setSize(226, 85);// 纸张大小paper.setImageableArea(10, 5, 200, 72);pf.setPaper(paper);double x = pf.getImageableX();double y = pf.getImageableY();font = new Font("宋体", Font.BOLD, 10);g2.setFont(font);// 设置字体float heigth = font.getSize2D();// 字体高度// 标题 第一行g2.drawString("凤馨堂广和月子餐", (float) x, (float) y + heigth);g2.drawString("凤馨堂广和月子餐", (float) x + right, (float) y + heigth);float line = 2 * heigth + first_second;g2.scale(1, 1.5);font = new Font("宋体", Font.BOLD, 8);g2.setFont(font);// 设置字体heigth = font.getSize2D();// 字体高度// 标题 第一点五行,电话和名字g2.drawString("马蓉蓉", (float) x, (float) y + line);g2.drawString("13023237878", (float) x + 30, (float) y + line);g2.drawString("王宝", (float) x + right, (float) y + line);g2.drawString("17877665566", (float) x + right + 30, (float) y + line);line += 1.3*heigth;font = new Font("宋体", Font.BOLD, 8);g2.setFont(font);// 设置字体heigth = font.getSize2D();// 字体高度// 第二行:地址g2.drawString("妇幼10楼38床", (float) x , (float) y + line);g2.drawString("中医药附10楼33床", (float) x +right, (float) y + line);line += heigth;g2.scale(1, 0.67);// 第三行:广告语font = new Font("宋体", Font.BOLD, 8);g2.setFont(font);// 设置字体g2.drawString("科学坐月子、健康一辈子", (float) x, (float) 75);g2.drawString("科学坐月子、健康一辈子", (float) x + right, (float) 75);try {ImageIO.write(img, "PNG", new File(path));} catch (IOException e) {e.printStackTrace();}
}//这个就是正常的测试调用了
//public static void main(String[] args) {
// //参数顺序,左边餐点时间,菜品明,右餐时间,菜名明,名字1,电话1,名字2,电话2
// PrintUser("马蓉蓉","13023982321","妇幼10楼38床","王宝","13823894857","中医药附10楼33床");
//}
package com.laoyao.ticket;public class User {private String name;private String tel;private String addr;public User(String name, String tel, String addr) {super();this.name = name;this.tel = tel;this.addr = addr;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getTel() {return tel;}public void setTel(String tel) {this.tel = tel;}public String getAddr() {return addr;}public void setAddr(String addr) {this.addr = addr;}}
自己整理出来的java实现打印机打印小票相关推荐
- JAVA连接打印机打印小票、产品信息。标签打印机
2018年写了一个标签打印机(TSC TX600),标签打印程序,实现功能是通过串口读出设备ID生成二维码和设备信息,用于esp8266 smart config配网.源码和资料:https://do ...
- Java调用打印机打印(远程、本地皆可用)
Java调用打印机打印(远程.本地皆可用) 背景 准备 MAVEN环境 步骤 获取PrinterJob 设置PrinterJob纸张样式 打印PDF 背景 开发个Java项目需要远程调用共享打印机打印 ...
- NWJS(NodeJS)调用打印机 - 打印小票
1 背景 架构设计:VueJS + Spring Cloud微服务架构 功能要求: 调用小票打印机打印小票,功能和超市收银结算功能相同 使用NWJS包装VueJS前端代码实现exe安装包和可执行文件 ...
- Java连接打印机打印二维码
首先导入依赖 implementation 'com.google.zxing:core:3.5.1' implementation 'com.google.zxing:javase:3.5.1' 1 ...
- Java调用打印机打印PDF文档的两种方法
最近,由于项目需求,需要增加系统调用打印机打印PDF文档功能.以前在Asp.Net项目中做过套打,但是现在的需求直接文档打印,下面是实现代码调用打印机的两种方法. 1.Java Print Servi ...
- java 调用打印机打印
要在 Java 中调用打印机打印,您可以使用 Java 的打印 API.下面是一个简单的示例,展示了如何使用 Java 打印 API 来打印文本: import java.awt.print.Prin ...
- Java调用打印机打印pdf
要在Java中调用打印机打印PDF,可以使用Java打印API和第三方库,如Apache PDFBox或iText PDF. 以下是使用Java打印API打印PDF的基本步骤: 安装打印机:确保您已经 ...
- java 调用打印机 打印pdf方案
网上检索到的Java Printing Service方案 类似的方法的确会向打印机发送打印任务,但是打印机无反应不响应打印 //1.得到一个文件的输入流 FileInputStream fiStre ...
- 记一次Electron 桌面应用实现调用打印机打印小票功能
项目背景 实现一款交互屏桌面应用软件,类似医院那张种给用户操作办理业务的应用程序.操作业务中在充值后可供用户打印小票. 开发框架:electron-vue vue版本:v2.6.14 electron ...
最新文章
- CPA相关功耗分析(一)
- TroubleshootingGuide for JavaTM SE 6withHotSpot TM VM (翻译附录未完待续)-2
- SAP Spartacus界面看不到Carousel左右移动控件的一个可能原因
- mysql jdbc 表结构_JDBC操作表:JDBC修改表结构
- easyui-combobox
- C++_类和对象_对象特性_构造函数调用规则---C++语言工作笔记043
- 使用开源框架Sqlsugar结合mysql开发一个小demo
- Python PyCrypto,Paramiko模块安装和使用
- 图形图像会议期刊文章查询
- MySQL数据库:参数优化
- 常用的 Cron 时间表达式 定时器 正则表达式
- k2p华硕系统怎么设置_双频路由器怎么设置网速快(k2p刷华硕怎么设置网速好)
- gitlab鉴权失败
- Photographic Tone Reproduction for Digital Images
- COGS 336 Vijos 1018 NOI2003 智破连环阵
- 同步发电机 有功功率 无功功率调节
- 利用Python进行随机取名
- 移动端开发案例(Bootstrap布局,响应式开发)
- GCM 的升级版——FCM(firebase cloud messaging)
- ROS Subscribers