Cirry's Blog

使用PrintJs打印ElementUI中的Radio和Checkbox样式显示异常

Jun 30, 2023
技术 js
2分钟
374字

出现原因

在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元素,所以这里我们需要监听打印方法。

效果预览:

default

以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>
本文标题:使用PrintJs打印ElementUI中的Radio和Checkbox样式显示异常
文章作者:Cirry
发布时间:Jun 30, 2023
感谢大佬送来的咖啡☕
alipayQRCode
wechatQRCode
总访问量
总访客数人次