2010-10-11 2 views
5

Я конвертирую файлы HTML в формат PDF, используя The Flying Saucer Project. Это документы, содержащие повторяющиеся данные - помещения и их адреса, назовем их элементами. В конце документа мне нужно создать индекс. Каждая запись индекса должна иметь номер страницы, относящийся к странице, на которой был добавлен элемент. Количество элементов, которые могут помещаться на одной странице, будет различаться.Как создать TOC или индекс, используя проект Flying Saucer?

Как создать индекс документа? Или как можно получить уведомление, когда библиотека добавляет определенный тип элемента HTML в документ PDF?

ответ

1

Я нашел возможный ответ. Вы должны начать играть с класса org.xhtmlrenderer.render.BlockBox. Метод public void layout(LayoutContext c, int contentStart) используется для правильного размещения любого элемента HTML в документе PDF. Этот метод несколько раз повторяется через элемент. После последней итерации задан действительный номер страницы.

Если пометить элемент, который вы хотите индексировать, с помощью, например, с использованием атрибута класса, то вы можете получить номер страницы, используя следующий код:

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> 
Смежные вопросы