我正在使用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"也有效.
| 归档时间: |
|
| 查看次数: |
11288 次 |
| 最近记录: |