使用Java将数据发送到打印机

时间:2012-07-17 13:30:00

标签: java printing postscript

下面的代码将数据发送到打印机,但是当它到达打印机队列时,它会返回Unable to convert PostScript file.我认为这可以通过指定风味来克服,但事实并非如此

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.PrintServiceAttribute;
import javax.print.attribute.standard.PrinterName;

public class New1 {

   public static void main(String[] args) {

       try {

           String s = "Hello";

          // byte[] by = s.getBytes();
           DocFlavor flavor = DocFlavor.STRING.TEXT_PLAIN;
           PrintService pservice = PrintServiceLookup.lookupDefaultPrintService();
           DocPrintJob job = pservice.createPrintJob();
           Doc doc = new SimpleDoc(s, flavor, null);
           job.print(doc, null);

       } catch (PrintException e) {
           e.printStackTrace();
       }      
   }
}

1 个答案:

答案 0 :(得分:1)

仅使用JPS,您将遇到Mac问题。 我的建议是使用Java 2 Print API + Java Print Service。

Java 2 Print API类似1990风格。为避免使用Java 2 Print API创建代码,您可以使用PDFBox http://pdfbox.apache.org作为框架。

使用PDFBox,您可以创建PDF文档(http://pdfbox.apache.org/1.8/cookbook/documentcreation.html),但不是保存,而是使用该代码打印它:

PrinterJob printJob = PrinterJob.getPrinterJob();
PrintService service = PrintServiceLookup.lookupDefaultPrintService(); 
printJob.setPrintService(service);      
document.silentPrint(printJob);

它在我的Mac上运行良好。