如何消除EVO HTML to PDF自动生成目录中条目与页码的间隙?
EVO HTML to PDF 9.0:消除目录条目与页码间的分隔线间隙
你当前通过SetItemStyle和SetPageNumberStyle分别给目录条目和页码添加底部边框,虽能显示分隔线,但两者间的间隙无法消除。针对EVO HTML to PDF 9.0版本,可通过以下方案解决:
方案1:统一设置整个目录条目的边框(优先推荐)
如果你的版本支持SetEntryStyle方法,直接给整个一级目录条目容器添加底部边框,就能让分隔线完全连续,避免两个元素分开加边框的间隙问题:
// 给一级目录的整个条目容器添加底部边框 converter.TableOfContentsOptions.SetEntryStyle(1, "border-bottom:1px solid #000000;");
方案2:消除条目与页码的边距及布局间隙
如果无法使用SetEntryStyle,则通过CSS调整条目和页码的边距、布局方式,消除元素间的空白间隙:
// 调整一级目录条目样式:消除边距、设置inline布局、添加边框 converter.TableOfContentsOptions.SetItemStyle(1, "border-bottom:1px solid #000000; margin:0; padding:0; display:inline;"); // 同步调整页码样式,保持与条目一致 converter.TableOfContentsOptions.SetPageNumberStyle(1, "border-bottom:1px solid #000000; margin:0; padding:0; display:inline;");
方案3:通过父容器字体大小消除空白间隙
如果方案2仍有间隙,可通过设置父容器字体大小为0,消除inline元素间的空白字符,再给子元素恢复字体大小:
// 给一级目录条目容器设置font-size:0,消除子元素间的空白间隙 converter.TableOfContentsOptions.SetEntryStyle(1, "font-size:0;"); // 恢复条目字体大小,添加边框并消除边距 converter.TableOfContentsOptions.SetItemStyle(1, "border-bottom:1px solid #000000; margin:0; padding:0; font-size:12px; display:inline;"); // 同步恢复页码字体大小,保持样式一致 converter.TableOfContentsOptions.SetPageNumberStyle(1, "border-bottom:1px solid #000000; margin:0; padding:0; font-size:12px; display:inline;");
原理说明
默认情况下,EVO生成的目录中,条目文本和页码是两个独立的inline-block元素,元素间的空白字符、默认边距会导致间隙。通过上述方法,要么将边框统一应用到父容器,要么消除子元素的布局间隙,就能让分隔线完全连续。
内容的提问来源于stack exchange,提问作者Chris Watermann
相关产品推荐
相关产品推荐

