如何解决Aspose生成的doc文件为某些用户将下划线变成空格
我正在更新用于创建备忘录的旧代码。编写该代码是为了使用可以手动写入的template.doc文件中的书签。问题来自这段代码。
foreach (Addressee infoAddressee in ConfigManager.GetConfig().Addressees)
{
if (infoAddressee.Abbreviation == Memo.AddresseeAbbr.toupper() &&
infoAddressee.NeedsThisLine)
{
WriteMeString = "FOO BARR ________";
break;
}
}
if (WriteMeString != "")
{
builder.MovetoBookmark("BOOKMARK");
builder.Write(WriteMeString);
}
}
这对我有用,但是两个测试过这段代码的人的“ FOO BARR _______”行显示为“ FOO BARR” 七个下划线用空格代替(间距在单词doc上存在,但是Stack溢出连接了连续的空格)。我不确定是什么原因造成的。 为了进行测试,我们需要将文件从远程开发环境复制到我们的本地环境中,我相信这是问题的根源,但我不确定。
我已经尝试过的:
- 测试人员和我正在为文档提供完全相同的输入。
- 测试人员和我保存文件并将其复制粘贴到本地环境的方式略有不同,但是按照我的方式进行操作并没有改变。
我不确定对某些用户有什么帮助,但对于其他用户则无能为力,对于我可以检查的任何建议,无论是关于该主题的文献还是提出的解决方案,都将受到赞赏
解决方法
我检查了该情况,无法重现该问题。下划线会正确显示在输出文档中。这里有一些尝试的方法。
- 尝试设置书签文本,而不要移至书签文本并编写文本。
doc.Range.Bookmarks["BOOKMARK"].Text = WriteMeString;
- 尝试检查字符串是否正确写入文档中。
builder.MoveToBookmark("BOOKMARK");
builder.Write("FOO BARR ________");
Assert.AreEqual("FOO BARR ________",builder.Document.Range.Bookmarks["BOOKMARK"].Text);
using (MemoryStream ms = new MemoryStream())
{
builder.Document.Save(ms,SaveFormat.Doc);
ms.Position = 0;
Document tempDoc = new Document(ms);
Assert.AreEqual("FOO BARR ________",tempDoc.Range.Bookmarks["BOOKMARK"].Text);
}
- 比较您自己和测试人员自己生成的文档(我想,您已经这样做了,但以防万一)。文件可能是正确的,但是您和测试人员使用的查看器有所不同。
披露:我在Aspose.Words团队工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。