我开发了一个JSF应用程序,它使用JasperReports在客户端计算机上的每个事务之后提供pdf文件作为下载。我遵循这个tutorial.有没有什么方法可以直接打印它而不是下载它,因为最终用户必须打开它并给出打印命令。 (客户说有很多交易,他们希望在独立的应用程序中以相同的方式打印收据,而无需像打印对话框那样进行任何干预。)
答案 0 :(得分:1)
如果没有出现打印对话框,则无法强制浏览器打印。
但是,您可以设置内容处理,以便浏览器在浏览器中打开可以打印的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。如果更改Content-Disposition,浏览器将显示PDF内联而不提示保存。这将跳过必须打开PDF的步骤。
答案 1 :(得分:-1)
您可以使用以下方法:
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