我正在使用 primeface 打印,如下所示
<ui:define name="content" id="content">
<h:form id="common_chart_form" prependId="flase">
<p:growl id="growl" showDetail="true" autoUpdate="true"
sticky="false" />
<p:outputLabel id="labelvalue" value="aaaaaaaaaa"/>
<p:chart id="chart" type="bar"
model="#{commonChartController.barModel}" style="height:300px" />
<p:commandButton value="Print" type="button" icon="ui-icon-print">
<p:printer target="chart" />
</p:commandButton>
<p:commandButton value="Back" action="admin_sales_reports" />
</h:form>
</ui:define>
我需要打印图表,但不幸的是它无法打印。然后为了测试打印目标,我尝试打印“labelvalue”,它打印了我在这段代码中做的错误的事情
这是页面的屏幕截图
最佳答案
你可以用更优雅的方式做到这一点,而不需要在页面中声明outputPanel:
Javascript 函数:
function print(component){ var out = document.createElement('div'); out.appendChild(PF(component).exportAsImage()); var innerHTML = out.innerHTML; var openWindow = window.open('', 'Report', ''); openWindow.document.write(innerHTML); openWindow.document.close(); openWindow.focus(); openWindow.print(); openWindow.close(); }
定义图表的 widgetVar:
<p:chart widgetVar="chart2" type="bar" model="#{chartsBean.barModel2}" />
调用打印函数:
<p:commandLink id="lnk" onclick="print('chart2')"/>
关于jsf - PrimeFaces 打印不适用于 p :chart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25304803/