Document Solutions for Word
Features / Links / Hyperlink
In This Topic
    Hyperlink
    In This Topic

    DsWord allows you to add, modify, and delete hyperlinks in a document. In DsWord, hyperlink element is represented by the Hyperlink class. You can add a hyperlink in a document using Add method of the HyperlinkCollection class. It can also be modified using the Hyperlink class properties, and deleted using Delete method of the ContentObject class.

    Hyperlink in a Word document

    Add Hyperlink

    To add a hyperlink in a document:

    1. Access a section in a document where the hyperlink is to be added.
    2. Add a paragraph to the section using Add method of the ParagraphCollection class.
    3. Add a hyperlink to the paragraph using Add method of the HyperlinkCollection class.
      C#
      Copy Code
      var section = doc.Body.Sections.First;
      
      //Add the first paragraph          
      var p = section.GetRange().Paragraphs.Add(
          "Among other things, fields allow to insert hyperlinks into documents." +
          " Following is a hyperlink to a web address. ");
      
      //Add a hyperlink to it
      Hyperlink link1 = p.GetRange().Hyperlinks.Add(new Uri("http://www.google.com"),
                        "", "Click to go to www.google.com.");
      
      //Save the document
      doc.Save("AddHyperlink.docx");
         
    Back to Top

    Modify Hyperlink

    To modify a hyperlink:

    1. Access a hyperlink from the hyperlink collection using Hyperlinks property of the RangeBase class. For example, access the first hyperlink of the collection.
    2. Modify the address for the specified link using Address property of the Hyperlink class.
    3. Modify the text content value for the link using Value property of the Text class.
      C#
      Copy Code
      //Load the existing word document
      doc.Load("AddHyperlink.docx");
      
      //Modify the hyperlink code
      Hyperlink link1 = 
          doc.Body.Sections.First.GetRange().Paragraphs.First.GetRange().Hyperlinks.First;
      link1.Address = new Uri("http://developer.mescius.com");
      link1.GetRange().Texts[0].Value = "Click to visit MESCIUS, Inc. website";
      
      //Save the document
      doc.Save("ModifyHyperlink.docx");
           
    Back to Top

    Delete Hyperlink

    To delete a hyperlink:

    1. Access a hyperlink from the hyperlink collection using Hyperlinks property of the RangeBase class. For example, access the first hyperlink of the collection.
    2. Delete the field using the Delete method of the ContentObject class.
      C#
      Copy Code
      //Load the existing word document
      doc.Load("AddHyperlink.docx");
      
      //Delete hyperlink to bookmark 
      doc.Body.Sections.First.GetRange().Paragraphs.First.GetRange().Hyperlinks.First.Delete();
      
      //Save the document
      doc.Save("DeleteHyperlink.docx");
    Back to Top

    Support for Malformed URI

    To load a document containing malformed URI in DsWord, the URI needs to be rewritten in a valid manner. DsWord provides MalformedUriRewriter property in GcWordDocument class which encapsulates two delegates namely, OnLoadInvalidUriHandler and OnSaveInvalidUriHandler which are called on loading malformed URI event or on saving any URI from the document, respectively.

    The DefaultMalformedUriRewriter class implements the IMalformedUriRewriter interface and provides the default rewriting strategy for handling invalid URIs.

    You can also define any custom URI rewriter implementation which overrides the delegates and rewrites malformed URI as defined in the custom implementation.

    The below template document contains malformed URI and is loaded in DsWord after using MalformedUriRewriter property to handle it. Refer to Report Templates to know more more about templates.

    C#
    Copy Code
    const string templateDocFileName = @"example_malformed_mailto.docx";
            
    public void DemoDefaultRewriter()
    {
        var doc = new GcWordDocument();
    try
    {
        Console.WriteLine("Loading file...");
        doc.Load(templateDocFileName);
    }
    catch (UriFormatException)
    {
        Console.WriteLine("File contains malformed urls and cannot be loaded without handling such urls.");
    }
    
    //apply malformed rewriter(default implementation).
    Console.WriteLine("Apply malformed rewriter (default implementation)...");
    
    doc.MalformedUriRewriter = new DefaultMalformedUriRewriter();
    
    Console.WriteLine("Loading file...");
    doc.Load(templateDocFileName);
    
    var contacts = new[]
        {
          new{ name = "x y",company = "A company", email = @"xy@a_company.com"},
          new{ name = "a b",company = "B company", email = @"ab@b.com"},
          new{ name = "c d",company = "C company", email = @"cd@C_company.com"},
        };
    
        doc.DataTemplate.DataSources.Add("ds", contacts);
    
        Console.WriteLine("Filling template...");
        int i = 1;
        doc.DataTemplate.BatchProcess(() =>
        {
            var fileName = String.Format("gen{0}.docx", i++);
            Console.WriteLine(string.Format("Generated template file {0}", fileName));
            doc.Save(Path.Combine(fileName));
        });
    
    }
    Back to Top

    For more information on how to implement hyperlinks using DsWord, see DsWord sample browser.