Как создать оглавление или индекс с помощью проекта Flying Saucer? - PullRequest
5 голосов
/ 11 октября 2010

Я конвертирую HTML-файлы в формат PDF, используя Проект «Летающая тарелка» . Это документы, содержащие повторяющуюся информацию - помещения и их адреса, назовем их элементами. В конце документа мне нужно создать индекс. У каждой записи индекса должен быть номер страницы, ссылающейся на страницу, на которой был добавлен элемент. Количество элементов, которые могут поместиться на одной странице, будет различным.

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

Ответы [ 2 ]

7 голосов
/ 28 января 2015

Попробуйте это:

В 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>
1 голос
/ 11 октября 2010

Я нашел возможный ответ.Вы должны начать играть с 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();
    /* ... */
}
...