【问题标题】:How to keep formating with XSL-FO (keeping CR-LF characters)?如何使用 XSL-FO 保持格式(保持 CRLF 字符)?
【发布时间】:2011-05-21 16:29:38
【问题描述】:

我正在尝试将一些文本嵌入到使用 XSL-FO/xslt 生成的 PDF 中。我的文本嵌入正确,但换行和回车被删除,所以我的文本文件只是一个巨大的文本块。

我正在使用 unparsed-text() 来获取文本文件的内容。我使用 white-space-collapse="false" 来尝试获取未格式化的文本。

<fo:block font-family="monospace" white-space-collapse="false" wrap-option="no-wrap">
    <xsl:value-of select="unparsed-text($EXTERNAL_DOCUMENT_FILENAME)" disable-output-escaping="yes"/>
</fo:block>

谢谢!

============

编辑

我刚试过这个,我注意到输出没有格式化......

<fo:block font-family="monospace" white-space-collapse="false" wrap-option="wrap">
    <!--<xsl:value-of select="unparsed-text($EXTERNAL_DOCUMENT_FILENAME)" />-->
Hi this is me,
Then this is him,

Then I have set the value.

    OK?
</fo:block>

我期待 LF 和 CR 的文本完全相同,为什么?

【问题讨论】:

    标签: xsl-fo


    【解决方案1】:

    这是我找到的答案:

    <fo:block font-family="monospace" wrap-option="wrap" linefeed-treatment="preserve" white-space-collapse="false" white-space-treatment="preserve">
        <!--<xsl:apply-templates select="*|text()"/>-->
        <xsl:value-of select='n1:text/text()'/>
    </fo:block>
    

    这很好,xsl-fo 正在删除 CR-LF。

    【讨论】:

      【解决方案2】:

      不要使用&lt;xsl:strip-space="yes"/&gt;

      此外,DOE 不是强制性功能,在 XSLT 2.0 中可能仅支持向后兼容功能。尽量避免它。

      尝试一个小文本文件,看看是否获得了 NL 字符作为unparsed-text() 的结果(根本没有 XSL-FO)。如果存在 NL 字符,那么您的问题很可能只是与 XSL-FO 相关而不是 XSLT 问题。如果不存在 NL 字符,则这表明您的 XSLT 处理器的 unparsed-text() 实现中存在错误——因此请联系供应商并提交错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-27
        • 1970-01-01
        相关资源
        最近更新 更多