直接打印PDF报告,而不是下载,打开和打印它

时间:2012-11-23 17:10:29

标签: jsf jasper-reports

我开发了一个JSF应用程序,它使用JasperReports在客户端计算机上的每个事务之后提供pdf文件作为下载。我遵循这个tutorial.有没有什么方法可以直接打印它而不是下载它,因为最终用户必须打开它并给出打印命令。 (客户说有很多交易,他们希望在独立的应用程序中以相同的方式打印收据,而无需像打印对话框那样进行任何干预。)

2 个答案:

答案 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