访问皕杰报表时在url后加&emitter=print后没起作用,tomcat控制台不报错,页面没有反应,这是什么原因呢?
这个我们要从皕杰报表的打印方式说起,因为采用B/S架构的皕杰报表,用网页浏览器打印,因而用什么打印方式是与浏览器息息相关的。早期的浏览器都支持java控件,所以皕杰报表采用的是applet打印,优点是打印精度很高,缺点是有时控件需要在浏览器中安装一下。但chrome和火狐后期版本不支持java控件了,所以皕杰报表在chrome和火狐浏览器上采用了pdf打印,而在ie浏览器上保留了applet打印。为了区分是pdf打印还是applet打印,设置了打印模式参数printMode,参数值等于applet就是applet打印,参数值等于pdf就是pdf打印。
在我们使用皕杰报表里预设的打印按钮时,程序做了自动选择printMode的值,因而用哪个浏览器都可以正常打印。当输出直接改为打印而不是页面时,如果url中只给一个&emitter=print,没有给打印模式,服务器就处于等待状态,没有反应就正常了。正确的url后应加两个参数,&emitter=print&printMode=pdf,这样打印页面就能正常显示了。
问题看似没有头绪,但如果我们知道了其中原理,就会轻松找到问题的症结,从而轻松解决问题。