生成pdf后如何打开打印对话框?

IT技术 javascript pdf jasper-reports
2021-02-19 13:45:17

我写了一些动态生成PDF文件的动作。类似:reports/reportGenerator.action

当我调用reports/reportGenerator?param=dialy它时会在弹出窗口中打开生成的pdf,然后我可以按打印按钮打开打印机对话框并打印它。

我现在想做的是直接打开打印机对话框。因此,当我调用reports/reportGenerator?param=dialy完全生成 pdf 文件后,打开打印机对话框。那可能吗?(我知道打印机对话框不能跳过)

更多信息:动作是这样的:

sout = response.getOutputStream();
response.setContentType("application/pdf");
response.setHeader("Content-disposition","inline; filename=\"myReport.pdf\"");
sout.write(pdfBytes);
sout.flush();
sout.close();
3个回答

感谢 Alex KI 找到了答案:

根据JRpdfExporterParameter.html#PDF_JAVASCRIPT

您可以PDF_JAVASCRIPT在生成 pdf 时使用属性将 javascript 添加到 pdf 中。

所以我补充说

JRPdfExporter exporter = new  JRPdfExporter();
exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, "this.print();");

导出 PDF 时它起作用了

我在哪里添加此代码以及如何添加?你能给我举个例子吗?
2021-04-20 13:45:17

解决方案很简单,jrxml通过jrxml在 iReport 设计器中右键单击您的文件,然后按属性,然后按添加,将属性添加到您的文件中

物业名称

net.sf.jasperreports.export.pdf.javascript

适当的value

this.print({bUI: true,bSilent: true,bShrinkToFit: false});

此属性将在客户端自动打印,我会添加它并且它可以完美运行。

在您的 loadView 刀片文件(PDF 刀片文件)中添加此脚本

<script type="text/javascript"> try { this.print(); } catch (e) { window.onload = window.print; } </script>