我正在尝试使用xsl:fo来创建pdf。我坚持使用内联元素的问题。我需要用一个粗体字来写行。例如:
我需要这个加粗。
我可以用这段代码做到这一点:
<fo:block>
<fo:inline>I need </fo:inline><fo:inline font-weight="bold">this</fo:inline><fo:inline> to be bold</fo:inline>
</fo:block>
但是因为我编写了xml programmaticaly,它会被打印出来(我可能会禁用它,但它会在一行上,而且不是人类可读的。
格式化后不起作用:
<fo:block>
<fo:inline>I need </fo:inline>
<fo:inline font-weight="bold">this</fo:inline>
<fo:inline> to be bold</fo:inline>
</fo:block>
当生成pdf时,它会在文本之间产生大的水平空间。
你知道怎么做这项工作吗?非常感谢。
答案 0 :(得分:3)
我同意@Andremonly。
检查您是否在任何祖先FO上设置white-space-collapse="false"
(请参阅https://www.w3.org/TR/xsl11/#white-space-collapse)。
还有其他属性会影响空白处理。您认为哪一个匹配?
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="page"
margin="0.1in" page-height="4in" page-width="3in">
<fo:region-body region-name="body" margin="6pt"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="page">
<fo:flow flow-name="body">
<fo:block>
<fo:inline>I need </fo:inline>
<fo:inline font-weight="bold">this</fo:inline>
<fo:inline> to be bold</fo:inline>
</fo:block>
<fo:block white-space-collapse="false">
<fo:inline>I need </fo:inline>
<fo:inline font-weight="bold">this</fo:inline>
<fo:inline> to be bold</fo:inline>
</fo:block>
<fo:block white-space-treatment="preserve">
<fo:inline>I need </fo:inline>
<fo:inline font-weight="bold">this</fo:inline>
<fo:inline> to be bold</fo:inline>
</fo:block>
<fo:block white-space-treatment="preserve" white-space-collapse="false">
<fo:inline>I need </fo:inline>
<fo:inline font-weight="bold">this</fo:inline>
<fo:inline> to be bold</fo:inline>
</fo:block>
<fo:block linefeed-treatment="preserve">
<fo:inline>I need </fo:inline>
<fo:inline font-weight="bold">this</fo:inline>
<fo:inline> to be bold</fo:inline>
</fo:block>
<fo:block white-space-collapse="false" linefeed-treatment="preserve">
<fo:inline>I need </fo:inline>
<fo:inline font-weight="bold">this</fo:inline>
<fo:inline> to be bold</fo:inline>
</fo:block>
<fo:block white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline>I need </fo:inline>
<fo:inline font-weight="bold">this</fo:inline>
<fo:inline> to be bold</fo:inline>
</fo:block>
<fo:block white-space-treatment="preserve" white-space-collapse="false" linefeed-treatment="preserve">
<fo:inline>I need </fo:inline>
<fo:inline font-weight="bold">this</fo:inline>
<fo:inline> to be bold</fo:inline>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>