2010-10-11 63 views
5

我使用The Flying Saucer Project將HTML文件轉換爲PDF格式。這是包含重複信息的文件 - 處所和地址,我們稱之爲元素。在文檔的末尾,我需要創建一個索引。每個索引條目應該有一個頁碼,指向添加元素的頁面。可以放在一個頁面上的元素數量會有所不同。如何使用Flying Saucer項目創建TOC或索引?

如何創建文檔索引?或者,當圖書館向PDF文檔添加某種類型的HTML元素時,我該如何得到通知?

回答

1

我找到了可能的答案。你必須開始玩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(); 
    /* ... */ 
} 
4

試試這個:

在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>