2

这是一个非常抽象的问题。

我正在开发一个必须连续处理大量发票打印的 Spring MVC Web 应用程序。当前保存发票时,spring 控制器将发票 id 委托给准备 pdf 的 jasper pdf 生成服务。pdf下载后,用户手动打印。

我需要一种在用户保存发票时静默打印发票的方法。

有任何想法吗?

4

1 回答 1

0

由于您要导出为 PDF,因此这是可能的。您需要使用 value 向您的实例添加一个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 的按钮和一个包含 JavaScript 的Print按钮。这样,希望它只打印它的用户就会这样做,而那些想要数字副本的用户也可以这样做。

于 2012-06-25T14:48:44.053 回答