LODOP超文本简短问答和相关内容

html样式
查看lodop内部解析的html信息,见http://www.c-lodop.com/faq/pp8.html
分析差异点,因浏览器版本不同遵循的html标准不同,造成某些标签属性显示有差异,尽量避免使用有差异的属性,可以在ie下不同版本仿真情况下验证差异
排查样式,尽量使用使用各浏览器无歧义的通用的 html css js,不支持的样式可尝试用其他样式代替。

可尝试把ADD_PRINT_HTM 换成 ADD_PRINT_HTML(图形模式)试试,ADD_PRINT_HTML不如ADD_PRINT_HTM清晰,适合高精度的打印机,两者各有优势。

1.加载css样式,参考样例10 http://www.c-lodop.com/demolist/PrintSample10.html
2.css样式等尽量使用pt等绝对单位,不使用px等相对单位,避免分辨率的影响
3.系统和浏览器不要设置缩放,例如 控制板面-显示里设置缩放。
4.查看lodop内部解析的html信息,见http://www.c-lodop.com/faq/pp8.html
因浏览器版本不同遵循的html标准不同,造成某些标签属性显示有差异,尽量避免使用有差异的属性。
5.使用各浏览器无歧义的通用的 html css js,
Lodop是基于本机ie引擎进行解析渲染的,不要用本机ie不支持的html css js ,重置ie浏览器试试。
6.可尝试把ADD_PRINT_HTM 换成 ADD_PRINT_HTML(图形模式)试试。
7.用xps或pdf虚拟打印机测试一下,和真实打印机对比。
8.尽量使用最新版Lodop和c-lodop。最新版下载地址 http://www.c-lodop.com/download.html
9.是否是浏览器缓存问题,重置ie浏览器试试,清楚缓存。
10.页面,图片,js等超文本是否没有加载完全,显示空白或者图片缺失等问题,加延迟试试:
LODOP.SET_PRINT_STYLEA(0,"HtmWaitMilSecs",1000)//设置上一项延迟超文本下载1000毫秒
是否没有加载完全,给该超文本打印项加延迟试试:
LODOP.SET_PRINT_STYLEA(0,"HtmWaitMilSecs",1000)//设置上一项延迟超文本下载1000毫秒

超文本打印项自动分页
超文本超过设置的打印项高度就会自动分页,可通过调整超文本打印项的高度,控制当前页面输出的多少内容。(打印项高度可在打印设计界面可视化调整)
设置的打印项高度太小,还没到达纸张下面就自动分页了。

选中打印项,增加打印项高度,然后预览,查看效果。
也就是超文本打印项的第四个参数。
例如ADD_PRINT_HTM(intTop,intLeft,intWidth,intHeight,strHtml)增加超文本项
intHeight就是的打印项高度
可以在打印设计可视化调整,到合适的分页位置。

如果内容超出了纸张,不想分页,可以缩放http://www.c-lodop.com/demolist/PrintSample42.html
设置高度溢出缩放,或整页缩放。

超文本字体
Lodop是基于本机windows底层引擎进行渲染解析的,与ie调用的引擎一致。
在ie里查看下效果,注意css样式的字体设置的时候,用中文名,比如宋体,不要用中文字体的英文别名。

资源访问受限,需要验证后才能访问的资源
由于Lodop借用IE下载引擎,与非IE浏览器之间目前不能传递Session(Cookies),所以需要安全验证的页面不要用URL方式打印,要用页面已经下载好的内容的HTM方式打印,也就是ADD_PRINT_HTM或ADD_PRINT_TABLE等语句
另外URL方式需要二次访问服务器,理论上存在下载失败的可能,所以专业的管理系统尽量不要用URL方式。

打印空白页
建议先用xps或pdf虚拟打印机测试一下。
如果虚拟打印没有空白页,可能是纸张或可打区域的问题。
可用真实打印机预览:
1.查看预览下方状态栏纸张是否是设置的纸张,有的打印机不支持该自定义纸张。
2.查看预览里是否有虚线,虚线是打印机可打区域,超过可打区域到了下一页。
如果虚拟打印机有空白页,可能是有不可见内容等导致的。

多打印一张空白页,打印HTML内容,带上!DOCTYPE htm标签 声明试试。
尽量使用最新版。
1.给传入的整个超文本添加背景色,看输出的空白页中是否有背景色,有说明不可见内容。
2.可在打印设计界面,选中超文本打印项,右键查看里面实际的内容,是否有不可见的内容。

(1)可能有不可视内容 导致打印内容高度超过打印项高度 打印设计里调整下打印项高度。
进入打印设计LODOP.PRINT_DESIGN();,分析一下 超文本是否输出了空白信息 或加入超文本背景色看一下。
空白页,正好超出设置高度一点也会自动分页,从这里入手分析。
(2)打印项上边距加高度超过纸张高度 如ADD_PRINT_HTML(10, 15, "100%", "100%");
百分比是相对纸张的 上边距10 + 高度100% 超出纸张的高度
(3)没初始化,容易造成多页的现象。
(4)设置一下内容的高度,不要紧贴纸张大小输出,有时会接近纸张的无限边界时 有打印空白页 的现象或改用newpage
(5) 打印机可打印区域问题 http://www.c-lodop.com/faq/pp26.html 。参考样例5,可设置以纸张边缘为基点输出,排除打印机可打印区域的影响。

打印不清晰
如果是超文本,把htm中的单位 修改为 pt,不要使用相对单位px,避免分辨率的影响
ADD_PRINT_HTML 换成 ADD_PRINT_HTM,
ADD_PRINT_HTML是图形模式,有些打印机对图形支持不好。
小票针式打印 建议用 ADD_PRINT_TEXT,不用用htm,
纸张高度不定容易引起 htm 中排版变形
用虚拟打印机验证一下,如果没有问题,就是打印机的问题了,是否打印机缺墨了。

如何输出清晰图片 参考http://www.c-lodop.com/faq/pp14.html不要在img标签里缩放。
预览是缩略图,用xps或pdf虚拟打印机直接打印查看下效果,查看下虚拟打印机直接打印生成的文件。

如何输出清晰图片 参考http://www.c-lodop.com/faq/pp14.html
并用xps或pdf虚拟打印机测试
如果用的是ADD_PRINT_HTML ,换成 ADD_PRINT_HTM试试,这种是解析后的超文本,放大也不会模糊。 

超文本显示不全
1.是否没有加载完全,给该超文本打印项加延迟试试:
LODOP.SET_PRINT_STYLEA(0,"HtmWaitMilSecs",1000)//设置上一项延迟超文本下载1000毫秒
2.超文本内容超过纸张高度,会自动分页,查看预览下方状态栏是否是多页。
3.打印预览的虚线是可打区域,参考http://www.lodop.net/faq/pp26.html
这个是打印机的可打区域。该区域外打印不出来。
打印设计,参考http://www.lodop.net/demolist/PrintSample3.html
进入打印设计,可以可视化调整一下,减小打印项高度,超过高度部分会被分到下一页。

输出清晰图片:
如何输出清晰图片 参考http://www.c-lodop.com/faq/pp14.html
并用xps或pdf虚拟打印机测试

用xps或pdf虚拟打印机直接打印查看下效果,查看下虚拟打印机直接打印生成的文件。

按照链接处理的,虚拟打印机打印出来正常,真实打印机有问题
理论上本机虚拟打印没问题的话,说明插件代码没问题,程序可做的努力就的确很少了,毕竟windows下的打印是微软倡导的设备无关系原则,要在打印机和打印驱动程序 系统上排查下,
或者用其他图片处理工具处理成合适尺寸,打印原图试试。

如果lodop的缩略方式效果对该打印机不行,就只能用其他图片处理工具处理成合适尺寸,打印原图试试。

但是虚拟打印机是好的,对该打印机不行,就只能用其他图片处理工具处理成合适尺寸,打印原图试试。没有其他方法了。

打印透明图:
打印图片,参考http://www.lodop.net.cn/demolist/PrintSample8.html
打印透明效果,打印公章 参考 http://www.lodop.net.cn/demolist/PrintSample37.html
和虚拟打印机对比测试,有的打印机不支持透明图打印。

试试把add_print_htm换成add_print_html试试。
如果打印预览等显示是透明图是可以的,尝试上述方式后打印机打出来还是不透明,可能是打印机不支持透明图打印,咨询一下打印机客服。

图片显示叉号问题
(1)查看lodop内部解析的html信息,见http://www.c-lodop.com/faq/pp8.html
查看一下传入的图片路径是否正确,尽量用绝对路径地址,换个图片试试。
(2)显示空白或者图片缺失等问题,加延迟试试:
LODOP.SET_PRINT_STYLEA(0,"HtmWaitMilSecs",1000)//设置上一项延迟超文本下载1000毫秒
(3)权限问题,图片显示叉号 说明服务端拒绝了 可能证书 session等问题,导致没有直接访问该图片的权限,有些需要验证之后才能访问图片。由于Lodop借用IE下载引擎,与非IE浏览器之间目前不能传递Session(cookies)
(4)清空ie缓存 重置ie 后在ie中查看下。IE中的URL最大长度限制为2048字节。超过这个长度会不支持。
(5) 查看服务器端错误日志排查下 。
(6)做个简单的例子验证下,排除其他因素的干扰。Base64输出图片参考样例38。
直接把图片地址放到ie浏览器里是试验下。能否直接在浏览器里访问到。

重装一个新的IE(IE11),然后第一次启动IE11 如果有一个安全性的确认框,确定一下试试。

确认图片地址正确尽量用绝对地址 能在ie下正确显示 测试参考样例8。Css背景图不支持的。

图片显示叉号 说明服务端拒绝了 可能证书 session 地址等问题
清空ie缓存后在ie中查看下,查看服务器端错误日志排查下 。
由于Lodop借用IE下载引擎,与非IE浏览器之间目前不能传递Session(cookies)
IE中的URL最大长度限制为2048字节。超过这个长度会不支持。

图片显示空白 可以加延迟试下
LODOP.ADD_PRINT_IMAGE(30, 150, 400, 400, "F:\\IMG00849706.jpg");
LODOP.SET_PRINT_STYLEA(0,"HtmWaitMilSecs",1000)//设置上面打印项延迟
参考技术手册SET_PRINT_STYLEA函数,设置延迟HtmWaitMilSecs属性。

Base64图片参考样例38

打印图片,参考http://www.c-lodop.com/demolist/PrintSample8.html
Lodop是基于本机windows底层引擎进行渲染解析的,与ie调用的引擎一致,直接把图片地址放到ie浏览器里是试验下。能否直接在浏览器里访问到。

ie访问不了图片
在该台电脑的ie里访问下该图片地址

Lodop是基于本机windows底层引擎进行渲染解析的,与ie调用的引擎一致。
在ie里查看下效果

版本低也应该是能访问图片地址的,是否是ie浏览器存在问题,重置ie,或百度下ie不能访问图片的原因,修复下ie,或重装ie。

需要能在ie里直接访问的地址。
重置ie试试,必须让ie能访问到该图片。

图片显示空白
显示空白或者图片缺失等问题,加延迟试试:
LODOP.SET_PRINT_STYLEA(0,"HtmWaitMilSecs",1000)//设置上一项延迟超文本下载1000毫秒

图片显示不全
1.显示空白或者图片缺失,图片部分缺失等问题,加延迟试试:
LODOP.SET_PRINT_STYLEA(0,"HtmWaitMilSecs",1000)//设置上一项延迟超文本下载1000毫秒
2.在预览里查看下效果,是否有可打区域的影响
打印预览的虚线是可打区域,参考http://www.lodop.net/faq/pp26.html
这个是打印机的可打区域。该区域外打印不出来。
3.或换用base64输出图片试试,Base64输出图片参考样例38http://www.c-lodop.com/demolist/PrintSample38.html

批量打图片
图片批量打印,src 方式输出,需要通过浏览器引擎解析,存在不释放缓存的现象,可尝试base64码输出,参考样例38http://www.c-lodop.com/demolist/PrintSample38.html
base64位码输出直接通过本地lodop程序解析,无需经过浏览器引擎解析

批量打印,分页分任务,在页数和任务之间平衡一下,参考样例26http://www.c-lodop.com/demolist/PrintSample26.html
是否是大量打印超文本造成的,Lodop大量打印超文本,调用ie引擎解析,ie缓存过多不释放,可能造成一些影响,如果大量打印,可以试试用纯文本方式。

批量打印中随机图片显示空白
1.显示空白或者图片缺失等问题,加延迟试试:
LODOP.SET_PRINT_STYLEA(0,"HtmWaitMilSecs",1000)//设置上一项延迟超文本下载1000毫秒
2.尽量不要批量打印太大的图片,浏览器引擎不释放,可能会导致图片空白。
参考样例38,换用base64方式试试。

Lodop不打印css背景图
background:url()这是背景图,http协议会按异步方式下载背景图,所以很容易等不到下载完毕就开始打印了,故lodop不打印背景图。至于普通图片参考样例37 http://www.c-lodop.com/demolist/PrintSample37.html
用普通图片的输出方式。

css背景图,参考http://www.c-lodop.com/faq/pp14.html
通常情况下打印图片都支持,因超文本背景图片是异步资源,所以默认是不打印的。
实现超文本包含背景图片效果可以有3种解决方法:
1.把ADD_PRINT_HTM 改为 ADD_PRINT_HTML ,图形模式输出;
2.使用透明图片效果实现,参考样例37;
3.用lodop函数语句输出背景图,参考样例9。
Lodop背景图ADD_PRINT_SETUP_BKIMG,参考http://www.c-lodop.com/demolist/PrintSample9.html

清除lodop缓存样式
1.不同任务之间不会互相影响,每个任务都要加初始化语句PRINT_INIT或PRINT_INITA;
2.如果是输出超文本是旧的内容,可清理一下浏览器缓存,刷新页面。
3.加载css样式,参考样例10 http://www.c-lodop.com/demolist/PrintSample10.html
如果有些样式不需要,可以在传入的时候去掉
4.如果是指针打印维护对客户端调整,该客户端调整后的样式,参考http://www.c-lodop.com/faq/pp9.html

个别电脑不同
1.如果是超文本,本机调用的ie引擎版本不同,超文本的一些样式可能有差异,排查样式。
查看lodop内部解析的html信息,见http://www.c-lodop.com/lodop/faq/p1.html
分析差异点,因浏览器版本不同遵循的html标准不同,造成某些标签属性显示有差异,尽量避免使用有差异的属性,可以在ie下不同版本仿真情况下验证差异
2.css样式等尽量使用pt等绝对单位,不使用px等相对单位,避免分辨率的影响
3.系统和浏览器不要设置缩放,例如 控制板面-显示里设置缩放。
4.排查是否有打印维护的本地配置的影响,该打印维护的缓存的配置文件只针对该客户端有效,参考http://www.c-lodop.com/faq/pp9.html
5.打印机纸张问题:纸张大小是否一致,在预览下方状态栏查看是否是设置的纸张,有的打印机不支持自定义纸张。
6.可打印区域是否影响到了输出内容的大小,参考http://www.c-lodop.com/faq/pp26.html
7.用xps或pdf虚拟打印机测试一下,如果虚拟打印机没有问题,可排除插件代码问题,理论上虚拟打印没问题的话,程序可做的努力就的确很少了,毕竟windows下的打印是微软倡导的设备无关系原则,要在打印机和打印驱动程序上找原因,可尝试重装驱动,或咨询一下打印机服务商。

如果虚拟打印机正常,可能和打印机有关,预览查看是否和打印机可打区域有关,参考“可打区域”边缘与打印机本身有关,表现在预览里是虚线,可打区域的影响
http://www.c-lodop.com/faq/pp26.html
如果虚拟打印机也不正常,可能和超文本解析有关,查看lodop内部解析的html信息,见http://www.c-lodop.com/faq/pp8.html
分析差异点,因浏览器版本不同遵循的html标准不同,造成某些标签属性显示有差异,尽量避免使用有差异的属性,可以在ie下不同版本仿真情况下验证差异

不同电脑IE版本可能不同,超文本的解析效果可能不同。
查看是哪些样式不同,排查下是哪些样式的影响。

Lodop是基于本机windows底层引擎进行渲染解析的,与ie调用的引擎一致。
调用的的解析版本不同,会导致样式可能有差异,需要在有问题的电脑上排查样式。

不同用户的解析效果可能不同,样式尽量兼容多一点版本的ie浏览器,尽量避免使用有差异的属性,可以在ie下不同版本仿真情况下验证差异。

预览超文本样式宽高和页面不同
查看lodop内部解析的html信息,见http://www.c-lodop.com/faq/pp8.html
拖动浏览器,查看样式是否和容器有关。
页面上的样式相对于浏览器,打印预览的是相对于纸张。
如果宽高和容器有关,受纸张影响,样式可能会有变化。

打印表格
超文本输出表格:ADD_PRINT_HTML、ADD_PRINT_HTM、ADD_PRINT_TABLE、ADD_PRINT_TBURL
打印表格带页头页尾 参考样例15 http://www.c-lodop.com/demolist/PrintSample15.html
分页打印综合表格 参考样例43 http://www.c-lodop.com/demolist/PrintSample43.html
超文本表格传入css样式,参考样例10 http://www.c-lodop.com/demolist/PrintSample10.html
纯文本+线输出表格:ADD_PRINT_TEXT、ADD_PRINT_LINE
画线输出表格,参考http://www.c-lodop.com/demolist/PrintSampleA1.html

超文本排查
查看lodop内部解析的html信息,见http://www.c-lodop.com/faq/pp8.html
排查调试内部的html信息

查看lodop内部解析的html信息,见http://www.c-lodop.com/faq/pp8.html
查看一下传入的样式,排查一下样式问题。
把从打印设计,选中超文本打印项,右键属性里拷出来的超文本代码发过来这边排查测试一下试试。
建议先自己可以通过删减内容,或做简单例子的方式,找到出问题的html或样式。

查看lodop内部解析的html信息,见http://www.c-lodop.com/faq/pp8.html
建议先自己可以通过删减内容,或做简单例子的方式,找到出问题的html或样式,定位到哪些html或样式引起的。

查看lodop内部解析的html信息,见http://www.c-lodop.com/faq/pp8.html
建议先自己可以通过删减内容,或做简单例子的方式,找到出问题的html或样式,定位到哪些html或样式引起的。
也可以把从打印设计,选中超文本打印项,右键属性里拷出来的超文本代码发过来这边有空时排查测试一下。

 与超文本有关的本博客的博文:Lodop打印控件传入css样式、看是否传入正确样式Lodop打印控件不打印css背景图怎么办Lodop打印如何隐藏table某一列Lodop打印控件设置表格次页偏移Lodop打印控件 超文本自动分页Lodop打印控件 打印透明图问题

posted @ 2018-12-10 09:44  花谢悦神  阅读(1576)  评论(0编辑  收藏  举报