微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Aspose生成的doc文件为某些用户将下划线变成空格

如何解决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溢出连接了连续的空格)。我不确定是什么原因造成的。 为了进行测试,我们需要将文件从远程开发环境复制到我们的本地环境中,我相信这是问题的根源,但我不确定。

我已经尝试过的:

  1. 测试人员和我正在为文档提供完全相同的输入。
  2. 测试人员和我保存文件并将其复制粘贴到本地环境的方式略有不同,但是按照我的方式进行操作并没有改变。

我不确定对某些用户有什么帮助,但对于其他用户则无能为力,对于我可以检查的任何建议,无论是关于该主题的文献还是提出的解决方案,都将受到赞赏

解决方法

我检查了该情况,无法重现该问题。下划线会正确显示在输出文档中。这里有一些尝试的方法。

  1. 尝试设置书签文本,而不要移至书签文本并编写文本。
doc.Range.Bookmarks["BOOKMARK"].Text = WriteMeString;
  1. 尝试检查字符串是否正确写入文档中。
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);
}
  1. 比较您自己和测试人员自己生成的文档(我想,您已经这样做了,但以防万一)。文件可能是正确的,但是您和测试人员使用的查看器有所不同。

披露:我在Aspose.Words团队工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。