我使用The Flying Saucer Project將HTML文件轉換爲PDF格式。這是包含重複信息的文件 - 處所和地址,我們稱之爲元素。在文檔的末尾,我需要創建一個索引。每個索引條目應該有一個頁碼,指向添加元素的頁面。可以放在一個頁面上的元素數量會有所不同。如何使用Flying Saucer項目創建TOC或索引?
如何創建文檔索引?或者,當圖書館向PDF文檔添加某種類型的HTML元素時,我該如何得到通知?
我使用The Flying Saucer Project將HTML文件轉換爲PDF格式。這是包含重複信息的文件 - 處所和地址,我們稱之爲元素。在文檔的末尾,我需要創建一個索引。每個索引條目應該有一個頁碼,指向添加元素的頁面。可以放在一個頁面上的元素數量會有所不同。如何使用Flying Saucer項目創建TOC或索引?
如何創建文檔索引?或者,當圖書館向PDF文檔添加某種類型的HTML元素時,我該如何得到通知?
我找到了可能的答案。你必須開始玩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();
/* ... */
}
試試這個:
在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>