【发布时间】:2012-05-06 10:19:40
【问题描述】:
我正在使用 XSL 转换将 XML 转换为 PDF。不幸的是,它没有保留 XML 中的空格。例如:
我想转换这个:
Test Line Data : 0xAA
从 XML 到 PDF。它在 XML 中看起来很好,它在 Data 和 : 之间有 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>
我尝试了各种属性修改无济于事。我在这里遗漏了一些明显的东西吗?
【问题讨论】: