読者です 読者をやめる 読者になる 読者になる

PrimeFaces Chart を Printer で印刷する

Chart コンポーネントは Printer コンポーネントからの印刷は出来ないようです。 PrimeFaces Community Forum Printer doesn't print Flash charts
PrimeFaces Community Forum Printer not working for chart objects
2,3年前の回答ですが出来ないと書いています。
5.1 でも試してみましたが印刷出来ませんでした。*1

で、どうしても Printer コンポーネントを使って印刷したい場合は、Chart コンポーネントのクライアントサイド API に exportAsImage があるのでこれを使って乗り切りましょう。

exportAsImage は Chart から画像を返す API です。
画像なら Printer コンポーネントで印刷出来たので、画像を表示して Chart を消す方法を取りました。

<script type="text/javascript">
  window.onload = function() {
    $('#form\\:imagePanel').empty().append(PF('chart').exportAsImage());
    $('#form\\:chartPanel').remove();
  }
</script>

<p:outputPanel id="chartPanel">
  <p:chart type="line" model="#{backingBean.chartModel}" style="height:200px; " widgetVar="chart" />
</p:outputPanel>
<p:outputPanel id="imagePanel" >

今回は チャートの動的な変更はなかったので onload でやっています。

動的な変更がある場合は、もうちょっと手間かもしれません。

*1:ブラウザーから直接印刷したら印刷は出来ました。