4

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();
Roman C
  • 49,761
  • 33
  • 66
  • 176
Yichz
  • 9,250
  • 10
  • 54
  • 92
  • 1
    possible duplicate of [Can a PDF file's print dialog be opened with Javascript?](http://stackoverflow.com/questions/687675/can-a-pdf-files-print-dialog-be-opened-with-javascript) – Matt Ball Jan 04 '12 at 20:09
  • I already saw that question, the accepted answer says probably not, but many answers say yes, tested them but not working, is embed javascript the only way? – Yichz Jan 04 '12 at 20:15
  • Yes, JS must be embedded in the PDF for this to work. – Matt Ball Jan 04 '12 at 20:18
  • @Kossel You can use the java code to print. The sample: http://juixe.com/techknow/index.php/2008/01/17/print-a-pdf-document-in-java/. Another tip: http://stackoverflow.com/questions/4694737/print-jasperreports-client-side – Alex K Jan 05 '12 at 11:05
  • Thanks Alex, but I have no problem generating pdfs. the problem is sending to printer :) – Yichz Jan 05 '12 at 17:58
  • I thought that this samples is about how to print. Another link: http://stackoverflow.com/q/7999792/876298 – Alex K Jan 06 '12 at 12:19
  • I did the question author do (http://stackoverflow.com/questions/975652/silent-print-a-embedded-pdf), and I get looped in the if.. seems cannot find function print(); for that element :S – Yichz Jan 06 '12 at 18:37

3 Answers3

8

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

Petter Friberg
  • 21,252
  • 9
  • 60
  • 109
Yichz
  • 9,250
  • 10
  • 54
  • 92
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.

Youcef LAIDANI
  • 55,661
  • 15
  • 90
  • 140
0

Add this script in your loadView blade file (PDF blade file)

<script type="text/javascript"> try { this.print(); } catch (e) { window.onload = window.print; } </script>
Prafful Panwar
  • 439
  • 7
  • 19