出现原因
在PrintJs中无法打印选中样式,是因为ElementUI的默认样式导致。你可以选择修改ElementUI的默认样式或者使用原生的标签来打印。
方式一
如果整体打印的内容不是很多,且样式代码也比较少,你可以配置scanStyles: false,设置PrintJs不使用任何样式。
printJS({ documentTitle: "能力评估", printable: 'print-order', type: 'html', maxWidth: '100%', targetStyles: ['*'], scanStyles:false,})如果上面配置之后还没有显示,就需要添加下面的css代码。
.el-checkbox__input { -webkit-print-color-adjust: exact; -moz-print-color-adjust: exact; color-adjust: exact;}如果打印内容很多,会发现打印样式难看,因为PrintJs已经完全抹去了所有的样式。
方式二(推荐)
隐藏Element组件,使用原生标签重新绘画Radio和Checkbox元素。
使用这种方式,我们需要在打印和正常浏览的时候切换显示页面上的Radio和Checkbox元素,所以这里我们需要监听打印方法。
效果预览:

以Vue2中的使用方法举例:
openPrint() { this.printing = true; // 打印之前切换元素显示 this.$nextTick(() => { printJS({ documentTitle: "能力评估", printable: 'print-order', type: 'html', maxWidth: '100%', targetStyles: ['*'], onPrintDialogClose: this.printing = false // 关闭打印页面切换元素显示 }) })},<el-checkbox-group v-if="!printing" v-model="changeLevelCheck"> <div> <el-checkbox label="1">处于昏迷状态者,直接评定为能力完全丧失(完全失能)</el-checkbox> </div></el-checkbox-group>
<div v-if="printable"> <input type="checkbox" :checked="changeLevelCheck"> <label>处于昏迷状态者,直接评定为能力完全丧失(完全失能)</label></div>