我需要在同一行上左右对齐文本。这应该是可能的,但我似乎找不到办法。我正在使用 Apache FOP 将 xml 转换为 pdf。
有人可以帮我解决这个问题吗?
优雅不是一个明确的要求,但这应该符合要求:
<fo:block text-align-last="justify">
LEFT TEXT
<fo:leader leader-pattern="space" />
RIGHT TEXT
</fo:block>
这通过对齐块中的最后一行文本来工作,以便文本从该行的左侧开始并在右侧结束。通常在目录页面上使用的前导符会拉伸以填充左右文本之间的空间。通常它被用作<fo:leader leader-pattern="dots" />
,这会产生一段时期,但在这种情况下,它只是提供了一个空间的鸿沟。
这可以解决问题:
<fo:table>
<fo:table-column />
<fo:table-column />
<fo:table-body>
<fo:table-row>
<fo:table-cell>
<fo:block>LEFT TEXT</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="right">RIGHT TEXT</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
<fo:inline-container vertical-align="top" inline-progression-dimension="49.9%">
<fo:block>left content</fo:block>
</fo:inline-container>
<fo:inline-container vertical-align="top" inline-progression-dimension="49.9%">
<fo:block>right-content</fo:block>
</fo:inline-container>
经验证可使用 FOP 2.0
我现在没有时间对此进行测试,但请查看http://www.w3.org/TR/xsl/#fo_float
一个向右浮动另一个向左浮动 - 如果我想做你所描述的事情,我会试一试
你也可以用一张桌子
除非右对齐和左对齐,否则您的意思是合理的...
我创建了两个块,并在第二个块上设置了这个属性:
margin-top="-4mm"
或者你的字体大小和边距底部是什么(只是看起来它们在同一行)
这是可能的,我不确定确切的输出是什么,但您是否尝试过:
<fo:block-container>
<fo:block text-align="left">text</fo:block>
<fo:block text-align="right">text</fo:block>
</fo:block-container >
我有一段时间没有做过 XSLFO,但我当然可以推荐 Stylus Studio 用于 XSL-FO 开发(以及一般的 XML),应用内调试和预览让我在按时完成最后期限时节省了时间。您也可以使 Stylus 与 Apache FOP 处理器一起工作。
PS:如果我在家里也正确设置了 Apache FOP 等,我会仔细检查。