2012-06-13 2 views
3

Я пытаюсь создать pdf-файл с помощью XSL-FO с FOP.XSL-FO фиксированная высота стола

Я хочу отобразить стол с фиксированной высотой. Таблица может занимать несколько страниц, и я бы хотел, чтобы она была одинаковой высоты на каждой странице.

Я даже не могу определить фиксированную высоту таблицы на одной странице.

Я попытался установить высоту, минимальную высоту, максимальную высоту на столе и столешнице, но, похоже, ничего не учитывается. Я также пробовал использовать разные процессоры XSL-FO без всякой удачи.

Небольшой образец:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
    <xsl:template match="/"> 
     <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
      <fo:layout-master-set> 
       <fo:simple-page-master master-name="simpleA4" page-height="29.7cm" page-width="21cm" margin-top="1cm" margin-bottom="1cm" margin-left="2cm" margin-right="2cm"> 
        <fo:region-body margin-bottom="20mm"/> 
        <fo:region-after extent="10mm"/> 
       </fo:simple-page-master> 
      </fo:layout-master-set> 
      <fo:page-sequence master-reference="simpleA4"> 
       <fo:flow flow-name="xsl-region-body"> 
        <fo:block> 
         <fo:table table-layout="fixed" width="100%" height="10cm" border-style="solid" border-width="0.02cm"> 
          <fo:table-column column-width="20%"/> 
          <fo:table-column column-width="20%"/> 
          <fo:table-column column-width="60%"/> 
          <fo:table-body> 
           <fo:table-row> 
            <fo:table-cell> 
             <fo:block>Col1</fo:block> 
            </fo:table-cell> 
            <fo:table-cell> 
             <fo:block>Col2</fo:block> 
            </fo:table-cell> 
            <fo:table-cell> 
             <fo:block>Col3</fo:block> 
            </fo:table-cell> 
           </fo:table-row> 
          </fo:table-body> 
         </fo:table> 
        </fo:block> 
       </fo:flow> 
      </fo:page-sequence> 
     </fo:root> 
    </xsl:template> 
</xsl:stylesheet> 
+0

Число рядов варьируется? – mzjn

+0

Да ... И высота каждого из них тоже ... если в них есть линии разломов. – david

ответ

1

В FOP вы должны работать на <fo:table-cell индивидуально, для высоты, размера шрифта и т.д. .... Вам нужно сделать следующее:

  1. Возьмите свои заметки на месте, вы будете предоставлять для таблицы для каждой страницы
  2. Подсчитать количество строк таблицы, которые могут быть установлены в этом пространства
  3. в цикле создать новую таблицу для каждой страницы, обеспечивающего количество строк, каждая страница будет держать
  4. Имейте в виде шляпе заголовок таблицы будет построен только только для первой страницы, и таблицы другие страницы должен быть сконструирован без головного убора