XSL для соблюдения отступов

#apache #xsl-fo #apache-fop

#apache #xsl-fo #apache-fop

Вопрос:

На всех, кроме страницы 1, моя таблица заполняется не так, как я ей говорю. У меня действительно есть "first" и a "Rest" , определенные как

 <!-- layout for the first page -->
        <fo:simple-page-master master-name="first"
              page-height="11in"
              page-width="8.5in"
              margin-top="1cm"
              margin-bottom="2cm"
              margin-left="2.5cm"
              margin-right="2.5cm">
          <fo:region-body margin-top="3cm"/>
          <fo:region-before extent="2cm"/>
          <fo:region-after extent=".1cm"/>
        </fo:simple-page-master>

        <!-- layout for the other pages -->
        <fo:simple-page-master master-name="rest"
                      page-height="11in"
                      page-width="8.5in"
                      margin-top="1cm"
                      margin-bottom="2cm"
                      margin-left="2.5cm"
                      margin-right="2.5cm">
          <fo:region-body margin-top="3cm"/>
          <fo:region-before extent="2cm"/>
          <fo:region-after extent=".1cm"/>
        </fo:simple-page-master>
  

Но я не понимаю, как это повлияет на мое заполнение.

 <fo:block>
            <!-- table start -->
            <fo:table table-layout="fixed" width="100%" border-collapse="separate" padding-after="1em">
              <fo:table-column column-width="15mm"/>
              <fo:table-column column-width="46mm"/>
              <fo:table-column column-width="28mm"/>
              <fo:table-column column-width="22mm"/>
              <fo:table-column column-width="19mm"/>
              <fo:table-column column-width="30mm"/>

              <fo:table-header>
                <fo:table-cell>
                  <fo:block font-weight="bold" border-width="0.5mm" border-style="solid" >
                    <fo:inline padding-left="1mm">Model</fo:inline>
                  </fo:block>
                </fo:table-cell>
                <fo:table-cell>
                  <fo:block font-weight="bold" border-width="0.5mm" border-style="solid" border-left="none">
                    <fo:inline padding-left="2mm">Description</fo:inline>
                  </fo:block>
                </fo:table-cell>
                <fo:table-cell>
                  <fo:block font-weight="bold" border-width="0.5mm" border-style="solid" padding-left=".1mm" border-left="none">
                    <fo:inline padding-left="2mm">Material</fo:inline>
                  </fo:block>
                </fo:table-cell>
  

Обратите внимание на padding-left атрибут. Почему это не соблюдается на всех страницах, кроме первой?

Обновить
Я заметил, что это происходит только на «страницах переполнения». Когда в моей таблице будет достаточно данных для переноса на другую страницу. Если это новая таблица, проблема исчезнет.

Ответ №1:

Вероятно, это ограничение реализации процессора XSL FO, APACHE FOP. Я свяжусь с ними.

Комментарии:

1. @csvan — Извините, я не знаю. Я больше не работаю над этим проектом.

2. Спасибо, мне удалось решить эту проблему, установив вместо этого заполнение в узле table-cell.