发送数据到Java打印机
问题描述:
下面的代码发送数据到打印机,但是,当它到达打印机队列它回来了一个Unable to convert PostScript file.
我认为这将通过指定的风味来克服,但情况并非如此发送数据到Java打印机
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();
}
}
}
答
仅使用JPS,您将遇到Mac问题。 我的建议是使用Java 2 Print API + Java Print Service。
Java 2打印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上工作正常。
您是否尝试过使用'DocFlavor.INPUT_STREAM.AUTOSENSE'和'StringInputStream'来代替? – Robert 2012-07-17 13:43:28
我遇到同样的问题,DocFlavor.INPUT_STREAM.AUTOSENSE没有帮助。 – 2013-05-16 14:51:15