码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-12-10 11:39:11      阅读:335      评论:0      收藏:0      [点我收藏+]

标签:不同   http   lis   输出   情况下   简单   虚拟   代码   也会   

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毫秒

资源访问受限,需要验证后才能访问的资源
由于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 中排版变形
用虚拟打印机验证一下,如果没有问题,就是打印机的问题了,是否打印机缺墨了。

超文本显示不全
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虚拟打印机测试

打印透明图:
打印图片,参考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浏览器里是试验下。能否直接在浏览器里访问到。

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

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

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

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下不同版本仿真情况下验证差异

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

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

标签:不同   http   lis   输出   情况下   简单   虚拟   代码   也会   

原文地址:https://www.cnblogs.com/huaxie/p/10082571.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!