我开发了一个 JSF 应用程序,它使用 JasperReports 在客户端机器上的每次交易后提供一个 pdf 文件作为下载。我按照本教程进行操作。有什么方法可以直接打印而不是下载它,因为最终用户必须打开它并给出打印命令。(客户说有很多交易,他们希望在独立的应用程序中以相同的方式打印收据,而不需要像打开打印对话框那样进行任何干预。)
问问题
3878 次
2 回答
1
您不能在不出现打印对话框的情况下强制浏览器进行打印。
但是,您可以设置 Content-Disposition 以便浏览器在浏览器中打开可以打印的 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 的步骤。
于 2012-11-23T17:28:50.137 回答
-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
于 2016-06-24T09:52:15.247 回答