【问题标题】:Aspose Wordsfor .NET: replace link contents keeping (setting) it's styleAspose Wordsfor .NET:替换链接内容保持(设置)它的风格
【发布时间】:2017-05-12 00:02:30
【问题描述】:

互联网上有很多信息告诉如何使用 Aspose Wordsfor .NET 更改链接内容。此外,关于插入后设置链接样式的信息也足够多。

但我有一个问题:我需要修改现有链接(来自模板)保持(或只是设置)它的视觉样式(带下划线的蓝色文本)。默认情况下,链接更改后(下面的代码)它的样式被破坏了。

foreach (Field field in docTemplate.Range.Fields)
{
    if (field.Type == FieldType.FieldHyperlink)
    {
        var hyperlink = (FieldHyperlink)field;
        if (hyperlink.Result.Equals("<<[model.Id]>>"))
        {
            hyperlink.Address = model.IdUrl;
            hyperlink.Result = model.Id;

        }
    }
}

这种情况有解决方案吗?将不胜感激。

【问题讨论】:

    标签: aspose aspose.words


    【解决方案1】:

    我已经使用 Aspose.Words for .NET 17.4 测试了您的场景,无法注意到超链接样式问题,修改后它保持不变。如果您使用的是旧版本的 Aspose.Words for .NET,请升级到最新版本,希望它能解决问题。

    但是,如果您的问题仍然存在,请分享您的完整代码以及您的输入、输出和预期文档。这将有助于准确理解您的问题。

    我是 Aspose 的开发布道师 Tilal。

    Document doc = new Document("Hyperlink.docx");
    //You may change the color of Hyperlink style, if required.
    //doc.Styles[StyleIdentifier.Hyperlink].Font.Color = Color.Blue;
    //doc.Styles[StyleIdentifier.FollowedHyperlink].Font.Color = Color.Blue;
    
    foreach (Field field in doc.Range.Fields){
        if (field.Type == FieldType.FieldHyperlink){
            FieldHyperlink link = (FieldHyperlink) field;
            if (link.Result.Equals("aspose.com"))
            {
                link.Result = "google";
                link.Target = "www.google.com";
            }
        }
    }
    
    doc.Save("Hyperlink_174.docx");
    

    编辑:如果要修改特定的超链接,请使用以下代码 sn-p。

    Document doc = new Document("E:/Data/Hyperlink.docx");
    DocumentBuilder builder = new DocumentBuilder(doc);
    
    foreach (Field field in doc.Range.Fields)
    {
    if (field.Type == FieldType.FieldHyperlink)
    {
        FieldHyperlink link = (FieldHyperlink)field;
        if (link.Result.Equals("aspose.com"))
        {
            builder.MoveToField(link, false);
            builder.Font.ClearFormatting();
    
            // Specify font formatting for the hyperlink.
            builder.Font.Color = Color.Blue;
            builder.Font.Underline = Underline.Single;
            // Insert the link.
            builder.InsertHyperlink("google", "http://www.google.com", false);
            link.Remove();
        }
    }
    }
    
    doc.Save("UpdatedHyperlink.docx");
    

    【讨论】:

    • 感谢您的回答。我将测试最新版本。目前,看到你的代码,我必须提到一个区别:我只需要更改一个给定的链接,而保持其他链接的样式不变。
    • 我尝过最新版本,是的,它运行良好。但是,许可证限制让我可以使用 16.7 版本,在这种情况下它的行为不正确。因此,解决我的问题的唯一一种方法是定义使用Field field in doc.Range.Fields 代码 sn-p 更改的单个链接的样式。
    • 建议使用最新版本的 Aspose.Words,因为它包含许多改进和修复。但是,我在上面的回复中更新了示例代码以修改特定的超链接。您可以删除现有的超链接并添加具有所需样式的新超链接。
    • 感谢您的帮助。但是您的代码的第二个版本对我来说有一个问题:它在当前字符串的末尾插入了新链接,但旧链接在中间。是“我做了它”,变成了“我它做了”。
    • 要解决这个问题,你可以简单地移动 link.Remove();声明到第二个 IF 块的末尾,即在 builder.InsertHyperlink("google", "google.com", false);陈述。希望这可以帮助。我与 Aspose 一起担任开发人员宣传员。
    猜你喜欢
    • 2017-10-16
    • 2021-07-01
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多