LODOP中无规律无法还原偶尔出现问题排查

时间:2022-06-01 17:08:25

一些问题无法还原且偶尔出现,没法通过做例子来展示问题,为了找到问题在哪里,就需要排查定位问题 。由于这些问题偶尔出现,且无规律,出现频率低,所以只能不断通过各种对比测试,定位排查到问题和什么有关。
如果是个别用户问题,则需排查和该客户端相关的,相关博文:LODOP不同电脑打印效果不同排查

如果内容和客户端无关,每个客户都有问题,偶尔出现且无法还原,那么可能和程序有关,有可能和内容有关或自己页面其他部分有关等。也可能和c-lodop本身有关,可以用最新版对比试试。
如果通过大量测试,排除打印内容或页面或浏览器或电脑有关,可反馈给LODOP官方,并做个简单的能还原问题的小例子。

因为是偶尔出现,且无规律,开发人员在自己电脑上也无法还原问题,所有必须到出问题的用户那里排查,也可能和用户电脑或浏览器等有关。

通用简短问答:

以前是可以的,某台电脑提示,偶尔提示
关闭浏览器重试一下。
这个问题是什么时候发生的,是调用打印的时候吗,测试下官网样例http://www.c-lodop.com/demolist/PrintSample2.html
如果是调用打印的时候发生的,删减代码,排查是那句代码引起的。

可能和打印机,浏览器,打印内容,操作系统,电脑硬件本身等有关。
1.可能和打印机有关,用该客户的电脑选择xps或pdf虚拟打印机对比测试下。
如果虚拟打印机正常,测不出这个问题来,那么就可能是和打印机有关。
2.如果内容有超文本,也可能和浏览器有关,lodop用本机windows底层引擎解析超文本,与ie一致,重置下ie浏览器试试。
3.也可能和当前访问的浏览器有关,换个浏览器试试,重置浏览器试试。
4.也可能和打印内容有关,做个简单例子对比排查下试试。
5.也可能和操作系统电脑等有关,不过先打印点其他内容对比试试,排除内容的影响。

不好判断,只能先测试下,排查是否和打印机(用虚拟打印机对比测试),内容(输出简单内容对比测试),浏览器(重置ie浏览器)如果排除了这些影响,也可能和操作系统硬件等有问题有关,可以用其他相同操作系统对比测试下。

虚拟打印机-
开发测试 先用本机虚拟打印机测试下(如win7之后的系统自带xps虚拟打印机,或群文件里的Doro PDF Writer虚拟打印机)
理论上本机虚拟打印没问题的话,说明插件代码没问题,程序可做的努力就的确很少了,毕竟windows下的打印是微软倡导的设备无关系原则,要在打印机和打印驱动程序 系统上排查下,尝试重装驱动 或者 打印机不支持一些功能 打印机精度太低。

win7以上系统自带xps虚拟打印机,或安装pdf虚拟打印机,打印成文件。
如果文件正常,可能和打印机的可打区域或纸张不识别等有关。
如果虚拟打印机文件有问题,说明代码有问题。
用虚拟打印机打印测试,可排查是代码问题还是和打印机有关。

选择打印机,参考样例5,7http://www.c-lodop.com/LodopDemo.html
打印机优先级,参考http://blog.sina.com.cn/s/blog_721e77e50100wto6.html
开发测试 先用本机虚拟打印机测试下(如win7之后的系统自带xps虚拟打印机,或群文件里的Doro PDF Writer虚拟打印机)

偶尔出现不好排查,用虚拟打印机多测试几次,试试能否复现问题。如果也会出现,可能和代码有关。
因为问题是偶尔出现的,现在不清楚和代码有关还是和打印机有关。

不好判断,只能先多用虚拟打印机测试下。
虚拟打印机怎么测都正常,那么就和打印机驱动有关,排查打印机或打印机驱动。
如果虚拟打印机也偶尔出问题,排查内容,和代码的其他部分。

理论上本机虚拟打印没问题的话,说明插件代码没问题,程序可做的努力就的确很少了,毕竟windows下的打印是微软倡导的设备无关系原则,要在打印机和打印驱动程序 系统上排查下,尝试重装驱动 或者 打印机不支持一些功能。
咨询下打印机客服,是否是打印机的问题。

最新版-
以管理员权限安装最新版,用最新版对比试试http://www.c-lodop.com/download.html
测试样例
测试下官网样例http://www.c-lodop.com/demolist/PrintSample2.html 是否有什么提示。

管理员权限-
用管理员权限安装最新版http://www.c-lodop.com/download.html,右键以管理员权限运行,再对比试试。
用管理员权限安装最新版对比试试http://www.c-lodop.com/download.html,以管理员权限运行。

其他测试-
访问下欢迎页面试试http://localhost:8000
访问下https的欢迎页面https://localhost:8443
访问下 http://localhost:8000/c_sysmessage 查看下c-lodop系统信息和出错信息

预览测试
需要用实际打印的打印机预览,打印机不同,预览效果可能也有差异。
因为打印机存在可打区域或不支持自定义的纸张的情况。

预览是打印机的反显,预览和实际打印存在差异,一般和打印机驱动有关。
如果位置预览和实际打印不同,是否是打印机挡板有问题,可用打印维护等针对打印机调整。
如果是样式有差异,则可能和打印机驱动有关,预览是打印的反显。

重启c-lodop-
双击桌面上的c-lodop快捷方式,重启一下本机的c-lodop,重启c-lodop后刷新页面,再测试下。

各种奇怪问题及排查步骤:
0.排查和内容还是页面有关
先用自己写的输出原内容,对比排查是否和内容有关,如果和内容无关。
在用自己的写的页面,输出简单内容,排查是否和页面其他部分有关。

1.是否和打印内容有关
偶尔出问题,刷新后正常:
因为这个问题是偶然出现的,而且刷新就正常了,所以给了内容的html也不一定能出现。
建议先通过简单例子对比排查,排查是否和打印内容有关。

例如做个只发add_print_text的简单例子,然后不断用这个例子试试。
如果这个例子也有这个问题,也是刷新后正常,那么就排除了打印内容的影响,就不用排查打印内容了。
如果这个例子没这个问题,那么很可能和内容有关,通过删减内容等,排查和哪些内容有关。

2.是否和自己写的页面其他部分有关
由于LODOP用于各种web系统,开发人员除了打印,页面会有很多东西,加了很多判断循环之类的,获取数据也有很多方法,数据传递,或判断中出现问题,也会导致一些问题。

根据提示等分类的简短问答:
1.偶尔提示‘WebSocket没准备好’,刷新下页面就正常了 ,无法复现问题。
参考http://www.c-lodop.com/faq/pp3.html 如果是页面点击后打印,把获取LODOP对象放在打印按钮里触发。参考样例2http://www.c-lodop.com/demolist/PrintSample2.html
如果是需要一进入页面就进行打印,不需要点击页面的按钮等触发,可参考链接里的处理方法,加延迟或等c-lodop加载完再调用。

根据链接处理了,偶尔还是出现这个提示。
http://www.c-lodop.com/faq/pp3.html
这里面的方法都是正常的,而且刷新就正常了,很可能和页面其他部分有关,可以做个简单例子对比,尽量能做出还原问题的简单例子。

就是等页面加载完成,WebSocket通讯服务准备完成,然后再调LODOP 。

刷新就正常了比较奇怪,是否是页面本身其他部分的影响。
弄个简单例子放上试试,排除其他页面其他部分的影响。
先用自己写的输出原内容,对比排查是否和内容有关,如果和内容无关。
在用自己的写的页面,输出简单内容,排查是否和页面其他部分有关。

简短问答:
漏打
用最新版对比试试http://www.c-lodop.com/download.html
参考样例4http://www.c-lodop.com/demolist/PrintSample4.html判断打印的返回值,设置如果漏打,重新打印该任务试试。

参考样例4 http://www.c-lodop.com/demolist/PrintSample4.html,判断下print的返回值。
调试JS,排查是否执行了足够次数的pirnt。
并查看版本,用最新版http://www.c-lodop.com/download.html

如果队列里任务也不正常,应该是漏任务了,调试JS,排查是否执行了八次pirnt,查看下pirnt的返回值是否正常。

如果队列里任务正常,用虚拟打印机测试下,队列和虚拟打印机个都正常,说明代码正常,进入队列后就开始排队了,打印机打印不出来,应该和打印机有关,重装打印机驱动试试。

用最新版试试http://www.c-lodop.com/download.html
打印机脱机查看下打印机队列的任务数量是否正常
漏打和重打是否有规律,安装最新版c-lodop扩展版,开启日志功能,查看下日志是否正常。

日志功能,在端口设置界面的右键菜单里勾选 Run Logs
日志存放目录:MountTaiSoftware/CLodop32/Logs,保留最新7天日志,每天不超过200k(约2千条)
日志有对话REQUEST类和打印PRINTED类两类成功日志(暂无失败日志),
前者保存了请求目的、对方IP、对话协议、对话端口和对话时间;
后者保存了打印机名、打印标题、打印任务页数、打印份数、打印时间;

如果日志没有重复
接收和发送没问题,任务没有重复,说明插件没有重复,可能和数据或打印机等有关。
如果日志里重复了
说明确实发了重复的任务,做个能还原问题的例子来,这边测试下。

如果打印机队列的任务和页数都是正常的,而打印机多打了,打印机队列和打印机实际数量不一致,重装打印机驱动试试。
如果打印机队列任务和页数不正常,比如打印机队列里多了一个任务,查看下C-LODOP的日志里,请求和打印是否一致,是否多请求了一次,如果请求和打印一致,多请求了一下,调试下JS,排查下代码 。

漏打任务(偶尔无规律,无法复现)
1.用最新版http://www.c-lodop.com/download.html
2.参考样例4http://www.c-lodop.com/demolist/PrintSample4.html
直接判断print的返回值,判断是否加入了队列。
批量打印,参考样例26,尽量多分一些任务试试。

1.用最新版http://www.c-lodop.com/download.html
2,判断print的返回值,参考样例4.http://www.c-lodop.com/demolist/PrintSample4.html
返回值判断的是是否加入队列,如果已经加入了队列,就不是程序漏打了。
3.脱机测试打印,偶尔出现不好排查,最好能找到规律,查看队列是否正常。

漏打内容(偶尔无规律,虚拟打印机也有时候可以复现):
如果是批量打印超文本,中间漏打的是空白,可以加延迟等方式试试,尽量多分一些任务试试。
批量打印大量较大的图片,可以试试直接输出base64码方式,参考样例38,不要加img标签。
批量点大量的超文本和图片,可能会有影响。尽量用add_print_text纯文本等进行设计,这种是lodop直接输出的,不需要经过浏览器解析。

偶尔出现且无法还原不好排查,最好能找到规律。
如果是单个用户,是否是该用户电脑或系统等问题,最好在出问题的时候去用户电脑上排查下,找到和什么原因有关。

偶然发生打印同样内容多次
偶然发生不好排查,调试下JS,脱机查看下打印机队列,
用虚拟打印机多测试几次。

如果虚拟打印机多次测试都是正常的,真实打印机多次测试脱机后队列也正常,应该和打印机或打印机驱动有关,重装打印机驱动试试。

输出个超文本有进度条很慢
远程共享打印机 打印机驱动有问题 内容过多需要下载有脚步执行或本身网络慢
机器性能过低 系统ie有问题或缓存过多
可能会出现这种问题 。跟机器 网络 内容都相关。
尽量减少单个任务数据量 参考样例26 ,重置下ie, 用本机虚拟打印机测试对比
批量打印,分页分任务,在页数和任务之间平衡一下,参考样例26http://www.c-lodop.com/demolist/PrintSample26.html
删减内容排查下,也可能和内容有关,如果内容过多,可以多分一些任务试试。

输出个简单的超文本内容对比试试。
如果简单的超文本内容很快,可能和内部的什么样式或其他内容加载有关。

同一台电脑有时候能打印有时候不能,无反应(无法还原问题,开发人员测不出来,偶尔出现无规律)
打印不出来的时候,查看下打印机队列。是否进入了队列,打印机脱机等问题。
同一台电脑有时候可以打印,有时候不可以打印吗,打印出来的时候有什么现象。
打印不出来的时候,进入打印机队列查看下任务状况 。
参考样例4http://www.c-lodop.com/demolist/PrintSample4.html
判断下PRINT的返回值试试。
参考样例4,判断print的返回值试试,这个返回值是发送打印任务加入队列算成功。

调试下JS,排查是否执行了打印语句,打印的时候单据信息是否都已经获取到了。
用虚拟打印机测试下,做个简单的例子对比试试,如果能还原问题,发个例子来这边测试下。
用最新版对比试试http://www.c-lodop.com/download.html

偶尔出现且无法还原不好排查,最好能找到规律。
如果是单个用户,是否是该用户电脑或系统等问题,最好在出问题的时候去用户电脑上排查下,找到和什么原因有关。

偶尔出现且无法还原不好排查,最好能找到规律。
如果是单个用户,是否是该用户电脑或系统等问题,最好在出问题的时候去用户电脑上排查下,找到和什么原因有关。
因为你们的电脑测试是没有问题的,只有这个用户有问题,感觉应该和这个用户的什么设置有关,建议出问题的时候去用户那里排查下。

都是一台电脑一台打印机,用虚拟打印机测试下,也可能和打印机有关。
不好排查,因为只有那个用户有问题,这边应该也没法还原问题。
只能出问题的时候你们去排查下。
都是同一台电脑,有时候能打印,有时候不能打印,不好排查。
出问题的时候去那台电脑上测试下。
出问题的时候,去那台电脑上排查下,是否是电脑卡了之类的,浏览器不响应之类的,导致怎么点都不打印。
无法还原问题,这边也没法排查,而且是偶尔出现,只能出问题的时候去查看下是什么情况。

偶尔发生不打印,不提示,c-lodop启动正常,上一秒不打印,下一秒又能打印了
不打印的时候有什么具体现象,查看下打印机队列的情况,和JS的执行情况。
参考http://www.c-lodop.com/demolist/PrintSample4.html
可以判断print的返回值,执行了发送打印命令算成功。

用虚拟打印机测试下,
如果虚拟打印机正常,也可能是打印机驱动问题。执行了打印语句,发送到队列,但是打印机驱动有问题。

不好判断,没有提示,也没进入队列,如果确认JS是执行了的,不好判断什么 原因。
出问题的测试下官网样例,试试样例是否会有提示。

点打印后,没有打印,如果页面没有提示,查看下打印机队列的情况。

没法复现问题,不好排查。
或者先把打印机都脱机了,然后设置循环不断的打,查看下队列,查看下队列任务数量是否正常。
是否漏的很多。

这边测试过很多驱动,没有发现打印机驱动会间歇性的漏打任务。

批量打印超文本中偶尔出现问题
批量打印,分页分任务,在页数和任务之间平衡一下,参考样例26http://www.c-lodop.com/demolist/PrintSample26.html
删减内容排查下,也可能和内容有关,如果内容过多,可以多分一些任务试试。

或者改成用add_print_text输出文本。
base64码直接输出图片,不加img标签方式,参考样例 38http://www.c-lodop.com/demolist/PrintSample38.html
这种不经过浏览器解析,批量打印效果好些。

批量打印超文本,可能受浏览器解析引擎的限制。
多分一些任务,或换用add_print_text+base64图片输出方式。

如果实在偶尔出现,不好复现:
安装带日志的版本用于测试,(该版本不是正式发布的版本,建议用于测试)排查下打印任务数量是否正常
http://demo.c-lodop.com:8000/c_update 下载这个版本:3.0.8.9 其中有日志功能,观察是否真的重新打印了:在端口设置界面的右键菜单里选择run logs
日志存在这个C:\Program Files (x86)\MountTaiSoftware\CLodop32\Logs目录下,最多7天
日志有对话REQUEST类和打印PRINTED类两类成功日志(暂无失败日志),
前者保存了请求目的、对方IP、对话协议、对话端口和对话时间;
后者保存了打印机名、打印标题、打印任务页数、打印份数、打印时间;

输出个超文本有进度条很慢
远程共享打印机 打印机驱动有问题 内容过多需要下载有脚步执行或本身网络慢
机器性能过低 系统ie有问题或缓存过多
可能会出现这种问题 。跟机器 网络 内容都相关。
尽量减少单个任务数据量 参考样例26 ,重置下ie, 用本机虚拟打印机测试对比
批量打印,分页分任务,在页数和任务之间平衡一下,参考样例26http://www.c-lodop.com/demolist/PrintSample26.html
删减内容排查下,也可能和内容有关,如果内容过多,可以多分一些任务试试。

输出个简单的超文本内容对比试试。
如果简单的超文本内容很快,可能和内部的什么样式或其他内容加载有关。

远程共享打印机 打印机驱动有问题 内容过多需要下载有脚步执行或本身网络慢
机器性能过低 系统ie有问题或缓存过多
可能会出现这种问题 。跟机器 网络 内容都相关。
尽量减少单个任务数据量 参考样例26 ,重置下ie, 用本机虚拟打印机测试对比
预览页数多可以多分一些任务,太多不建议预览,建议直接打印,在任务和页数之间平衡一下,参考样例26 http://www.c-lodop.com/demolist/PrintSample26.html

用有问题的电脑测试下官网样例http://www.c-lodop.com/demolist/PrintSample2.html
如果样例预览很快,可能和自己的内容有关。
删减内容排查下,如果内容过多,可以多分一些任务试试,减少每个任务的输出量。
参考样例26http://www.c-lodop.com/demolist/PrintSample26.html
如果样例也很慢,那就可能和电脑有关,清理电脑垃圾缓存,清理内存,清理浏览器缓存,重置浏览器试试。

再测试下样例4http://www.c-lodop.com/demolist/PrintSample4.html
这个是纯文本,如果这个样例也很慢,那么就应该和电脑有关了。

如果样例4的纯文本也很慢,再测试下样例7http://www.c-lodop.com/demolist/PrintSample7.html
选择虚拟打印机预览试试,排除打印机的影响。

也可能和网络有关,在一个本地样例里输出个add_print_text纯文本试试。
如果本地用虚拟打印机输出一个add_print_text纯文本也很慢,没什么好办法,清理电脑,或排查下电脑设置,还原系统等试试。或重启下电脑试试,关闭其他软件进程试试。
关闭其他软件进程试试,重启电脑后不开其他软件再测试试试。

打印一页预览很慢
先测试下官网样例测试下样例试试http://www.c-lodop.com/demolist/PrintSample3.html
如果样例预览打开很快,说明和打印内容有关。

可以测试下样例3的多个预览,有纯文本的,和超文本的。
如果纯文本预览很快,超文本的那个很慢,也可能和浏览器有关。
先测试下样例效果。

再试试样例2http://www.c-lodop.com/demolist/PrintSample2.html
这预览是超文本的。样例2的预览速度。
如果样例2的超文本也很慢,重置ie浏览器试试,lodop用的是windows底层引擎解析超文本,与ie一致。
如果样例2的超文本很快,自己的页面很慢,排查下自己页面的内容,是哪些内容引起的预览过慢。

两台电脑样式不同
查看lodop内部解析的html信息,见http://www.c-lodop.com/faq/pp8.html
分析差异点,因浏览器版本不同遵循的html标准不同,造成某些标签属性显示有差异,尽量避免使用有差异的属性,可以在ie下不同版本仿真情况下验证差异
和操作系统无关,先用虚拟打印机测试下,如果虚拟打印机两台电脑也有问题,和样式解析不同有关。
如果虚拟打印机两台电脑没问题,可能和打印机,纸张,可打区域影响了样式等有关。

批量打印超文本多少后,显示空白
理论上没有限制,受机器硬件,系统内存等影响,可以多分一些任务试试。
批量打印,分页分任务,在页数和任务之间平衡一下,参考样例26http://www.c-lodop.com/demolist/PrintSample26.html

分多个任务试试,是否是受内存等影响。
出问题的时候,双击桌面上的c-lodop快捷方式,重启一下本机的c-lodop,重启后刷新页面试试。

批量打印超文本多少后,显示空白,重启c-lodop后就正常了
可能是打印的量太大,受浏览器超文本解析等影响。
没有很好的处理方法,或者设置下自动重启试试,在c-lodop启动界面的端口里,右键,可以设置自动重启c-lodop。
这个本来是给c-lodop服务器的,如果重启c-lodop可以解决问题,也可以试试这个。

如何用语句重启c-lodop
参考http://www.c-lodop.com/faq/pp4.html
如在Lodopfuncs.js里用JS语句重启的话,可如下:
if (CLodopIsLocal)
window.location.href="CLodop.protocol:setup";
用最新版。

参考http://www.c-lodop.com/c-lodopsteprec.html
3.0.4.8
增加:安装程序添加CLodop.protocol功能(一种bs页面调用cs程序的功能),便于页面主动启动C-Lodop服务;
只要这个版本之后的都行,但是建议使用最新版。

某客户打印多少中有的显示空白,自己电脑正常(都是虚拟打印机)
页面,图片,js等超文本是否没有加载完全,显示空白或者图片缺失等问题,加延迟试试:
LODOP.SET_PRINT_STYLEA(0,"HtmWaitMilSecs",1000)//设置上一项延迟超文本下载1000毫秒

显示空白的,如果是每次都显示空白,排查下是否和内容有关。

需要在有问题的电脑上排查下。重置客户端ie,升级ie等试试。
并且,出问题的时候,双击桌面上的c-lodop快捷方式,重启一下本机的c-lodop,重启后刷新页面试试。

splwow64.exe报错,偶尔发生,且重启电脑就正常了
错误是splwow64.exe提示的,很可能和操作系统或打印机有关。
发生的问题查看下系统打印服务(Print Spooler)是否是开启的。
如果是开启的,用xps或pdf虚拟打印机测试下。
如果有共享打印机,删除共享打印机试试。

应该是操作系统引起的,系统打印服务(Print Spooler)这个是windows打印服务,这个服务没启动,是否是打印量太大等导致的。
错误是splwow64.exe提示的,也很可能和操作系统或打印机有关。
如果有共享打印机,也删除共享打印机试试。

百度一下print spooler总是自动关闭试试,可能是这个服务自动关闭引起的。

是否是同样的打印机,重装打印机驱动试试。
因为重启电脑后正常了,也可能是系统或电脑问题,也可能是本机运行的其他软件产生的影响,查看下内存等是否正常。

某台打印机不规律的出现空白,预览页数正常,
预览页数正常,再查看下每页是否内容都正常,预览页数中间是否有空白页。
如果预览中间没有空白页,预览是打印的反显,预览正常,打印机不正常,应该和打印机有关,重装打印机驱动等试试。

预览内容都是正常的,那么就和打印机有关了。可能打印机的问题。
或者换成多任务试试,分多次输出,参考http://www.c-lodop.com/demolist/PrintSample26.html

用xps或pdf虚拟打印机测试,测试下虚拟打印机输出的是否正常。
如果虚拟打印机和真实打印机预览都是正常的,那么可以确定和打印机有关,重装打印机驱动试试。

win7以上系统自带xps虚拟打印机,或安装pdf虚拟打印机,打印成文件。

某电脑提示RightMargin参数错误,自己电脑不提示
参考测试下http://www.c-lodop.com/demolist/PrintSample46.html
是否使用的相同lodop或c-lodop版本,参考http://www.c-lodop.com/faq/pp15.html
用其他浏览器测试下。
在客户电脑上用虚拟打印机测试下,如果虚拟的打印机不提示,可能和打印机有关,设置具体的打印项宽高对比试试。

是否使用的相同lodop或c-lodop版本,参考http://www.c-lodop.com/faq/pp15.html
确认使用版本相同,然后用虚拟打印机对比,如果虚拟打印机正常,说明和打印机驱动不支持等有关,换实际宽高试试。