我通过实现Java Printable并将我的代码放入print方法打印到一些Epson收据打印机 . 要将文本绘制到打印机,我使用Graphics2D.drawString . 我还在打印机上绘制一个矩形,以查看在打印到其他打印机时如何与文本大小进行比较 . 打印到收据打印机时,纸张上的文本大约是打印到激光打印机或XPS刻录机虚拟打印的宽度的两倍 . 这是Java向Graphics2D对象绘制文本的方式的问题吗?我有最新版本的Java安装6更新20 .

任何想要研究的想法都会有所帮助 .

谢谢 .

这是我正在使用的代码 . 在这个例子中,当我将它发送到XPS编写器时,我看到矩形右边缘的字母'c',如果我将它打印到我的收据打印机,那么6就在rect的右边缘,你可以告诉文字它应该比它宽得多 . rect似乎是正确的大小 .

我已经尝试更改页面和边距大小,但似乎没有解决我的文本问题 . 我从Microsoft Word自动检测打印机的方式中获得了这些纸张尺寸和边距 . Word将文本正确打印到收据打印机 .

public static void main(String[] args) {

PageFormat format = new PageFormat();

Paper paper = new Paper();

double paperWidth = 3.25;

double paperHeight = 11.69;

double leftMargin = 0.19;

double rightMargin = 0.25;

double topMargin = 0;

double bottomMargin = 0.01;

paper.setSize(paperWidth * 72.0, paperHeight * 72.0);

paper.setImageableArea(leftMargin * 72.0, topMargin * 72.0,

(paperWidth - leftMargin - rightMargin) * 72.0,

(paperHeight - topMargin - bottomMargin) * 72.0);

format.setPaper(paper);

PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();

aset.add(OrientationRequested.PORTRAIT);

PrinterJob printerJob = PrinterJob.getPrinterJob();

Printable printable = new ReceiptPrintTest();

format = printerJob.validatePage(format);

printerJob.setPrintable(printable, format);

try {

printerJob.print(aset);

}

catch (Exception e) {

e.printStackTrace();

}

}

public class ReceiptPrintTest implements Printable {

public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {

if (pageIndex < 0 || pageIndex >= 1) {

return Printable.NO_SUCH_PAGE;

}

Graphics2D g2d = (Graphics2D) graphics;

g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());

Font font = new Font("Arial",Font.PLAIN, 14);

g2d.setFont(font);

g2d.drawString("1234567890abcdefg", 50, 70);

g2d.drawRect(50, 0, 100, 50);

return Printable.PAGE_EXISTS;

}

java 打印收据_使用Java打印到收据打印机时修复文本拉伸相关推荐

  1. java打印计算机_在Java程序中实现高精度打印

    在Java环境中,可以使用 java.awt.Toolkit.getScreenResolution()可以得到屏幕每英寸的象素数,但是好像没有什么方法能知道某一台打印机的分辨率,更别提去控制打印粒度 ...

  2. java 远程打印机_使用Java打印到网络打印机

    我需要发送pdf文档以在Web应用程序的服务器端进行打印,打印机完全支持pdf打印等,它也可以联网到服务器. pdf也存储在服务器上. 我想要的是单击按钮,打印出pdf文件,目前我的代码如下: //S ...

  3. java银行流水打印系统_基于java实现简单的银行管理系统

    页面代码之一: package org.vector.view; import java.awt.Font; import java.awt.event.ActionEvent; import jav ...

  4. java 字符串包_包java字符串

    Java核心技术卷I基础知识3.6.3 不可变字符串 3.6.3 不可变字符串 String类没有提供用于修改字符串的方法.如果希望将greeting的内容修改为"Help!",不 ...

  5. bigint对应java什么类型_「JAVA」从格式化输出到扫描输入,深究Java正则表达式匹配之道

    字符串是不可变的 字符串是不可变的,也就是说当字符串的内容发生改变的时候,会创建一个新的String对象:但是如果内容没有发生改变的时候,String类的方法会返回原字符串对象的引用. 而正则表达式往 ...

  6. java排班_使用java规则引擎Drools自动排班前言.doc

    使用java规则引擎Drools自动排班前言 使用java规则引擎Drools自动排班前言本文以一个经简化的运输车队自动排班需求为例,详细讲解了如何使用java规则引擎Drools进行商业规则的形式语 ...

  7. java main函数_一行JAVA代码如何运行起来?

    在程序员的世界中,你总会听到一句"PHP是世界上最好的语言"的调侃.然而在你进入软件程序开发之后,你会发现即使开发语言千千万,最盛行的还是JAVA.从淘宝的技术变迁中我们可以见一些 ...

  8. java面向对象课件_《JAVA面向对象基础》PPT课件.ppt

    <<JAVA面向对象基础>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<JAVA面向对象基础>PPT课件.ppt(68页珍藏版)>请在人人文库 ...

  9. java 月份缩写_关于java:如何将日期字符串解析为Date?

    本问题已经有最佳答案,请猛点这里访问. 如何将下面的日期字符串解析为Date对象? String target ="Thu Sep 28 20:29:30 JST 2000"; D ...

  10. java 在线测评_简单java在线测评程序

    简单java程序在线测评程序 v一.前言 大家过年好!今年的第一篇博客啊!家里没有网,到处蹭无线!日子过得真纠结!因为毕设的需求,简单写了一个java程序在线测评程序,当然也可以在本地测试. v二.思 ...

最新文章

  1. MySQL面试题 | 附答案解析(八)
  2. SOTA论文也未必能被接收,谷歌科学家Eric Jang谈顶会审稿标准
  3. Oracle Database 11.2.0.1(静默安装)
  4. event 和 window.event
  5. ggplot2设置坐标轴范围_ggplot2画图时出现重合的点以及标签如何处理?有现成的包ggrepel
  6. pip更换源 windows10_Conda及Pip换源处理
  7. setTimeout setInterval
  8. 基于SpringJDBC 实现关键功能-QueryRuleSqlBulider
  9. Jenkins Build Radiators(构建发射源)
  10. merge into报错ORA-00926、ORA-38014
  11. 优先级队列之PriorityQueue
  12. Bit,Byte,WORD,DWORD区别和联系
  13. java实现远程桌面监控
  14. 用cmd命令行下载github中的工程文件
  15. jpg转pdf怎么转换免费
  16. android相机固定焦距,android - Android相机焦距和焦距不变 - 堆栈内存溢出
  17. win7底部任务栏还原方法
  18. 《“边缘计算+”技术白皮书》发布!
  19. 前端实战:React 多页签缓存处理
  20. 多邻国(Duolingo)内推,来了!

热门文章

  1. 美团架构师熬夜整理:Netty权威指南2.0版+英雄传说项目
  2. h计算机二级基础知识题库,2020计算机二级Office考试题库真题
  3. Talloc内存池介绍
  4. 六维空间向量表示法公式笔记
  5. 西门子触摸屏脚本程序_新手请收藏,超详细的西门子触摸屏设置与编程图文教程...
  6. 怎么使用java初始化链表_Java链表基本操作和Java.util.ArrayList
  7. weka mysql_weka连接mysql数据库
  8. 实现微信支付宝收款到账语音提醒
  9. 未root的情况下获取墨墨背单词的databases文件夹
  10. Java中的封装,继承和多态(详解)