1

JasperReports を使用して、クライアント マシンでの各トランザクションの後に PDF ファイルをダウンロードする JSF アプリケーションを開発しました。このチュートリアルに従いました。エンド ユーザーがファイルを開いて印刷コマンドを実行する必要があるため、ダウンロードするのではなく、直接印刷する方法はありますか。(顧客は、多くのトランザクションがあり、印刷ダイアログを表示するなどの介入なしに、スタンドアロン アプリケーションで同じ方法でレシートを印刷したいと言っています。)

4

2 に答える 2

1

印刷ダイアログが表示されずにブラウザに印刷を強制することはできません。

ただし、ブラウザーが印刷可能な PDF をブラウザーで開くように Content-Disposition を設定することはできます。例えば:

  /**
   * 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 に答える