2016-07-22 4 views
2

Я создаю PDF с Apache FOP, и я хотел бы иметь некоторые пунктирные границы на некоторых ячейках. Однако кажется, что фон границы берет свой цвет из самой таблицы, а не ячейки, что довольно странно ИМХО.Пунктирный фон границы на Apache FOP

Это простой пример:

<?xml version="1.0" encoding="UTF-8" ?> 
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xml:lang="en"> 
    <fo:layout-master-set> 
     <fo:simple-page-master master-name="A4-landscape" page-height="210mm" page-width="297mm"> 
      <fo:region-body margin-top="15mm" margin-bottom="15mm" margin-left="15mm" margin-right="15mm" /> 
      <fo:region-before region-name="docHeader"/> 
      <fo:region-after region-name="docFooter" extent="15mm" /> 
     </fo:simple-page-master> 
    </fo:layout-master-set> 
    <fo:page-sequence master-reference="A4-landscape" initial-page-number="1"> 
     <fo:flow flow-name="xsl-region-body"> 
      <fo:block> 
       <fo:table table-layout="fixed" break-after="page" background-color="red"> 
        <fo:table-column column-width="100.0mm" /> 
        <fo:table-body> 
         <fo:table-row height="25.0mm"> 
          <fo:table-cell text-align="center" display-align="center" background-color="blue" border-top="0.35277778mm dotted green" 
              border-bottom="0.35277778mm solid rgb(0,0,0)" 
              border-left="0.35277778mm solid rgb(0,0,0)" 
              border-right="0.35277778mm solid rgb(0,0,0)"> 
           <fo:block-container overflow="hidden"> 
            <fo:block wrap-option="no-wrap">test</fo:block> 
           </fo:block-container> 
          </fo:table-cell> 
         </fo:table-row> 
        </fo:table-body> 
       </fo:table> 
      </fo:block> 
      <fo:block id="endOfDoc"></fo:block> 
     </fo:flow> 
    </fo:page-sequence> 
</fo:root> 

И это результат:

The border background is red and not blue.

У вас есть какие-либо идеи, как установить цвет фона на границе в? Это нормальное поведение?

ответ

4

Да, это нормальное поведение. Ячейка находится внутри границы, и пунктирная граница разделяется между ними. Использование RenderX XEP с углами смягчения, и это становится немного более очевидным в том, что происходит. Посмотрите на это увеличенное изображении угла:

enter image description here

Теперь, вы могли бы попытаться жонглировать вокруг того, что вы делаете, как один из вариантов. Как это:

  <fo:table table-layout="fixed" break-after="page" background-color="red"> 
       <fo:table-column column-width="100.0mm" /> 
       <fo:table-body> 
        <fo:table-row> 
         <fo:table-cell background-color="blue" display-align="center" 
          border-bottom="0.35277778mm solid rgb(0,0,0)" 
          border-left="0.35277778mm solid rgb(0,0,0)" 
          border-right="0.35277778mm solid rgb(0,0,0)"> 
          <fo:block-container height="25.0mm" overflow="hidden" border-top="0.35277778mm dotted green" text-align="center" > 
           <fo:block wrap-option="no-wrap">test</fo:block> 
          </fo:block-container> 
         </fo:table-cell> 
        </fo:table-row> 
       </fo:table-body> 
      </fo:table> 

и вы получите это:

enter image description here