我正在尝试使用 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,所以它会打印得很漂亮(我可以禁用它,但它会在一行上,这不是人类可读的。
像这样格式化时它不起作用:
<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 时,它会在文本之间产生较大的水平间距。
你有什么想法如何使这项工作?非常感谢。
最佳答案
我同意@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>
关于java - XSL :FO inline and pretty print,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47593194/