Добавление индексной страницы в PDF, созданный с помощью Apache FOP

Я написал приложение с использованием Apache FOP, которое генерирует PDF-файлы со многими несколькими главами. Есть ли способ узнать, какая глава на какой странице. На самом деле, мне нужно создать индекс в начале, который сообщает, какая глава появляется на какой странице.


person Code4Fun    schedule 18.04.2013    source источник


Ответы (1)


Вы можете просто указать идентификатор элемента, для которого вам нужно знать номер страницы, а затем сослаться на него с помощью <fo:page-number-citation ref-id="id"/>.

Пример:

  1. Поместите идентификатор с автоматически сгенерированным идентификатором на каждый блок, содержащий название главы:

    <xsl:for-each select="chapter">
        <fo:block id="{generate-id(.)}">
            <xsl:value-of select="@title"/>
        </fo:block>
    </xsl:for-each>
    
  2. Затем укажите этот идентификатор, который вы дали блоку при циклическом просмотре одних и тех же элементов ввода в начале, где находится ваш индекс:

    <xsl:for-each select="chapter">
        <fo:block id="{generate-id(.)}">
            <fo:page-number-citation ref-id="{generate-id(.)}"/>
        </fo:block>
    </xsl:for-each>
    

На самом деле не имеет значения, генерируется ли ваш индекс (который здесь больше похож на оглавление) до фактического содержимого или нет, поскольку идентификаторы вычисляются синтаксическим анализатором XSL, а FOP разрешает эти ссылки после макета страницы (и таким образом, номера страниц) был определен.

person bwa-    schedule 17.07.2013