How to open print dialog after pdf generated?

2019-01-06 22:54发布

问题:

I wrote some actions which generates dynamically PDF files. something like: reports/reportGenerator.action

when I call reports/reportGenerator?param=dialy it will open the generated pdf in a popup, and then I can press the print button to open the printer dialog and print it.

what I want to do now is to open the printer dialog directly. so when I call reports/reportGenerator?param=dialy and after the pdf file is fully generated, open the printer dialog. is that possible? (I know the printer dialog can not be skipped)

more info: action is something like this:

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

回答1:

Thanks to Alex K I found the answer:

according to JRPdfExporterParameter.html#PDF_JAVASCRIPT

you can use PDF_JAVASCRIPT property to add javascript to the pdf when you generate it.

so I added

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

when exporting PDF and it worked



回答2:

The solution is simple, add property to your jrxml file by clicking right on your jrxml in the iReport designer and press properties then press add :

Property name

net.sf.jasperreports.export.pdf.javascript

Property value

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

This property will print automatically in the client side, I'd add it and it work perfectly.