Сохранение пробелов в PDF после преобразования XSL

Я преобразовываю XML в PDF с помощью XSL-преобразования. К сожалению, он не сохраняет пробелы в XML. Например,:

я хочу преобразовать это:

Test Line Data         : 0xAA

в PDF из XML. В 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. Как я уже сказал, к сожалению, пустое пространство не сохраняется, когда мне это нужно. Я попытался вручную добавить & #160; вместо пробелов в 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>

Я пробовал всевозможные модификации атрибутов, но безрезультатно. Я пропустил что-то очевидное здесь?

12
задан Daniel Haley 25 April 2012 в 18:38
поделиться