3

我正在从 xml 和 xsl-fo 和 Apache FOP 创建一个 pdf 文件,我需要在一行上写文本。我的意思是类似于手动编译的表格,您可以在其中写姓名,姓氏等。类似这样的内容: Name: ______John_________
但在名称下也有行。我试图使用 fo:leader。一切都在一个表格单元格中。使用此代码

 <fo:table-cell column-number="3" font-size="10pt" number-columns-spanned="4">
   <fo:block space-before="2mm" wrap-option="no-wrap" overflow="visible" margin-top="2mm" margin-left="3mm">
     <xsl:value-of select="$element/value"/>
   </fo:block>
   <fo:block wrap-option="no-wrap" overflow="visible" margin-left="2mm" margin-top="0mm">
     <fo:leader leader-length="130mm"
                leader-pattern="rule"
                rule-style="solid"
                rule-thickness="0.1mm"
                color="black"></fo:leader>
   </fo:block>
 </fo:table-cell>

我得到一条线,但它不是在单词下面,如果我为前导块设置margin-top="-3mm" ,什么都没有改变。我怎样才能得到这样的结果?还有其他方法吗?

非常感谢

4

2 回答 2

4

我用另一种方式得到了结果:fo:block border-bottom="solid" border-bottom-width="0.2mm"成功了。需要有下划线的值(本例中为 John)为<fo:leader />空。</fo:block>

<fo:table-row>
    <fo:table-cell font-size="10pt">
        <fo:block>
            <xsl:text>Nome:</xsl:text>
        </fo:block>
    </fo:table-cell>
    <fo:table-cell font-size="10pt">
        <fo:block border-bottom="solid" border-bottom-width="0.2mm">
            <xsl:text>John</xsl:text>
            <fo:leader />
        </fo:block>
    </fo:table-cell>
</fo:table-row>

在此处输入图像描述

于 2013-02-15T08:17:50.020 回答
2

这有点像黑客,但你可以使用fo:list-block......

XSL-FO

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:layout-master-set>
        <fo:simple-page-master master-name="my-page" page-width="8.5in" page-height="11in">
            <fo:region-body margin="1in" margin-top="1.5in" margin-bottom="1.5in"/>
        </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="my-page">
        <fo:flow flow-name="xsl-region-body">
            <fo:table width="50%">
                <fo:table-body>
                    <fo:table-row>
                        <fo:table-cell border-style="solid" padding="4px">
                            <fo:list-block provisional-distance-between-starts="15%">
                                <fo:list-item>
                                    <fo:list-item-label end-indent="label-end()">
                                        <fo:block>Name:</fo:block>
                                    </fo:list-item-label>
                                    <fo:list-item-body start-indent="body-start()">
                                        <fo:block text-align="center" border-bottom-style="solid">John</fo:block>
                                    </fo:list-item-body>
                                </fo:list-item>
                            </fo:list-block>
                        </fo:table-cell>
                    </fo:table-row>
                </fo:table-body>
            </fo:table>
        </fo:flow>
    </fo:page-sequence>
</fo:root>

PDF 输出(使用 FOP 1.0)

在此处输入图像描述

您可能需要使用provisional-distance-between-starts来查看对您的数据有用的方法。

于 2013-02-14T23:47:26.303 回答