环境:
操作系统:windows
打印机类型:epson tmu220
操作语言:java
需求:
需要根据下单信息,打印小票,并且是后台自动打印
思路:
因为是自动打印,在网上搜索到了自动查找局域网内的打印机并且打印的java代码,原以为我用ireport+jasperreport自动生成pdf文件之后,直接调用打印机打印此文件,但是行不通。
问题:
1.按网上的说法,确实可以找到默认打印机,但是在自动打印文件的时候发现打印机根本不支 持pdf文件的打印,最后无奈只能用java图形方式画出来,但是问题又来了。
2.用java图形的方式画出来之后,发现按照网上的方式无论如何调格式始终都是从中间开始打印,页边距无法正常调整,后来发现是少了一个设置
// 设置打印属性
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
MediaSize ms = new MediaSize(74, 1000, 1000, MediaSizeName.ISO_A7);
pras.add(MediaSizeName.ISO_A7);
此代码可以正常的调整页边距了,剩下的就只有慢慢的调整格式了。
以下是部分代码片断以做备份:
public int doPrint()
{
if (message != null && message.length() > 0) // 当打印内容不为空时
{
// 指定打印输出格式
DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
// 定位默认的打印服务
PrintService printService = PrintServiceLookup.lookupDefaultPrintService();
if(printService==null)
{
return 0;
}
// 创建打印作业
DocPrintJob job = printService.createPrintJob();
// 设置打印属性
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
MediaSize ms = new MediaSize(74, 1000, 1000, MediaSizeName.ISO_A7);
pras.add(MediaSizeName.ISO_A7);
DocAttributeSet das = new HashDocAttributeSet();
// 指定打印内容
Doc doc = new SimpleDoc(this, flavor, das);
// 不显示打印对话框,直接进行打印工作
try
{
// 设置打印类
job.print(doc, pras); // 进行每一页的具体打印操作
}
catch(PrintException pe)
{
pe.printStackTrace();
}
}
return 1;
}
Graphics2D g2d = (Graphics2D) graphics;
Font fontheader=new Font("微软雅黑",Font.PLAIN,10);
Font font=new Font("微软雅黑",Font.PLAIN,9);
Font fontfooter=new Font("微软雅黑",Font.PLAIN,10);
int printFontSize=font.getSize();
float printY=16;
float printX=0;
g2d.translate(pageFormat.getImageableX(),pageFormat.getImageableY());
//打印小票头部
printX=printFontSize*6;
g2d.setFont(fontheader);
g2d.drawString("111111",printX,printY);
分享到:
相关推荐
非常好用的java打印组件非常好用的java打印组件非常好用的java打印组件
java打印测试程序!java打印测试程序!java打印测试程序!
用java打印近似圆,疯狂java第四章习题3
java6打印插件,如果不行就安装java8安装工具
java 打印excel
java打印五角星for循环,for循环各种运用,镶嵌if语句,帮助大家更好的学习。
用java 打印目录下所有文件名称 包括子目录, 默认目录 "C:/" 打印完 目录列表 输出在 选择的根目录的 "path/TestResultList.txt" 文件夹里。
很不错的java打印程序,内有java打印及java定位打印,值得拥有.
Java web 打印,Java pdf打印,Java打印
java 打印出100以内的素数
java 打印任意一年日历 java 打印任意一年日历
使用JAVA打印小票的方法,可以参考下。
Java打印统一管理,类似Android的日记打印管理类。
java打印输入框的文字,供各位大侠下载应用。
用java编程实现杨辉三角的打印,这是一道常见的java考试题目。
输入一个路径,如果该路径是一个文件,打印文件,否则如果是目录, 打印目录名,并且打印该目录下所有文件
java 打印pdf文件 ,也可支持批量打印
自定义小票打印,通过打印机名称打印,设置纸张大小,分辨率问题
帮学弟解决小问题 java 打印三角 运用循环的小知识
用Java打印等腰三角形的源码及图形解说等