这个问题已经在这里有一个答案:
- 提供PDF下载后自动打开打印机对话框 3个回答
我公司开发的JSF应用程序赋予一个PDF文件作为JasperReports的在客户端机器在每次交易后下载。 我跟着这个教程。 有什么办法,我们可以直接打印出来,而不是下载它作为最终用户必须打开它,并给打印命令。 (客户说,有很多的交易,他们想要打印的收据在一个独立的应用程序相同的方式,而不喜欢把打印对话框中的任何干预。)
这个问题已经在这里有一个答案:
我公司开发的JSF应用程序赋予一个PDF文件作为JasperReports的在客户端机器在每次交易后下载。 我跟着这个教程。 有什么办法,我们可以直接打印出来,而不是下载它作为最终用户必须打开它,并给打印命令。 (客户说,有很多的交易,他们想要打印的收据在一个独立的应用程序相同的方式,而不喜欢把打印对话框中的任何干预。)
你不能强迫浏览器,无需打印对话框出现打印。
你可以,但是,设置内容处置,使得浏览器开辟了可打印的浏览器的PDF文件。 例如:
/**
* Sets the regular HTTP headers, regardless of whether this report is
* embedded in the browser window, or causes a "Save As" dialog prompt to
* download.
*/
protected void setHeaders() {
getServletResponse().setHeader( "Cache-Control", getCacheControl() );
}
/**
* Sets the HTTP headers required to indicate to the browser that the
* report is to be downloaded (rather than displayed in the current
* window).
*/
protected void setDownloadHeaders() {
HttpServletResponse response = getServletResponse();
response.setHeader( "Content-Description", getContentDescription() );
response.setHeader( "Content-Disposition", "attachment, filename="
+ getFilename() );
response.setHeader( "Content-Type", getContentType() );
response.setHeader( "Content-Transfer-Encoding",
getContentTransferEncoding() );
}
这将提示用户保存PDF。 如果你改变了内容处置,该浏览器将显示PDF内嵌而不提示保存。 这将跳过不必打开PDF的步骤。
您可以使用以下方法:
JasperPrintManager.printPage(jasperPrint, 0, true);//for Direct print
* True : It Shows "Printrer Dialog also"
JasperPrintManager.printPage(jasperPrint, 0, false);//for Direct print
* fasle : It can't Show "Printrer Dialog", it will print the report directly