关于java调用本地打印机,打印机一直显示正在打印。。。。急急急,在线等

SLX_Angel 2016-06-06 01:57:29
java调用服务器默认打印机,但是代码执行正常,打印机一直处于正在打印中。。。不知道是哪里出了问题,代码是网上找来的,基本上都大同小异,但是在我这里却无法执行,网上也看到了不少和我同样问题的朋友,但是不知道你们是怎么解决的。求各位帮忙看下,万分感激,以下是代码!
用java代码调用才会出现这种情况,如果直接打开打印机进行打印是正常的。


public static void main(String[] args) {
File file = new File("D:/11.txt"); // 获取选择的文件
// 构建打印请求属性集
HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
// 设置打印格式,因为未确定类型,所以选择autosense
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
// 定位默认的打印服务
PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
InputStream fis = null;
try {
DocPrintJob job = defaultService.createPrintJob(); // 创建打印作业
fis = new FileInputStream(file); // 构造待打印的文件流
DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(fis, flavor, das);
job.print(doc, pras);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

打印机情况
...全文
2230 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 5 楼 reyoreyoreyo 的回复:
import java.io.FileInputStream; import java.io.FileNotFoundException; 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.print.attribute.standard.MediaSizeName; import javax.swing.JOptionPane; public class PrintUtils { public static void main(String[] args) { FileInputStream textStream = null; try { textStream = new FileInputStream("C:\\CityLove.pdf"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } //String printStr = "打印测试内容";// 获取需要打印的目标文本 if (textStream != null) // 当打印内容不为空时 { // 指定打印输出格式 DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;//SERVICE_FORMATTED.PRINTABLE // 定位默认的打印服务 PrintService printService = PrintServiceLookup.lookupDefaultPrintService(); // 创建打印作业 DocPrintJob job = printService.createPrintJob(); // 设置打印属性 PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); // 设置纸张大小,也可以新建MediaSize类来自定义大小 pras.add(MediaSizeName.ISO_A4); DocAttributeSet das = new HashDocAttributeSet(); // 指定打印内容 Doc doc = new SimpleDoc(textStream, flavor, das); // 不显示打印对话框,直接进行打印工作 try { job.print(doc, pras); // 进行每一页的具体打印操作 } catch (PrintException pe) { pe.printStackTrace(); } } else { // 如果打印内容为空时,提示用户打印将取消 JOptionPane.showConfirmDialog(null, "Sorry, Printer Job is Empty, Print Cancelled!", "Empty", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE); } } } 应该没有问题,更多访问 http://www.cnblogs.com/interdrp
这个方法是正解。
  • 打赏
  • 举报
回复
楼主解决没有?同遇
qq_34357414 2017-03-03
  • 打赏
  • 举报
回复
楼上的都解决了吗,我遇到跟楼主一样的问题,可以分享下代码吗?
kahnyy5202015 2016-11-22
  • 打赏
  • 举报
回复
你到底是调用本地的打印机 还是服务器那面的打印机.......
zyp_5922160 2016-11-22
  • 打赏
  • 举报
回复
楼主解决问题了嘛?遇到同样的问题
夕阳小径 2016-10-18
  • 打赏
  • 举报
回复
解决了没 我也遇到了
reyoreyoreyo 2016-10-18
  • 打赏
  • 举报
回复
import java.io.FileInputStream; import java.io.FileNotFoundException; 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.print.attribute.standard.MediaSizeName; import javax.swing.JOptionPane; public class PrintUtils { public static void main(String[] args) { FileInputStream textStream = null; try { textStream = new FileInputStream("C:\\CityLove.pdf"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } //String printStr = "打印测试内容";// 获取需要打印的目标文本 if (textStream != null) // 当打印内容不为空时 { // 指定打印输出格式 DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;//SERVICE_FORMATTED.PRINTABLE // 定位默认的打印服务 PrintService printService = PrintServiceLookup.lookupDefaultPrintService(); // 创建打印作业 DocPrintJob job = printService.createPrintJob(); // 设置打印属性 PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); // 设置纸张大小,也可以新建MediaSize类来自定义大小 pras.add(MediaSizeName.ISO_A4); DocAttributeSet das = new HashDocAttributeSet(); // 指定打印内容 Doc doc = new SimpleDoc(textStream, flavor, das); // 不显示打印对话框,直接进行打印工作 try { job.print(doc, pras); // 进行每一页的具体打印操作 } catch (PrintException pe) { pe.printStackTrace(); } } else { // 如果打印内容为空时,提示用户打印将取消 JOptionPane.showConfirmDialog(null, "Sorry, Printer Job is Empty, Print Cancelled!", "Empty", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE); } } } 应该没有问题,更多访问 http://www.cnblogs.com/interdrp
kahnyy5202015 2016-06-07
  • 打赏
  • 举报
回复
都发送到打印机了 还打印不起。。。看打印机那面报错没。有的话。。你调打印的时候选的什么纸张大小
SLX_Angel 2016-06-06
  • 打赏
  • 举报
回复
引用 1 楼 kahnyy5202015 的回复:
看打印机 驱动是亮的么?不想要了就删除了
直接打开word打印是可以的,用java程序打印就不行
kahnyy5202015 2016-06-06
  • 打赏
  • 举报
回复
看打印机 驱动是亮的么?不想要了就删除了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧