xsl-fo применить радиус к верхним границам

Добрый день
У меня есть XSL-FO

<fo:table table-layout="fixed" border-width="0.2mm"  border-color="#330099" border-style="groove" 
            border-collapse="separate" background-color="white" line-height="16pt" space-before.optimum="10pt" 
            space-after.optimum="6pt" text-align="left" >       
                <fo:table-column column-width="37mm"/> 
                <fo:table-column column-width="37mm"/> 
                <fo:table-column column-width="37mm"/> 
                <fo:table-column column-width="37mm"/> 
                <fo:table-column column-width="37mm"/> 
                <!-- <fo:table-column column-width="38mm"/> --> 
        <fo:table-body>
            <fo:table-row>
                <fo:table-cell border-width="0.01mm" border-color="#330099"  border-style="groove" background-color="lightgrey">
                    <fo:block text-align="left" color="#000000" font-size="8pt" font-weight="bold">Account Number</fo:block>
                </fo:table-cell>
                <fo:table-cell border-width="0.01mm" border-color="#330099"  border-style="groove" background-color="lightgrey">
                    <fo:block text-align="left" color="#000000" font-size="8pt" font-weight="bold">Customer Id</fo:block>
                </fo:table-cell> 
                <fo:table-cell border-width="0.01mm" border-color="#330099"  border-style="groove" background-color="lightgrey">
                    <fo:block text-align="left" color="#000000" font-size="8pt" font-weight="bold">Account Currency</fo:block>
                </fo:table-cell>
                <fo:table-cell border-width="0.01mm" border-color="#330099"  border-style="groove" background-color="lightgrey">
                    <fo:block text-align="right" color="#000000" font-size="8pt" font-weight="bold">Opening Balance</fo:block>
                </fo:table-cell>
                <fo:table-cell border-width="0.01mm" border-color="#330099"  border-style="groove" background-color="lightgrey">
                    <fo:block text-align="right" color="#000000" font-size="8pt" font-weight="bold">Closing Balance</fo:block>
                </fo:table-cell>
            </fo:table-row>

 </fo:table-body>
 </fo:table>


мой вопрос: я хочу применить к этой таблице границы rouding
возможно ли это с помощью border-radius ?
или любой другой метод?


person user1000744    schedule 17.05.2013    source источник
comment
Вы используете ФОП? См. xmlgraphics.apache.org/fop/trunk/ и wiki.apache.org/xmlgraphics-fop/RoundedBorders (не проверено мной).   -  person mzjn    schedule 20.05.2013


Ответы (3)


Вариант 1) Лучше всего: создайте небольшие изображения SVG для каждого угла, затем отформатируйте, используя таблицу внутри таблицы... внешняя таблица имеет маленькие левые/правые столбцы и верхние/нижние строки с большой ячейкой в ​​центре. Поставьте свой стол в большую ячейку в центре. Вы даже можете сделать это, используя всего четыре изображения с круглыми углами и правильное применение границ. Если вам нужна эта структура для переноса таблицы, которая выходит за пределы страницы, то угловые изображения должны быть в верхнем/нижнем колонтитуле в XSL FO.

Вариант 2) Почти так же хорош. Если вы знаете ширину таблицы, просто одну строку сверху и снизу таблицы с закругленными краями и линией между ними, а затем сопоставьте таблицу между ними с соответствующими левыми/правыми границами для обхода. Вы добавляете только одну строку и ячейку (охватывающую все столбцы) в начале/конце таблицы.

Вариант 3) Зависит от вашей ситуации ... если высота и ширина таблиц достаточно постоянны, вы можете просто использовать SVG-изображение с закругленными углами в качестве фонового изображения для таблицы или блока, окружающего таблицу. Вы можете масштабировать его, чтобы он соответствовал ширине и высоте. Этот метод может исказить изгибы углов, и поэтому он будет работать только тогда, когда вы заранее знаете размеры стола (или, по крайней мере, можете приблизительно их определить). Я также использовал этот метод в документе, где высота была переменной, но математически известно ... то есть таблица может иметь 5 строк или 10 строк или что-то еще, но ширина всегда была постоянной ... XSL используется для «подсчета» строк и выбора соответствующего внешнего SVG для фона (например, таблица -bg-row-5.svg ... таблица-bg-row-10.svg).

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

person Kevin Brown    schedule 16.06.2013

Попробуйте пробел-до=5мм пробел-после=5мм

Вы можете использовать space-after=5mm в теге блока fo. Пример

<fo:block space-after=5mm>Something</fo-block>
<fo:block>SomethingSomething</fo:block>

Первая строка создаст пространство 5 мм после текста «Что-то».

person Siva    schedule 30.05.2014

Попробуйте <fo:block space-after=5mm space-before=5mm>to get space both front and end/fo-block>

person Community    schedule 04.06.2014