WRAP选项在超过

时间:2016-05-16 10:01:00

标签: xml xslt xsl-fo apache-fop

我正在使用Apache FOP生成PDF。当且仅当超过表格单元长度时,我想包装文本。我尝试使用wrap-option =“wrap”。它在找到空间本身时将它分开。它不会查看表格单元格的长度是否超出。

<fo:table width="33%" table-layout="fixed" position="fixed" margin-top="-21.5%" margin-left="68.5%"> 
  <fo:table-body> 
    <fo:table-row> 
      <fo:table-cell padding-bottom="3px" text-align="left" width="5cm" margin-left="1.2cm"> 
        <fo:block-container> 
          <fo:block wrap-option="wrap"> 
            <fo:inline font-family="TimesNewRoman" font-weight="bold"> 
              <xsl:value-of select="test/test1"/> 
            </fo:inline> 
          </fo:block> 
        </fo:block-container> 
      </fo:table-cell> 
    </fo:table-row> 
  </fo:table-body> 
</fo:table>

例如:我有一个如下字符串:

 TEST 1 TEST 2 TEST 3

当我使用上面的XSLT生成PDF时,它显示如下

 TEST
 1
 TEST
 2
 TEST
 3

尽管如此,它有更多的宽度,它是分裂和显示。

我想要展示的是

TEST 1 TEST ..if length exceeds the length
2 TEST 3

enter image description here

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

start-indent="0pt"上添加fo:table-body

<fo:table width="33%" table-layout="fixed"
      position="fixed" margin-top="-21.5%" margin-left="68.5%">
  <fo:table-body start-indent="0pt">
    <fo:table-row>
      <fo:table-cell padding-bottom="3px" text-align="left" width="5cm">
        <fo:block>
          <fo:inline font-family="TimesNewRoman" font-weight="bold"
         > TEST 1 TEST 2 TEST 3 </fo:inline>
        </fo:block>
      </fo:table-cell>
    </fo:table-row>
  </fo:table-body>
</fo:table>

fo:table/@margin-left设置了在为每个start-indent的内容计算start-indent特征时使用的继承fo:table-cell值。有关详细信息,请参阅https://www.w3.org/TR/xsl11/#refine-margin-space-indent

此外,fo:table-cell/@margin-leftfo:block-containerfo:block/@wrap-option未添加任何内容。