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



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

我想转换这个:

Test Line Data         : 0xAA

从 XML 转换为 PDF。 它在XML中看起来不错,它在数据和:之间有9个空格,但在PDF中它显示

Test Line Data : 0xAA

这是我目前所做的。 将数据写入 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();

然后启动Apache FOP将FO转换为PDF。 就像我说的,不幸的是,当我需要它时,空白没有保留。 我尝试在XML中手动添加空格(查找和替换),这在转换后确实有效,但是众所周知,文字和不能在XML中,因此该选项已取消。 我尝试使用XmlReader,然后使用

<xsl:preserve-space elements="*"/>

但同样,这也不起作用(没有错误或任何东西,只是不起作用)。
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>

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

属性white-space="pre"添加到要保留空格的任何fo:block

例:

<fo:block white-space="pre">Test Line Data         : 0xAA</fo:block>

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

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

我找到了答案。 http://groups.yahoo.com/group/XSL-FO/message/4128 当我在 fo:block 中输入 white-space-collapse="false" 时,空格被保留了下来。

您可以在 fo 块标签中使用空格后=5mm。例

<fo:block space-after=5mm>Something</fo-block>
<fo:block>SomethingSomething</fo:block>

第一行将在文本"某物"之后创建 5 毫米的空间。

您可以在空格后添加空格

<fo:block space-after=7mm>Your te</fo-block>

最新更新