1

我正在处理 InDesign 使用的 IDML 文件。我在插入特殊指令时遇到问题。我需要使用 IDML 文件嵌入 RightIndentTab。相同的 unicode 是 U+0008。当我尝试添加它时,它会引发错误,因为 XML 规范不支持此 unicode。

我对其进行了更多研究,IDML 有一个可以插入的特殊处理指令,现在看起来问题是当我添加它时,它会在 RightIndent 符号之前引入一个换行符。在调试时我发现内容元素看起来像

             <Content>
                <?ACE 8?>9731396</Content>

它是一个 XElement,当我在其上调用 ToString() 时,我看到了 \r\n。我也尝试过使用 XmlWriter。

我想要的是一个看起来像的 XElement 对象

             <Content><?ACE 8?>9731396</Content>

先谢谢了!

4

1 回答 1

1

我在使用 .NET 向 IDML 添加处理指令时遇到了完全相同的问题。即使关闭了重要的空白,我也得到了 InDesign 将其视为文本的一部分的换行符。

我找到的唯一解决方案是将文件保存为 XML,然后将其作为文本文档打开并使用正则表达式替换>\r\n<?><?. 它丑陋而笨拙,但它确实有效 - 我手头没有正则表达式,但你应该能够很快弄清楚。

不过,将 unicode 字符添加到 XML 中,我从来没有遇到过任何问题。我会使用&#x0008;并将 XmlWriter 编码设置为使用 unicode。有关示例,请参见此处: http: //bytes.com/topic/net/answers/176665-how-write-unicode-using-xmlwriter建议:

XmlTextWriter myWriter = new XmlTextWriter( fileStream,
new System.Text.UnicodeEncoding( false, false) );
于 2012-11-16T16:59:58.350 回答