将fop表向右移动

时间:2012-09-12 15:37:06

标签: xml pdf xsl-fo apache-fop

我通过混合FOPxsl文件来实现xml,以获取PDF文件。

但我似乎无法正确地将桌子向右移动 我操纵了与attributes相关的以下FOP table

  1. start-indent:但是表格的内容比...更多 将start-indent的值移动两次会破坏整体布局
  2. margin-left:此属性在表格上的效果与start-indent
  3. 相同

    还有其他方法吗?

2 个答案:

答案 0 :(得分:3)

如果您在start-indent="20mm"元素上指定fo:table,在start-indent="0mm"上指定fo:table-body(以及fo:table-header和{{1如果使用的话)。例如:

fo:table-footer

start-indent是一个继承的属性。重置它使其不适用于<fo:table table-layout="fixed" width="60mm" border-style="solid" start-indent="20mm"> <fo:table-column column-width="40%"/> <fo:table-column column-width="60%"/> <fo:table-body start-indent="0mm" > <fo:table-row> <fo:table-cell border-style="solid"> <fo:block>Col1</fo:block> </fo:table-cell> <fo:table-cell border-style="solid"> <fo:block>Col2</fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table> 的子区域。

我无法使用margin-left(非继承属性)。这可能是一个FOP错误(它适用于XEP)。

另请参阅Xmlgraphics-fop wiki上的Interpreting Indent Inheritance in XSL-FO文章 (特别是“带表格的更多例子”部分)。

答案 1 :(得分:1)

如果上述解决方案不起作用,还有另一种方法。它只是一个空第一列的表。所以它看起来像一张右移的桌子。

<fo:block wrap-option="no-wrap">
    <fo:table border-collapse="collapse" width="100%">
        <fo:table-column column-width="proportional-column-width(60)" />
        <fo:table-column column-width="proportional-column-width(20)" />
        <fo:table-column column-width="proportional-column-width(20)" />
        <fo:table-header />
        <fo:table-body>
            <fo:table-row>
                <fo:table-cell />
                <fo:table-cell>
                    <fo:block>John</fo:block>
                </fo:table-cell>
                <fo:table-cell>
                    <fo:block>Doe</fo:block>
                </fo:table-cell>
            </fo:table-row>
            <fo:table-row>
                <fo:table-cell />
                <fo:table-cell>
                    <fo:block>Peter</fo:block>
                </fo:table-cell>
                <fo:table-cell>
                    <fo:block>Parker</fo:block>
                </fo:table-cell>
            </fo:table-row>
        </fo:table-body>
    </fo:table>
</fo:block>
  • 表的宽度为100%,第一列为空。
  • 列的宽度为百分比。
  • 显然不允许使用列宽的百分比,而是使用比例列宽。
  • 在此示例中,没有标题名称,但您可以添加除第一列以外的名称。
  • 如果需要边框,则应在逻辑上除第一个边框外完成。