之前的博文:LODOP打印table不切行TableRowThickNess、 ,中是没有合并行等的表格,通过设置增大分页粒度,会找附近的表格线,然后根据表格线分页,避免了切行。
如果有比较复杂的表格,可能有大的合并行后面跟着很多小行的情况,这种情况下找表格线的时候,是否会切割大的合并行,这里测试了一下,是会切割,再增大分页粒度也没有效果。
纸张下方上面找到的不合并行的小行的表格线处分页,后面的不合并行不会切行,但是合并行会切行。

如果是非常复杂的表格,而且页数很多,每页到纸张附近的行也很复杂,很可能会切掉合并行等,这种表格建议用手动分页,自己处理下数据,设置成合适页面的宽高等效果。

如本文测试的例子,没有设置纸张,用的默认的A4纸张,A4纸张的宽为210mm,高为297mm。测试中第一个表格的高度为240mm,前面加个了纯文本,这个表格超文本的顶边距top距离纸张上边缘的距离为50mm,50mm+240mm=290mm,是小于297mm纸张高度的。所以该表格可以在该纸张中显示完全,如果需要更多数据,可手动分页,再加打印项,拆分表格,手动分页时可以每页的内容都控制在纸张内。
测试中的第二个表格,表格高度设置的330mm,在加上顶边距50mm,超出了纸张,超文本超过纸张就会自动分页,分页的时候把表格的行也切掉了。

第二个表格设置分页粒度,但是由于有合并行和不合并行的原因,分页粒度找到的表格线是后面的不合并行的,因此合并行还是被切了。
最后一个方法设置整页缩放,表格和文本都被缩放到了一页里,不会分页了,但是文字等明显被压缩了,出现了变形。

非常复杂的表格可以拆分表格,根据纸张大小进行宽高调整,每页显示合适的大小,进行手动分页。

测试代码:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WEB打印控件LODOP</title>
<script language="javascript" src="LodopFuncs.js"></script>
</head>
<body>
<div id="div1"><!--适合纸张高度的表格-->
<table border=1 cellSpacing=0 cellPadding=0 style="border-collapse:collapse;width:200mm;height:240mm">
<tr>
<td rowspan="2" style="width:100mm;height:">分析差异点,因浏览器版本不同遵循的html标准不同</td>
<td style="width:50mm;">分析差异点</td>
<td style="width:50mm;">排查样式</td>
<td style="width:50mm;">在ie下不同版本仿真情况下验证差异</td>
</tr>
<tr>
<td style="width:100mm;">分析差异点,因浏览器版本不同遵循的html标准不同</td>
<td style="width:50mm;">排查样式</td>
<td style="width:50mm;">在ie下不同版本仿真情况下验证差异</td>
</tr>
<tr>
<td rowspan="4" style="width:100mm;background-color:#b0f3c0;">分析差异点,因浏览器版本不同遵循的html标准不同</td>
<td style="width:50mm;">分析差异点</td>
<td style="width:50mm;">排查样式</td>
<td style="width:50mm;">在ie下不同版本仿真情况下验证差异</td>
</tr>
<tr>
<td style="width:100mm;">分析差异点,因浏览器版本不同遵循的html标准不同</td>
<td style="width:50mm;">排查样式</td>
<td style="width:50mm;">在ie下不同版本仿真情况下验证差异</td>
</tr>
<tr>
<td style="width:50mm;">分析差异点</td>
<td style="width:50mm;">排查样式</td>
<td style="width:50mm;">在ie下不同版本仿真情况下验证差异</td>
</tr>
<tr>
<td style="width:100mm;">分析差异点,因浏览器版本不同遵循的html标准不同</td>
<td style="width:50mm;">排查样式</td>
<td style="width:50mm;">在ie下不同版本仿真情况下验证差异</td>
</tr>
</table>
</div>
<div id="div2"><!--不适合纸张高度的表格-->
<table border=1 cellSpacing=0 cellPadding=0 style="border-collapse:collapse;width:200mm;height:330mm">
。。。。同上。。。省略。。。
</table>
</div>
<a href="javascript:prn1_preview()">适合纸张高度的表格</a><br>
<a href="javascript:prn2_preview()">不适合纸张高度的表格,第二行被切</a><br>
<a href="javascript:prn3_preview()">调整分页粒度,合并行扔被切</a><br>
<a href="javascript:prn4_preview()">整页缩放,内容样式变形</a><br>
<script language="javascript" type="text/javascript">
var LODOP; //声明为全局变量
function prn1_preview() {//适合纸张的表格,可自己控制每页的数据,不会超出纸张。
LODOP=getLodop();
LODOP.PRINT_INITA(0,0,"210mm","297mm","");//打印设计可打区域设置
LODOP.ADD_PRINT_TEXT(0,0,"100%","50mm","文本等");
LODOP.SET_PRINT_STYLEA(0,"FontSize",34);
LODOP.SET_PRINT_STYLEA(0,"Alignment",2);
LODOP.ADD_PRINT_HTM("50mm",0,"100%","100%",document.getElementById("div1").innerHTML);
LODOP.PRINT_DESIGN();
//LODOP.PREVIEW();
};
function prn2_preview() {//不适合纸张的表格,第二行被切开
LODOP=getLodop();
LODOP.PRINT_INITA(0,0,"210mm","297mm","");//打印设计可打区域设置
LODOP.ADD_PRINT_TEXT(0,0,"100%","50mm","文本等");
LODOP.SET_PRINT_STYLEA(0,"FontSize",34);
LODOP.SET_PRINT_STYLEA(0,"Alignment",2);
LODOP.ADD_PRINT_HTM("50mm",0,"100%","100%",document.getElementById("div2").innerHTML);
// LODOP.SET_PRINT_STYLEA(0,"TableRowThickNess",100);
//LODOP.PRINT_DESIGN();
LODOP.PREVIEW();
};
function prn3_preview() {//调整分页粒度,分页粒度范围找表线,合并行的扔被切
LODOP=getLodop();
LODOP.PRINT_INITA(0,0,"210mm","297mm","");//打印设计可打区域设置
LODOP.ADD_PRINT_TEXT(0,0,"100%","50mm","文本等");
LODOP.SET_PRINT_STYLEA(0,"FontSize",34);
LODOP.SET_PRINT_STYLEA(0,"Alignment",2);
LODOP.ADD_PRINT_HTM("50mm",0,"100%","100%",document.getElementById("div2").innerHTML);
LODOP.SET_PRINT_STYLEA(0,"TableRowThickNess",1000);
//LODOP.PRINT_DESIGN();
LODOP.PREVIEW();
};
function prn4_preview() {//整页缩放,样式内容有变形
LODOP=getLodop();
LODOP.PRINT_INITA(0,0,"210mm","297mm","");//打印设计可打区域设置
LODOP.ADD_PRINT_TEXT(0,0,"100%","50mm","文本等");
LODOP.ADD_PRINT_TEXT(0,0,"100%","50mm","新加文本2");
LODOP.ADD_PRINT_HTM("50mm",0,"100%","100%",document.getElementById("div2").innerHTML);
LODOP.SET_PRINT_MODE("PRINT_PAGE_PERCENT","Full-Page");
//LODOP.PRINT_DESIGN();
LODOP.PREVIEW();
};
</script>
</body>

图示:

为了区分那个大的合并行,这里给 那个单元格加了背景色,可以看出虚拟打印机后的单元格切分情况。

预览界面右键-显示标尺。
非常复杂的表格可以拆分表格,根据纸张大小进行宽高调整,每页显示合适的大小,进行手动分页。
手动分页可根据纸张设置表格样式。

LODOP粒度TableRowThickNess合并行测试的更多相关文章

  1. Linux命令行测试网速speedtest.net

    Linux命令行测试网速speedtest.net 当发现上网速度变慢时,人们通常会先首先测试自己的电脑到网络服务提供商(通常被称为"最后一公里")的网络连接速度.在可用于测试宽带 ...

  2. I.MX6 Android CAN 命令行测试

    /********************************************************************* * I.MX6 Android CAN 命令行测试 * 说 ...

  3. el-table合并行并自定义某一列或几列

    在el-table的官方组件中并没有看到具体的合并行或者列及自定义表格内容,于是就自己写了一个效果如下所示. 这种对左侧内容要求比较高,要求行合并,并要自定义一些内容.下面说一下具体方法及代码写法. ...

  4. [转]使用Linux命令行测试网速

    装speedtest-cli speedtest-cli是一个用Python编写的轻量级Linux命令行工具,在Python2.4至3.4版本下均可运行.它基于Speedtest.net的基础架构来测 ...

  5. 使用Linux命令行测试网速

    安装speedtest speedtest是一个用Python编写的轻量级Linux命令行工具,在Python2.4至3.4版本下均可运行.它基于Speedtest.net的基础架构来测量网络的上/下 ...

  6. 使用Linux命令行测试网速-----speedtest-cli

    https://github.com/sivel/speedtest-cli 当发现上网速度变慢时,人们通常会先首先测试自己的电脑到网络服务提供商(通常被称为“最后一公里”)的网络连接速度.在可用于测 ...

  7. gtest命令行测试案例

    使用gtest编写的测试案例通常本身就是一个可执行文件,因此运行起来非常方便.同时,gtest也为我们提供了一系列的运行参数(环境变量.命令行参数或代码里指定),使得我们可以对案例的执行进行一些有效的 ...

  8. freemarker实现单元格动态合并-行合并

    项目需求:项目中有个需求,需要将一些数据库中的数据根据需求导出,生成一个word,研究了一些技术,其中包括POI.freemaker,对比了一下实现过程及技术难度没最终使用了freemaker; 原始 ...

  9. vue表格合并行的一个实例

        一.element控件实现 在平常的应用中,需要用到合并单元格的操作,在Excel中,这种操作很好实现,但在实际项目中,常常需要借助element控件来实现. 下面是element中的一个实例 ...

随机推荐

  1. CF827D Best Edge Weight 题解

    题意: 给定一个点数为 n,边数为 m,权值不超过 \(10^9\) 的带权连通图,没有自环与重边. 现在要求对于每一条边求出,这条边的边权最大为多少时,它还能出现在所有可能的最小生成树上,如果对于任 ...

  2. Oracle plsql存储过程中out模式参数的用法

    在plsql中,存储过程中的out模式的参数可以用来返回数据,相当于函数的返回值.下面是一个小例子. 沿用上一篇的emp表结构和数据. 存储过程如下: create or replace proced ...

  3. react添加富文本

    import {Editor} from 'react-draft-wysiwyg'import 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css'i ...

  4. [hdu contest 2019-07-29] Azshara's deep sea 计算几何 动态规划 区间dp 凸包 graham扫描法

    今天hdu的比赛的第一题,凸包+区间dp. 给出n个点m个圆,n<400,m<100,要求找出凸包然后给凸包上的点连线,连线的两个点不能(在凸包上)相邻,连线不能与圆相交或相切,连线不能相 ...

  5. segfault at 0 ip sp error 14

    error 14从未见过.谁能帮我解答什么情况才会出现这个,而且怎么定位崩溃函数地址? 备忘: segfault at 引起故障的地址ip 指令的内存地址sp 堆栈指针地址, 及栈顶指针err is ...

  6. Pytest权威教程-更改标准(Python)测试发现

    目录 更改标准(Python)测试发现 在测试收集过程中忽略路径 测试期间收集的测试取消 保留从命令行指定的重复路径 更改目录递归 更改命名约定 将cmdline参数解释为Python包 找出收集的东 ...

  7. Rancher2.3.2部署Kubenetes Dashboard

    首先进入到集群中的System命令空间,因为kubenetes dashboard是给整个集群使用的,并不是默认的Default命名空间使用的 Default命名空间,是默认的命名空间,也是在部署其他 ...

  8. Debian9安装QT5.12.3

    打开虚拟机,打开火狐浏览器,输入网址下载QT5.12(linux版本,约13.G) download.qt.io/archive/qt/5.12/5.12.0/ 文件默认下载在Downloads文件夹 ...

  9. unity热更新AssetBundle框架设计_框架篇

    目录 第1 章 : AssetBundle框架整体设计 课时1:实战项目开发AB技术问题分析 10:53 课时2:实战项目开发AB技术解决方案 10:24 课时3:AB框架整体设计方案详解 09:45 ...

  10. MySQL两地三中心方案初步设计【转】

    整体内容会按照如下的方式来进行设计: 首先说下方案的背景,我参考了一些资料(参见附件). 方案背景 随着互联网业务快速发展,多IDC的业务支撑能力和要求也逐步提升,行业内的“两地三中心”方案较为流行. ...