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>
私はあらゆる種類の属性を変更して無駄にしようとしました。ここで明らかな何かが欠けていますか?