3

然而,下面的代码将数据发送到打印机,当它到达打印机队列时,它会返回一个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();
       }      
   }
}
4

1 回答 1

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 上运行良好。

于 2013-06-14T01:13:19.000 回答