0

コントロール パネルで、プリンターのポートが "FILE:" に設定されていました。たとえば、 を使用してプリンタを選択できますが、PrintServiceAttributeSet印刷時に出力ファイル名を設定する方法がありません。JRXlsExporter私はまたはJRPdfExporterそのようなものを使用しませんJRPrintServiceExporter

  PrintServiceAttributeSet printServiceAttributeSet = new HashPrintServiceAttributeSet();
  printServiceAttributeSet.add(new PrinterName("Xerox DocuPrint 100 EPS PS3", null));
  //...
  exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG, Boolean.FALSE);
  exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG, Boolean.FALSE);
  //...
  exporter.exportReport();

ドライバーは PostScript でファイルを出力しますが、「出力ファイル名」ウィンドウが常に表示されます。ウィンドウでファイル名を手動で設定すると、プリンターはファイルに正常に印刷されます。

プログラムでファイル名を設定する方法はありますか?

4

1 に答える 1

0

javax.print.attribute.standard»行き先が役立ちます。

解決:

  //...
  import javax.print.attribute.standard.Destination;
  //...

  JRExporter exporter = new JRPrintServiceExporter();          

  //--- Set print properties
  PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
  printRequestAttributeSet.add(MediaSizeName.ISO_A4);   

  //----------------------------------------------------     
  printRequestAttributeSet.add(new Destination(new java.net.URI("file:d:/output/report.ps")));
  //----------------------------------------------------     

  PrintServiceAttributeSet printServiceAttributeSet = new HashPrintServiceAttributeSet();
  printServiceAttributeSet.add(new PrinterName("Xerox DocuPrint 100 EPS PS3", null)); 

  //--- Set print parameters      
  exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
  exporter.setParameter(JRPrintServiceExporterParameter.PRINT_REQUEST_ATTRIBUTE_SET, printRequestAttributeSet);      
  exporter.setParameter(JRPrintServiceExporterParameter.PRINT_SERVICE_ATTRIBUTE_SET, printServiceAttributeSet);      
  exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG, Boolean.FALSE);
  exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG, Boolean.FALSE);      

  //--- Print the document
  try{
      exporter.exportReport();
  }
  catch(JRException e){
      e.printStackTrace();
  }
于 2013-11-12T13:29:47.950 に答える