我写了一些生成动态PDF文件的动作。类似于:reports / reportGenerator.action
当我拨打reports/reportGenerator?param=dialy
时,它会在弹出窗口中打开生成的pdf,然后我可以按打印按钮打开打印机对话框并打印出来。
我现在要做的是直接打开打印机对话框。所以当我在完全生成pdf文件后调用reports/reportGenerator?param=dialy
和 时,打开打印机对话框。那可能吗? (我知道不能跳过打印机对话框)
更多信息: 行动是这样的:
sout = response.getOutputStream();
response.setContentType("application/pdf");
response.setHeader("Content-disposition","inline; filename=\"myReport.pdf\"");
sout.write(pdfBytes);
sout.flush();
sout.close();
答案 0 :(得分:7)
感谢Alex K,我找到了答案:
根据JRPdfExporterParameter.html#PDF_JAVASCRIPT
您可以使用PDF_JAVASCRIPT
属性在生成时将javascript添加到pdf中。
所以我添加了
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, "this.print();");
导出PDF时有效
答案 1 :(得分:2)
解决方案很简单,只需在iReport设计器中的jrxml
上单击鼠标右键,然后按属性,然后按添加:
jrxml
文件添加属性
属性名称
net.sf.jasperreports.export.pdf.javascript
物业价值
this.print({bUI: true,bSilent: true,bShrinkToFit: false});
此属性将在客户端自动打印,我添加它并且它可以正常工作。
答案 2 :(得分:0)
将此脚本添加到您的loadView刀片文件(PDF刀片文件)
<script type="text/javascript"> try { this.print(); } catch (e) { window.onload = window.print; } </script>