打印常见问题

window.print()是执行打印,方法print()也只能window调用才有用

意思是对窗体的整个内容执行打印

所以你要想打印什么内容就给窗体显示什么内容

之前我写的生成图片打开一个新窗体把图片内容写入新窗体进行打印就是这个原理

当然你也可以不用打开一个新窗体直接在原来的窗体将需要打印的内容重新写入窗体

进行打印就行

但之前的打印是出现问题的

虽然打开一个新窗体并重新写入内容成功

但执行打印时却没有内容,所以打印就失败了

现在我就要给大家解决这个问题

首先我们来看一下打印出问题的代码与效果图

代码截图

printk 没有输出 只有demsg_printk 没有输出 只有demsg

选中需要打印的数据进行打印截图

printk 没有输出 只有demsg_数据_02

打印效果图

printk 没有输出 只有demsg_数据_03

可以看到打印的右边是没有数据的

经过我多次试验得出的结论:

出现这个问题的原因可能是弹出打印框的代码执行完成速度比把内容写入窗体的代码执行完成速度要快

所以打印的时候才没有获取到需要打印的内容打印就失败了

解决这个问题的反思路:

获取到需要打印的内容

既然问题出现在代码速度那么我们只需要让弹出打印框的速度比写入内容到窗体的速度慢就行了

这就要用到一次性计时器了,运用一次性计时器让打印的代码延迟触发就行

如下图就是添加计时器后的代码截图

printk 没有输出 只有demsg_数据_04

图中的1000指的是一千毫秒也就是一秒

这里的意思是一秒后再执行打印

我们再来看用了计时器后的打印效果图

printk 没有输出 只有demsg_数据_05

可以看到我们的打印是有内容的
证明我们的执行的方法是正确的
问题就这样解决了根据原理加一个计时器即可