2015-06-12 4 views
0

Я пробовал следующие предложения, и никто не работал, мой <fo:block> продолжает разделяться между двумя внутренними блоками.XSL keep-together and page-break-inside не работает

<fo:block keep-with-next="always" page-break-inside="avoid"> 
    <fo:block keep-together="always"> 
    Block # 1, a header 
    </fo:block> 

    <fo:block keep-together="always"> 
    Block # 2, a bunch of text 
    </fo:block> 
</fo:block> 

Как я могу держать два внутренних блоков вместе на этой странице? Я использую FO.NET, если у вас есть ограничения.

+0

У меня нет FO.NET, но RenderX XEP и Apache FOP протестированы и не имеют этой проблемы. Оба хранили весь ваш блок вместе на странице без какого-либо разделения. –

+1

* в случае наличия ограничений *: FO.NET основана на версии 0.20.4 FOP. Который древний. Согласно этой странице, он поддерживает только 'keep-together' для строк таблицы, http://www.cs.helsinki.fi/group/xmltools/formatters/fop/fop-0.20.5/build/site/compliance.html # fo-property-keep-together – mzjn

+0

Благодарим за помощь. К сожалению, мы застреваем с помощью FONet. Поэтому я просто буду переводить свои блоки в таблицу вместо этого, что не должно быть проблемой. Благодаря! – DLeh

ответ

0

Я думаю, вам следует связаться с представителями FO.NET. Тестирование этого примера с помощью RenderX XEP и Apache FOP дает выход на 3 страницы. В 10.36 в целом текст вашего блока подходит на странице, в 10.37 в этом нет. В обоих продуктах все содержимое вашего блока перемещается на следующую страницу. Обратите внимание, что только требуемый тег - это разрыв страницы внутри = «избегать», ничего другого.

 <fo:flow flow-name="xsl-region-body"> 
      <fo:block>Space</fo:block> 
      <fo:block space-before="10.36in">I Generate One Page</fo:block> 
      <fo:block page-break-inside="avoid"> 
       <fo:block > 
        Block # 1, a header 
       </fo:block> 
       <fo:block> 
        Block # 2, a bunch of text 
       </fo:block> 
      </fo:block> 
      <fo:block break-before="page">I Generate Two Pages</fo:block> 
      <fo:block space-before="10.37in">Space</fo:block> 
      <fo:block page-break-inside="avoid"> 
       <fo:block > 
        Block # 1, a header 
       </fo:block> 
       <fo:block> 
        Block # 2, a bunch of text 
       </fo:block> 
      </fo:block> 
     </fo:flow> 

Глядя на веб-сайте FO.NET, он не обновлялся с 2009 года я не; т вижу ничего об их (отсутствие) поддержки насовсем, но приходит от другого поставщика XSL FO, сохраняет довольно Трудно сделать правильно в коде.