我使用飞碟项目将 HTML 文件转换为 PDF 格式。这是包含重复信息的文档 - 场所及其地址,我们称它们为元素。在文档的末尾,我需要创建一个索引。每个索引条目都应该有一个页码,指的是添加元素的页面。一页可以容纳的元素数量会有所不同。
如何创建文档索引?或者,当库向 PDF 文档添加某种类型的 HTML 元素时,如何获得通知?
我使用飞碟项目将 HTML 文件转换为 PDF 格式。这是包含重复信息的文档 - 场所及其地址,我们称它们为元素。在文档的末尾,我需要创建一个索引。每个索引条目都应该有一个页码,指的是添加元素的页面。一页可以容纳的元素数量会有所不同。
如何创建文档索引?或者,当库向 PDF 文档添加某种类型的 HTML 元素时,如何获得通知?
尝试这个:
在 CSS 中
ol.toc a::after { content: leader('.') target-counter(attr(href), page);}
在 HTML 中
<h1>Table of Contents</h1>
<ol class='toc'>
<li><a href=\"#chapter1\">Loomings</a></li>
<li><a href=\"#chapter2\">The Carpet-Bag</a></li>
<li><a href=\"#chapter3\">The Spouter-Inn</a></li>
</ol>
<div id="chapter1">Loomings</div>
我找到了可能的答案。你必须开始org.xhtmlrenderer.render.BlockBox
上课。一种方法public void layout(LayoutContext c, int contentStart)
用于在 PDF 文档中正确放置任何 HTML 元素。此方法迭代一个元素几次。在最后一次迭代之后,设置了一个有效的页码。
如果您标记要索引的元素,例如使用类属性,则可以使用以下代码获取页码:
String cssClass = getElement().getAttribute("class");
if(!cssClass.equals("index")) {
int pageNumber = c.getRootLayer().getPages().size();
/* ... */
}