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团队工作。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...