打印PDF报告,而不是直接下载,打开和打印出来[复制](Print PDF report direc

2019-08-03 03:38发布

这个问题已经在这里有一个答案:

  • 提供PDF下载后自动打开打印机对话框 3个回答

我公司开发的JSF应用程序赋予一个PDF文件作为JasperReports的在客户端机器在每次交易后下载。 我跟着这个教程。 有什么办法,我们可以直接打印出来,而不是下载它作为最终用户必须打开它,并给打印命令。 (客户说,有很多的交易,他们想要打印的收据在一个独立的应用程序相同的方式,而不喜欢把打印对话框中的任何干预。)

Answer 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。 如果你改变了内容处置,该浏览器将显示PDF内嵌而不提示保存。 这将跳过不必打开PDF的步骤。



Answer 2:

您可以使用以下方法:

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


文章来源: Print PDF report directly instead of downloading, opening and printing it [duplicate]