一般动作
当客户要求不高(不需要Office或者PDF套打)时,常使用浏览器自带的打印功能(window.print())来实现所见即所得的表单打印,打印效果往往差强人意。
常见的问题如:
针对问题一,bro-framework中提供了一个 printForm 的js方法,打印的时候自动将表格宽度设置为一张A4纸的大小,并且通过css隐藏了一些打印时不需要显示的内容,如操作栏、消息栏等。如果这个方法不能满足需求,可以在工程的application.js中自定义一个方法,或者写一个同名方法覆盖。
针对打印内容、效果,bro-framework默认提供了一组样式表,用于设置打印时的效果,如果还是无法满足要求的话,可以自行设置打印时的css样式,甚至于在页面上输出两套内容,一套用于显示,一套用于打印,然后用css样式控制。比如:
/** 浏览器显示时的样式 */
.foo {
display: none;
}
.bar {
font-weight: bold;
}
/** 打印时的样式 */
@media print {
.foo {
display: block;
}
.bar {
display: normal;
}
}
此外,在表单上添加打印按钮的代码示例如下:
<div class="buttons">
......
<span class="button"><input class="print" type="button" onclick="printForm()"
value="${message(code:'default.button.print.label', default:'Print')}"></span>
......
</div>
如果是通过bro-bpm流程定义工具配置的,可以配置一个自定义操作,其onclick事件配置为 printForm() 即可,当然还有Css类名也可以配置为print(即默认的打印图标)或其他。