XSL:FO 内联和漂亮的打印

XSL:FO inline and pretty print

我正在尝试与 xsl:fo 一起创建 pdf。我被内联元素问题困住了。我需要用一个粗体字写一行。例如:

I need this to be bold.

我可以用这段代码做到这一点:

<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)。

还有其他属性会影响白色-space 处理。以下哪项与您看到的相符?

<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>