1

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

4

2 回答 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 回答