<div id="printTable" ref="printTable">
任意内容
</div>
<button @click='print'>打印<button>
print() {
var t = window.devicePixelRatio
if (t != 1) {
document.body.style.zoom = -0.6 * t + 1.55;
}
const printContent = this.$refs.printTable;
const width = printContent.clientWidth;
const height = printContent.clientHeight;
const canvas = document.createElement('canvas');
const scale = 4;
canvas.width = width * scale;
canvas.height = height * scale;
canvas.style.width = width * scale + 'px';
canvas.style.height = height * scale + 'px';
canvas.getContext('2d').scale(scale, scale);
const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
const scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
this.printerLoading = true
html2canvas(printContent, {
canvas,
backgroundColor: null,
useCORS: true,
windowHeight: document.body.scrollHeight,
scrollX: -scrollLeft,
scrollY: -scrollTop
}).then((canvas) => {
this.printerLoading = false
const url = canvas.toDataURL('image/png')
printJS({
printable: url,
type: 'image',
documentTitle: '',
style: '@media print{@page {size:landscape;margin: 0cm 1cm 0cm 1cm;border:5px #f80 solid;}}'
})
}).catch(err => {
this.printerLoading = false
console.error(err);
})
},