Я конвертирую XML в PDF с использованием преобразования XSL. К сожалению, он не сохраняет пробелы из XML. Например:Сохранение пробелов в PDF после преобразования XSL
Я хочу, чтобы преобразовать это:
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. Как я уже сказал, к сожалению, пустое пространство не сохранилось, когда мне это нужно. Я попытался вручную добавить вместо пробелов в 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-treatment = "preserve" тоже не работало. white-space-collapse = «false» был единственным. Благодарю. – dangerisgo
@ dangerisgo - Рад, что вы его работали. Какую версию FOP вы используете? (Просто любопытно.) –
Я использую версию 0.20.5 – dangerisgo