zoukankan      html  css  js  c++  java
  • 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打印控件 打印透明图问题

  • 相关阅读:
    一步步学习微软InfoPath2010和SP2010--第一章节--介绍InfoPath2010(5)--XML 101
    一步步学习微软InfoPath2010和SP2010--第一章节--介绍InfoPath2010(4)--InfoPath2010后台视图快速浏览
    一步步学习微软InfoPath2010和SP2010--第一章节--介绍InfoPath2010(3)--InfoPath如何工作
    一步步学习微软InfoPath2010和SP2010--第一章节--介绍InfoPath2010(2)--InfoPath2010的新功能
    SharePoint2010中部署WSP解决方案包
    一步步学习微软InfoPath2010和SP2010--第一章节--介绍InfoPath2010(1)--伴随SP2010使用InfoPath2010的好处
    SharePoint一般公式样例
    宋浩《概率论与数理统计》笔记---3.1.3、二维连续型的联合分布和边缘分布
    宋浩《概率论与数理统计》笔记---3.1.2、二维离散型的联合分布和边缘分布
    宋浩《概率论与数理统计》笔记---3.1.1、二维随机变量及其分布函数
  • 原文地址:https://www.cnblogs.com/huaxie/p/10082571.html
Copyright © 2011-2022 走看看