как я могу переопределить поле, заданное «region-body» для таблицы в XSL: FO?

#xml #xslt #margin #xsl-fo #apache-fop

#xml #xslt #поле #xsl-fo #apache-fop

Вопрос:

Я редактирую документ XSL, который управляет форматом вывода при преобразовании XML в PDF. В макете страницы существует существующее левое поле с использованием тега «fo: region-body». Макет устанавливается в качестве основной ссылки в элементе «fo: page-sequence», который содержит поток и блок для моей таблицы. Я бы хотел, чтобы моя таблица переопределяла поле. Я попытался использовать отрицательное поле для таблицы (я пробовал это как для «таблицы», так и для «тела таблицы», но только содержимое таблицы сдвинулось влево. Граница таблицы осталась на том же месте.

Может ли кто-нибудь указать мне правильное направление?

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

1. Вы должны опубликовать короткий пример XSL FO, чтобы другие могли помочь. Тем не менее, вы, вероятно, могли бы поместить структуру в блок / блок-контейнер и установить отступы / поля для этого, а не для таблицы.

Ответ №1:

Вероятно, вам нужно окружить структуру и установить для нее поле. Вот пример:

     <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
    font-family="Helvetica" font-size="11pt">
    <fo:layout-master-set>
        <fo:simple-page-master margin-top=".5in" margin-left="1in" margin-bottom="1in"
            margin-right="1in" page-width="8.5in" page-height="11in" master-name="first">
            <fo:region-body margin-top="0pt" margin-bottom="0pt"/>
        </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="first">
        <fo:flow flow-name="xsl-region-body">
            <fo:block>Table not in left margin space</fo:block>
            <fo:block>
                <fo:table width="100%">
                    <fo:table-column/>
                    <fo:table-body>
                        <fo:table-row>
                            <fo:table-cell border-top="1pt solid black" border-bottom="1pt solid red" border-left="1pt solid green" border-right="1pt solid orange" text-align="center">
                                <fo:block> Center Me </fo:block>
                            </fo:table-cell>
                        </fo:table-row>
                    </fo:table-body>
                </fo:table>
            </fo:block>
            <fo:block>Table in left margin space</fo:block>
            <fo:block margin-left="-0.75in">
                <fo:table width="100%">
                    <fo:table-column/>
                    <fo:table-body>
                        <fo:table-row>
                            <fo:table-cell border-top="1pt solid black" border-bottom="1pt solid red" border-left="1pt solid green" border-right="1pt solid orange" text-align="center">
                                <fo:block> Center Me </fo:block>
                            </fo:table-cell>
                        </fo:table-row>
                    </fo:table-body>
                </fo:table>
            </fo:block>
        </fo:flow>
    </fo:page-sequence>
</fo:root>
 

Это приводит к следующему:

введите описание изображения здесь