2012-01-04 84 views
3

我写了一些动态生成动态PDF文件。例如:reports/reportGenerator.action如何在pdf生成后打开打印对话框?

当我打电话给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(); 
+1

[可以用Javascript打开PDF文件的打印对话框?]可能的重复项(http://stackoverflow.com/questions/687675/can-a-pdf-files-print-dialog-be-opened-with- javascript) – 2012-01-04 20:09:09

+0

我已经看到了这个问题,接受的答案可能不是,但许多答案说是,测试它们但不工作,是嵌入JavaScript的唯一方法? – Kossel 2012-01-04 20:15:23

+0

是的,必须将JS嵌入到PDF中才能正常工作。 – 2012-01-04 20:18:52

回答

8

感谢Alex KI找到了答案:

根据

JRPdfExporterParameter.html#PDF_JAVASCRIPT

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

,所以我说

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

导出PDF时,它的工作

+0

我在哪里添加此代码以及如何?你能举个例子吗? – 2017-11-23 07:52:07

2

解决方法很简单,通过点击就在您的jrxml在iReport的设计师,然后按属性,然后按添加属性,您jrxml文件添加:

属性名

net.sf.jasperreports.export.pdf.javascript 

属性值

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

此属性将在客户端自动打印,我想补充它,它完美地工作。