在控制面板中,我的打印机端口配置为“文件:”。
例如,我可以使用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中输出文件,但始终显示“输出文件名”窗口。如果我手动在窗口中设置文件名,则打印机会成功打印到文件。
知道如何以编程方式设置文件名吗?
答案 0 :(得分:0)
javax.print.attribute.standard
»Destination有帮助。
解决方案:
//...
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();
}