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>
我正在尝试与 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>