打印作业提交给打印机,但没有打印任何内容。 Java的

时间:2012-01-19 09:56:46

标签: java service printing

我的Java打印服务有问题。我需要将一个简单的文本文档打印到我的默认打印机。我在Windows机器上使用HP Deskjet作为我的打印机,安装了所有驱动程序。这是我使用的源代码:

import java.io.*;
import javax.print.*;

public class PrintTest {
 public static void main(String[] args) throws IOException {
  File file = new File("print.txt");
  InputStream is = new BufferedInputStream(new FileInputStream(file));

  //Discover the default print service.
  PrintService service = PrintServiceLookup.lookupDefaultPrintService();

  //Doc flavor specifies the output format of the file.
  DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;  


  // Create the print job
  DocPrintJob job = service.createPrintJob();
  //Create the Doc
  Doc doc = new SimpleDoc(is, flavor, null);

  //Order to print
  try {
   job.print(doc, null);
  } catch (PrintException e) {
   e.printStackTrace();
  }  

  is.close();
  System.out.println("Printing done....");
 }

}

我可以看到打印机队列上的打印作业在消失前几毫秒。但没有任何印刷品。我听说过,因为JDK 1.6中的Java Print Service仍然存在问题。但我不完全确定。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我知道这是一个非常晚的答案,但我在Windows上遇到了与PDF相同的问题(不是文本)。打印机似乎无法处理原生PDF,因此工作被接受但没有任何反应(也没有错误)。我通过使用第三方库Apache PdfBox解决了这个问题,它就像一个魅力。

我通过回答类似的问题https://stackoverflow.com/a/39271053/935039编写了一些代码示例。