在XSL转换后保留PDF中的空格

dan*_*sgo 12 xml xsl-fo

我正在使用XSL转换将XML转换为PDF.不幸的是,它没有保留XML中的空格.例如:

我想转换这个:

Test Line Data         : 0xAA
Run Code Online (Sandbox Code Playgroud)

从XML到PDF.它在XML中看起来很好,它在Data和:)之间有9个空格,但在它显示的PDF中

Test Line Data : 0xAA
Run Code Online (Sandbox Code Playgroud)

这是我目前正在做的事情.在将数据写入XML之后,我将执行以下操作:

XPathDocument xPathDocDiag = new XPathDocument(this.FileNameDiagXml);
XslCompiledTransform xslTransDiag = new XslCompiledTransform();
XmlTextWriter xmlWriterDiag = new XmlTextWriter(outputFO, System.Text.Encoding.UTF8);
xslTransDiag.Transform(xPathDocDiag, null, xmlWriterDiag);
xmlWriterDiag.Flush();
xmlWriterDiag.Close();
Run Code Online (Sandbox Code Playgroud)

然后启动Apache FOP将FO转换为PDF.就像我说的那样,不幸的是,当我需要它时,白色空间不会被保留.我已经尝试手动添加XML(查找和替换)中的空格,它在转换后起作用,但是众所周知,文字&不能是XML,因此选项不在.我尝试过使用XmlReader,然后使用

<xsl:preserve-space elements="*"/>
Run Code Online (Sandbox Code Playgroud)

但同样,这也不起作用(没有错误或任何东西,只是不起作用).
XSL的部分看起来像这样:

<xsl:when test="Data != ''">
                <fo:table-cell text-align="left">
                    <fo:block />
                </fo:table-cell>
                <fo:table-cell text-align="left" number-columns-spanned="7">
                    <fo:block font-family="Courier New, Courier, monospace" font-size="9pt"><xsl:value-of select="Data" /></fo:block>
                </fo:table-cell>
            </xsl:when>
Run Code Online (Sandbox Code Playgroud)

我尝试了各种属性修改无济于事.我错过了一些明显的东西吗?

Dan*_*ley 13

将属性添加white-space="pre"fo:block要保留空白区域的任何内容中.

例:

<fo:block white-space="pre">Test Line Data         : 0xAA</fo:block>
Run Code Online (Sandbox Code Playgroud)

该属性white-space-treatment="preserve"也应该有效,但是当我在FOP中尝试它时,它没有.

该属性white-space-collapse="false"也有效.