php exec()java jar未检测到默认打印机,jar正常工作并发送到windows10中的打印机

0yycz8jy  于 2021-06-26  发布在  Java
关注(0)|答案(0)|浏览(238)

我在一个项目开发一个亭网络应用程序,该项目是一个亭设备的演示,所以我需要发送打印收据时,用户点击一个按钮。我制作了一个javajar,它已经打印了收据,但是当从php exec('print.jar',$output)调用它时,printservicelookup.lookupdefaultprintservice()抛出nullpointerexception。我也尝试过system()和shell\u exec()等等。我希望有人能帮忙,因为我已经找了好几天了。
这是jar代码公共类printtext{
public static void main(string[]args)引发printexception、ioexception{

String defaultPrinter = PrintServiceLookup.lookupDefaultPrintService().getName();
System.out.println("Default printer: " + defaultPrinter);
PrintService service = PrintServiceLookup.lookupDefaultPrintService();

  PrinterOptions p=new PrinterOptions();

  p.resetAll();
  p.initialize();
  p.feedBack((byte)2);
  p.color(0);
  p.alignCenter();
  p.setText("PANTALLAS LINCE");
  p.newLine();
  p.setText("MUPI INTERACTIVO");
  p.newLine();
  p.addLineSeperator();
  p.newLine();
  p.alignCenter();
  p.setText("Tu Cuenta");
  p.newLine();
  p.addLineSeperator();
  p.newLine();

  p.alignLeft();
  p.setText("Folio No \t: 2001 \tVenta directa \t: E511");
  p.newLine();              

  p.setText("Fecha \t: " +  "01/01/1801 22:59");

  p.newLine();
  p.setText("Metodo de Pago \t: Tarjeta");
  p.newLine();
  p.setText("Suc \t: Altabrisa Mérida");
  p.newLine();
  p.addLineSeperator();
  p.newLine();
  p.alignCenter();
  p.setText(" - -Recibo de Compra - ");
  p.newLine();
  p.alignLeft();
  p.addLineSeperator();

  p.newLine();

  p.setText("Id \tDesc\t\tPrecio\tQty");
  p.newLine();
  p.addLineSeperator();
  p.newLine();
  p.setText("1" + "\t" + "Aliens Everywhere" + "\t" +  "100" + "\t" + "5"); p.newLine();
  p.setText("1" + "\t" + "Aliens Everywhere" + "\t" +  "100" + "\t" + "5"); p.newLine();
  p.setText("1" + "\t" + "Aliens Everywhere" + "\t" +  "100" + "\t" + "5"); p.newLine();
  p.setText("1" + "\t" + "Aliens Everywhere" + "\t" +  "100" + "\t" + "5"); p.newLine();
  p.setText("1" + "\t" + "Aliens Everywhere" + "\t" +  "100" + "\t" + "5"); p.newLine();
  p.setText("1" + "\t" + "Aliens Everywhere" + "\t" +  "100" + "\t" + "5"); p.newLine();

  p.addLineSeperator();
  p.feed((byte)3);
  p.finit();
  p.feed((byte)15);

//inputstream is=new bytearrayinputstream(header.getbytes(“utf8”));inputstream is=new bytearrayinputstream(p.finalcommandset().getbytes());

PrintRequestAttributeSet  pras = new HashPrintRequestAttributeSet();
pras.add(new Copies(1));

DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
Doc doc = new SimpleDoc(is, flavor, null);
DocPrintJob job = service.createPrintJob();

PrintJobWatcher pjw = new PrintJobWatcher(job);
job.print(doc, pras);
pjw.waitForDone();
is.close();

}
}
这是php
$output=exec('print.jar 2>&1');变量转储($output);
问题是printservicelookup.lookupdefaultprintservice()在与php exec()一起运行时抛出null,但如果从windows资源管理器双击调用它,则可以正常工作

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题