这是一个非常抽象的问题。
我正在开发一个Spring MVC Web应用程序,它必须不断处理大量的发票打印。当前保存发票时,spring控制器将发票ID委托给准备pdf的jasper pdf生成服务。下载pdf后,用户手动打印它。
我需要一种在用户保存发票时以静默方式打印发票的方法。
有什么想法吗?
答案 0 :(得分:0)
由于您要导出为PDF,因此可以。您需要向JRPdfExporterParameter.PDF_JAVASCRIPT
个实例添加JRPdfExporter
参数,其值为"this.print({bUI: true,bSilent: false,bShrinkToFit: true});"
。例如:
protected static byte[] exportReportToPdf(JasperPrint jasperPrint) throws JRException{
JRPdfExporter exporter = new JRPdfExporter();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, "this.print({bUI: true,bSilent: false,bShrinkToFit: true});");
exporter.exportReport();
return baos.toByteArray();
}
这实际上是将JavaScript添加到PDF中。打开PDF时,它会运行,并将其发送给打印队列。应该注意的是,这应该谨慎使用,因为通常认为不能自动为您的用户执行此操作。当我在应用程序中使用它时,我们必须为每个报告按钮。 Export
按钮,不包含JavaScript,以及Print
按钮。这样那些希望它只打印它的用户会这样做,那些想要数字拷贝的用户也会这样做。