Apache FOP 2.0:我可以在图像周围包装文字吗?

时间:2015-10-19 20:38:14

标签: xml apache xslt xsl-fo apache-fop

这是关于Block Image Right and Flow Text Around It?的后续问题。正如在那里所回答的那样,使用Apache FOP 1.1无法在图像周围包装文本。

几个月前,V2.0发布了。根据{{​​3}},浮点数有部分支持

由于我是XSLT / FOP的新手(并且不知道如何解释那里报告的限制),我想在图片周围包装文本是否适用于2.0。 (如果有人能提供使用Apache FOP 2.0生成的demo-pdf,那将会很棒)

1 个答案:

答案 0 :(得分:1)

fo:float适用于FOP 2.0,因为它们将其列为FOP 2.0的主要新功能之一。您将不得不尝试使用您的内容来查看这些限制是否会导致图像周围出现不需要的文字。由于FOP 2.0不支持浮动的clear属性,如果在页面的同一水平区域内有太多浮动,则可能会有重叠的图像。

自2002年以来,我一直在使用Antenna House Formatter,因为它支持更多方式 功能比早期版本的FOP。如果FOP 2.0中浮动的部分支持不能满足您的需求,您可以支付更好的具有完全浮动支持的工具。

http://xmlgraphics.apache.org/fop/fo.html#floats

  

Floats(fo:float)支持一些限制:

     
      
  • 忽略“清除”fo:float属性;只使用float属性(左或右)

  •   
  • 不处理Y中浮点的重叠(即使在X方向上没有重叠的情况下)

  •   
  • 延伸到身体区域之外的浮子没有得到妥善处理,并会溢出区域边缘

  •   
  • 如果浮动延伸到身体区域的底部并且页面中有脚注,浮动可能会与脚注区域重叠

  •   除非表格的开头和结尾发生在浮动的开始和结束之间,否则不支持
  • 表格旁边的浮动

  •   

如果您修改了文件会更有用,但您可以使用图像修改示例文件,以查看fo:float的工作原理。我稍微修改了这个文件“fop-2.0 \ examples \ fo \ basic \ alignment.fo”:

<fo:float float="left">
<fo:block>
<fo:instream-foreign-object vertical-align="top">
<svg:svg width="25" height="25">
  <svg:rect x="0" y="0" width="25" height="25" style="fill:none;stroke:#000000"/>
  <svg:line x1="12.5" y1="3" x2="12.5" y2="22" style="stroke:black;stroke-width:1.5"/>
  <svg:path d="M5 17l7.5 8l7.5 -8z" style="fill:black"/>
  <svg:path d="M5 8l7.5 -8l7.5 8z" style="fill:black"/>
</svg:svg>
</fo:instream-foreign-object>
</fo:block>
</fo:float>