请问如何避免操作docx文件后,格式,版面变化呢?

我使用的是 Aspose.Words 22.4.0.

我对附件中的 file.docx 只是进行了文字的颜色替换, 但是得到的结果 aspoose.docx 行间距等发生了明显的变化。

新建文件夹 (2).zip (73.5 KB)

主要区别如下图 :

image.png (43.7 KB)

image.png (51.6 KB)

请问是否是bug?? 是否可以解决这个问题呢? 谢谢。

您好@xjdata,

我尝试使用DocumentVisitor.VisitRun使用下面给出的代码更改文本的颜色。 我没有观察到行距有任何变化。

public static void Main(string[] args)
{
    Document doc = new Document("file.docx");

    RunVisitor runVisitor = new RunVisitor();
    doc.Accept(runVisitor);

    doc.Save("file.color.docx");
}

public class RunVisitor : DocumentVisitor
{
    public override VisitorAction VisitRun(Run run)
    {
        run.Font.Color = Color.Blue;

        return VisitorAction.Continue;
    }
}

files.zip (63.8 KB)

我发现, 使用 DocumentVisitor 特性来做文字替换, 会出现 中文匹配不全的情况。

比如 “武汉长江大桥” , 如果我只希望对 “长江” 替换为 “黄河” , 并将 黄河的字体颜色 换成 红色。 会出现匹配不到 长江的情况。

请问如何能解决我的问题呢? 谢谢。

@xjdata, 您可以尝试以下代码示例并检查它是否有帮助? in.docx 中的“长江”一词被拆分为 2 次运行,但 Aspose.Words 可以找到它,将文本替换为“黄河”并将颜色更改为红色。

Document doc = new Document("in.docx");
FindReplaceOptions options = new FindReplaceOptions();
options.ApplyFont.Color = Color.Red;

doc.Range.Replace("长江", "黄河", options);

doc.Save("out.docx");

in.docx (12.0 KB)
out.docx (9.6 KB)

谢谢你的回复, 但是这个就又回到本帖子的 最初阶段了。 使用 Range.Replace 方法,会造成 行间距等中文格式的变化。 有点郁闷。

@xjdata, 您能否分享一个示例代码和一个演示该问题的示例 Word 文档? 如果有错误,我会记录它并修复它。