我有一个文本文件,需要将其打印到特定的网络打印机。我知道打印机的名称。

到目前为止,我已经创建了Printable类来打印文件(票证)。

public class TicketPrintPage implements Printable {

private File ticket;

public TicketPrintPage(File f) {

ticket = f;

}

public int print(Graphics g, PageFormat pf, int pageIndex) throws PrinterException {

int interline = 12;

Graphics2D g2 = (Graphics2D) g;

g2.setFont(new Font("CourierThai", Font.PLAIN, 10));

int x = (int) pf.getImageableX();

int y = (int) pf.getImageableY();

try {

FileReader fr = new FileReader(ticket);

BufferedReader br = new BufferedReader(fr);

String s;

while ((s = br.readLine()) != null) {

y += interline;

g2.drawString(s, x, y);

}

} catch (IOException e) {

throw new PrinterException("File to print does not exist (" + ticket.getAbsolutePath() +") !");

}

return Printable.PAGE_EXISTS;

}

}

我这样称呼TicketPrintPage:

public void printTicketFile(File ticket, int orientation) throws PrinterException {

if (!ticket.exists()) {

throw new PrinterException("Ticket to print does not exist (" + ticket.getAbsolutePath() + ") !");

}

PrinterJob pjob = PrinterJob.getPrinterJob();

// get printer using PrintServiceLookup.lookupPrintServices(null, null) and looking at the name

pjob.setPrintService(getPrintService());

// job title

pjob.setJobName(ticket.getName());

// page fomat

PageFormat pf = pjob.defaultPage();

// landscape or portrait

pf.setOrientation(orientation);

// Paper properties

Paper a4Paper = new Paper();

double paperWidth = 8.26;

double paperHeight = 11.69;

double margin = 16;

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

a4Paper.setImageableArea(

margin,

//0,

margin,

//0,

a4Paper.getWidth()- 2 * margin,

//a4Paper.getWidth(),

a4Paper.getHeight()- 2 * margin

//a4Paper.getHeight()

); // no margin = no scaling

pf.setPaper(a4Paper);

// Custom class that defines how to layout file text

TicketPrintPage pages = new TicketPrintPage(ticket);

// adding the page to a book

Book book = new Book();

book.append(pages, pf);

// Adding the book to a printjob

pjob.setPageable(book);

PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();

// No jobsheet (banner page, the page with user name, job name, date and whatnot)

pras.add(JobSheets.NONE);

// Printing

pjob.print(pras);

}

它的工作原理还不错,但是:

-我的文本不多于一页(找到了一些算法,但是很好)

-我不知道打印机何时完成打印,如果我尝试打印两页如果打印机连续打印了多张票证,则会返回“打印机未就绪”消息。

所以问题又来了:没有简单的方法可以将文本文件打印到打印机上吗?

java远程打印机 文件_使用Java将文本文件打印到特定打印机相关推荐

  1. java 流 复制文件_【Java】使用字节流复制文件

    其实用java程序复制文件并不难 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOE ...

  2. java 导出mdb文件_使用Java创建Access数据库文件(.mdb或.accdb)

    Jackcess 2.x的更新:现在使用DatabaseBuilder创建(或打开)数据库,因此要创建一个新的数据库文件,我们这样做 import java.io.File; import java. ...

  3. java剪切txt文件_用Java把剪切板的内容实时保存到txt

    test类:提示用户程序已启动,提示保存位置,清空剪切板. package com.ariya.service; import com.ariya.service.impl.ClipboardServ ...

  4. java 读取webapp文件_在Java Webapp和Java Normal应用中读取公共外部属性文件

    但是,我们有以下一些特殊要求, Webapp将部署到tomcat. 格式为.jar的普通Java应用程序将放在/ myapp文件夹下 myappConfig.property文件将放置在/ myapp ...

  5. java写入word文件_使用JAVA写入word文件

    我读了一个word文档,想用 Java写入另一个word文件.我希望将读取文档中的内容的样式(字体,粗体,斜体,标题等)写入,因为它是创建的新文档. 我能够复制内容而不是格式样式. import ja ...

  6. java 读取ppt文件_解析Java的InputStream类并借助其读取ppt文件

    1. 关于InputStream.read()     在从数据流里读取数据时,为图简单,经常用InputStream.read()方法.这个方法是从流里每次只读取读取一个字节,效率会非常低.     ...

  7. java打开pdf文件_[原创]java在线打开PDF文档

    步骤一:(涉及到的工具) 访问:http://www.zhuozhengsoft.com/dowm/,从官网下载PageOffice for Java. 步骤二:(配置工程) 1. 解压PageOff ...

  8. java读取外部文件_(转)JAVA读取外部资源的方法

    在java代码中经常有读取外部资源的要求:如配置文件等等,通常会把配置文件放在classpath下或者在web项目中放在web-inf下. 1.从当前的工作目录中读取: try{ BufferedRe ...

  9. java json发送文件_关于java:REST API设计在同一请求中将JSON数据和文件发送到api...

    我正在现有应用程序之上创建一个RESTAPI.其中一个特性接受JSON数据以及用户上传的文件. 我不确定如何将同一请求中的文件和JSON数据发送到RESTAPI? 我让JSON部件工作,并使用curl ...

最新文章

  1. js layui 模板属性 添加_layui.laytpl--模板引擎文档
  2. 水下图像处理算法Sea-thru
  3. 3pc在mysql的实现_面试官:了解分布式事务?讲讲你理解的2PC和3PC原理
  4. 保留3位 python_Python基础(六)
  5. 5、用枚举值表示状态、选项、状态码
  6. vue devtools面板没有显示_vue 基础入门(四)
  7. h5评论直接显示代码_全套H5教程免费学,让你0基础自学制作H5页面
  8. Java中的各种锁事
  9. python遍历dataframe中的每个字符_pandas中遍历dataframe的每一个元素的实现
  10. python 堆栈_Python堆栈
  11. hibernate理解
  12. MyEclipse安装插件的几种方法
  13. linux卸载分区命令,CentOS删除磁盘分区命令
  14. Facebook原型网站FaceMash域名拍得3万美元
  15. IDEA使用ideaVim, 配置自定义vim快捷键
  16. 程序设计基础课程设计——学生成绩管理程序
  17. 前端DES加密、base64编码,后端DES解密、base64解码
  18. Isolation Forest算法原理详解
  19. 磁盘类型转换(fat转换ntfs)
  20. as5300g2 nas软件功能_硬件与软件齐飞,首款支持2.5GbE的NAS-华芸AS-5202T测评体验

热门文章

  1. 移动创业风向标:Apple 2010年度移动应用榜单
  2. week8 作业B 猫猫向前冲
  3. C# 一些零零碎碎的方法,都是些帮助类,留存,也希望能帮助到各位
  4. Android代码 listview选中,android自定义listview的选中状态
  5. Ubuntu18.04LTS系统编译Android所需安装的一些插件内容
  6. K-mean 算法代码演示
  7. c语言CFile的使用方法,C/C++文件操作之CFile
  8. 2075最少拦截系统
  9. 国际期刊预警名单网址
  10. Pt100转RS-485,热电阻温度Modbus数据采集模块 WJ125