2012-11-09 11 views
6
protected static byte[] exportReportToPdf(JasperPrint jasperPrint) 
                 throws JRException { 
    JRPdfExporter exporter = new JRPdfExporter();  
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos); 
    exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, 
       "this.print({bUI: true,bSilent: false,bShrinkToFit: true});"); 

    exporter.exportReport();   
    return baos.toByteArray(); 
} 

このようなコードを使用して、JasperアプリケーションからPDF文書をエクスポートしています。Internet ExplorerでのPDF書き出し印刷

ライン

exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, 
      "this.print({bUI: true,bSilent: false,bShrinkToFit: true});"); 

プリンタに直接PD​​F文書を送信するためにJavaScriptを追加します。

予想される動作は、印刷ダイアログボックスにPDFドキュメントのプレビューが表示されることです。

これは、ほとんどの時間を正常に動作します - 私は、Internet Explorer 8とFirefoxのすべての5~6回のうち1程度の問題を抱えてい除き。

何が起こるか - PDFドキュメントの印刷プレビューダイアログが表示されないか、プレビューウィンドウに空白のドキュメントが表示されます。

-I'veは、これらが助けていないようでしたような

response.setContentType("application/pdf"); 
response.setHeader("Content-disposition","inline; filename=\"" 
        + reportName 
        + "\""); 
response.setContentLength(baos.size()); 

を異なるレスポンスヘッダを設定しようとしたexporter.setParameter -I've経由this.print()に異なるのparams(異なるのJavaScriptの数を試してみました

これはIEとFFの問題のようですが、誰もこの問題を処理したことがありますか?100%すべてのブラウザで動作するようにする必要があります。プリンタ、またはブラウザを介して動作するサードパーティのライブラリですか?

+0

この文書はAcrobatで読むことができますか? –

+0

はい、私たちはexporter.setParameterコメントアウト場合(JRPdfExporterParameter.PDF_JAVASCRIPTを、 "this.print({BUI:偽、bShrinkToFit::、bSilent真真});"); PDFファイルの添付ファイルとしてダウンロードすることができます。これはすべてのブラウザで正常に動作します。 – user619804

+0

このrifソフトウェアとは何ですか?それはジャスパーの報告書で動作するのでしょうか、それともジャスパーの代用品ですか? – user619804

答えて

4

UIを更新する機会が得られていない可能性があります。次のコードは、おそらく必要な機会を与えるプリントを遅らせるものです。私はあなたの環境を持っていないので、私はテストしませんでした。

exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, 
    "app.setTimeOut('this.print({bUI: true,bSilent: false,bShrinkToFit: true});',200);") 
+0

しかし、このjavascriptは純粋にPDFのためではありませんか?私はPDF_JAVASCRIPTがDOMに何かを追加しているとは思わない? – user619804

+0

@ user619804では、JSはDOMに何も追加していませんが、ブラウザ(レンダリングと印刷を制御する者)とAdobeプラグインの間にどのような競合条件が存在するかについてはわかりません。マイクの提案を試しましたか?それはまったく違いがありましたか? – vladr

+0

タイムアウトが役に立たなかった。 – user619804

関連する問題