アイデアとは?
- グラフィックスを画像に保存します。
- バイナリをサーバー上の文字列に渡します。
- バイナリからグラフを識別します (準備完了)。
- データとグラフィックを含む PDF を作成します (準備完了、itex を使用)。
- PDFを表示(準備完了)。
しかし、グラフィックをエクスポートできません。これは、それらを検出できないためです。データテーブルにグラフィックを含めると、widgetvar が繰り返されるため、showcaseのソリューションを使用できません。
$('#output').empty().append(chartWidgetvar.exportAsImage());
これは私のコードの一部です。
<h:form id="reportePro">
<p:dataTable value="#{listas.reporteSeccionPro}" var="p"
selection="#{listas.reporteSeleccionadoSeccionPro}"
selectionMode="single" rowKey="#{p.idFila}"
emptyMessage="No existen coincidencias" id="reporteGeneral">
<p:column headerText="Chart">
<p:commandButton id="chartBtn" value="Gráficos" type="button" />
<p:overlayPanel id="chartPanel" for="chartBtn" hideEffect="fade"
showEffect="fade" appendToBody="true"
style="width:900px;height:450px;">
<p:pieChart id="pie"
styleClass="jqplot-table-legend jqplot-target"
value="#{p.pieModel}" extender="ext"
title="#{p.nomProSeccionPro}"
style="width:400px;height:450px;font-size:15px;"
showDataLabels="true" sliceMargin="5"
seriesColors="DB4C14, C0E9ED, A8CCED, C7B47F, F7F28F, 4DB0C4" />
</p:overlayPanel>
</p:column>
</p:dataTable>
</h:form>
dynamic id を使用すると思いましたが、
<p:pieChart id="#{chart.idPie}" />
設定できません。
動的widgetvarを使用すると思いましたが、
<p:pieChart widgetvar="#{chart.idPie}" />
設定できません。
グラフィックのidだけを使おうと思ったのですが、
#{p:widgetVar ('ComponentId')}
ただし、動的IDは使用できないことに注意してください
もう 1 つの解決策は、canvas.toDataURL を使用することです。そのためには、最初のキャンバスの ID が必要ですが、primefaces ID は生成しません。したがって、このソリューションは使用できません。
何時間もかけて解決策が見つからなかった後、私に尋ねます。チャートがデータテーブルにある場合、チャートを画像にエクスポートできますか?