C#/VB.NET: inserir hiperlinks em documentos do Word

2023-09-27 06:20:23

Um hiperlink em um documento do Word permite que os leitores saltem de seu local para um local diferente no documento, ou para um arquivo ou site diferente, ou para uma nova mensagem de email. Os hiperlinks facilitam e agilizam a navegação dos leitores pelas informações relacionadas. Este artigo demonstra como adicionar hiperlinks a texto ou imagens em C# e VB.NET usando Spire.Doc for .NET.

Instale o Spire.Doc for .NET

Para começar, você precisa adicionar os arquivos DLL incluídos no pacote Spire.Doc for.NET como referências em seu projeto .NET. Os arquivos DLL podem ser baixados deste link ou instalados via NuGet.

PM> Install-Package Spire.Doc

Insira hiperlinks ao adicionar parágrafos ao Word

Spire.Doc oferece o método Paragraph.AppendHyperlink() para adicionar um link da web, um link de e-mail, um link de arquivo ou um link de marcador a um trecho de texto ou imagem dentro de um parágrafo. A seguir estão as etapas detalhadas.

  • Crie um objeto Documento.
  • Adicione uma seção e um parágrafo a ela.
  • Insira um hiperlink baseado em texto usando o método Paragraph.AppendHyerplink(string link, string text, HyperlinkType type).
  • Adicione uma imagem ao parágrafo usando o método Paragraph.AppendPicture().
  • Insira um hiperlink baseado na imagem usando o método Paragraph.AppendHyerplink (string link, Spire.Doc.Fields.DocPicture picture, HyperlinkType type).
  • Salve o documento usando o método Document.SaveToFile().
  • C#
  • VB.NET
using Spire.Doc;
    using Spire.Doc.Documents;
    using System.Drawing;
    
    namespace InsertHyperlinks
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Create a Word document
                Document doc = new Document();
    
                //Add a section
                Section section = doc.AddSection();
    
                //Add a paragraph
                Paragraph paragraph = section.AddParagraph();
                paragraph.AppendHyperlink("https://www-iceblue.com/", "Home Page", HyperlinkType.WebLink);
    
                //Append line breaks
                paragraph.AppendBreak(BreakType.LineBreak);
                paragraph.AppendBreak(BreakType.LineBreak);
    
                //Add an email link
                paragraph.AppendHyperlink("mailto:support@e-iceblue.com", "Mail Us", HyperlinkType.EMailLink);
    
                //Append line breaks
                paragraph.AppendBreak(BreakType.LineBreak);
                paragraph.AppendBreak(BreakType.LineBreak);
    
                //Add a file link
                string filePath = @"C:\Users\Administrator\Desktop\report.xlsx";
                paragraph.AppendHyperlink(filePath, "Click to open the report", HyperlinkType.FileLink);
    
                //Append line breaks
                paragraph.AppendBreak(BreakType.LineBreak);
                paragraph.AppendBreak(BreakType.LineBreak);
    
                //Add another section and create a bookmark
                Section section2 = doc.AddSection();
                Paragraph bookmarkParagrapg = section2.AddParagraph();
                bookmarkParagrapg.AppendText("Here is a bookmark");
                BookmarkStart start = bookmarkParagrapg.AppendBookmarkStart("myBookmark");
                bookmarkParagrapg.Items.Insert(0, start);
                bookmarkParagrapg.AppendBookmarkEnd("myBookmark");
    
                //Link to the bookmark
                paragraph.AppendHyperlink("myBookmark", "Jump to a location inside this document", HyperlinkType.Bookmark);
    
                //Append line breaks
                paragraph.AppendBreak(BreakType.LineBreak);
                paragraph.AppendBreak(BreakType.LineBreak);
    
                //Add an image link
                Image image = Image.FromFile(@"C:\Users\Administrator\Desktop\logo.png");
                Spire.Doc.Fields.DocPicture picture = paragraph.AppendPicture(image);
                paragraph.AppendHyperlink("https://docs.microsoft.com/en-us/dotnet/", picture, HyperlinkType.WebLink);
    
                //Save to file
                doc.SaveToFile("InsertHyperlinks.docx", FileFormat.Docx2013);
            }
        }
    }

C#/VB.NET: Insert Hyperlinks to Word Documents

Adicionar hiperlinks a texto existente no Word

Adicionar hiperlinks ao texto existente em um documento é um pouco mais complicado. Você precisará primeiro encontrar a string de destino e, em seguida, substituí-la no parágrafo por um campo de hiperlink. A seguir estão as etapas.

  • Crie um objeto Documento.
  • Carregue um arquivo Word usando o método Document.LoadFromFile().
  • Encontre todas as ocorrências da string de destino no documento usando o método Document.FindAllString() e obtenha aquela específica por seu índice da coleção.
  • Obtenha o próprio parágrafo da string e sua posição nele.
  • Remova a string do parágrafo.
  • Crie um campo de hiperlink e insira-o na posição onde a string está localizada.
  • Salve o documento em outro arquivo usando o método Document.SaveToFle().
  • C#
  • VB.NET
using Spire.Doc;
    using Spire.Doc.Documents;
    using Spire.Doc.Fields;
    using Spire.Doc.Interface;
    
    namespace AddHyperlinksToExistingText
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Create a Document object
                Document document = new Document();
    
                //Load a Word file
                document.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.docx");
    
                //Find all the occurrences of the string ".NET Framework" in the document
                TextSelection[] selections = document.FindAllString(".NET Framework", true, true);
    
                //Get the second occurrence
                TextRange range = selections[1].GetAsOneRange();
    
                //Get its owner paragraph
                Paragraph parapgraph = range.OwnerParagraph;
    
                //Get its position in the paragraph
                int index = parapgraph.Items.IndexOf(range);
    
                //Remove it from the paragraph
                parapgraph.Items.Remove(range);
    
                //Create a hyperlink field
                Spire.Doc.Fields.Field field = new Spire.Doc.Fields.Field(document);
                field.Type = Spire.Doc.FieldType.FieldHyperlink;
                Hyperlink hyperlink = new Hyperlink(field);
                hyperlink.Type = HyperlinkType.WebLink;
                hyperlink.Uri = "https://en.wikipedia.org/wiki/.NET_Framework";
                parapgraph.Items.Insert(index, field);
    
                //Insert a field mark "start" to the paragraph
                IParagraphBase start = document.CreateParagraphItem(ParagraphItemType.FieldMark);
                (start as FieldMark).Type = FieldMarkType.FieldSeparator;
                parapgraph.Items.Insert(index + 1, start);
    
                //Insert a text range between two field marks
                ITextRange textRange = new Spire.Doc.Fields.TextRange(document);
                textRange.Text = ".NET Framework";
                textRange.CharacterFormat.Font = range.CharacterFormat.Font;
                textRange.CharacterFormat.TextColor = System.Drawing.Color.Blue;
                textRange.CharacterFormat.UnderlineStyle = UnderlineStyle.Single;
                parapgraph.Items.Insert(index + 2, textRange);
    
                //Insert a field mark "end" to the paragraph
                IParagraphBase end = document.CreateParagraphItem(ParagraphItemType.FieldMark);
                (end as FieldMark).Type = FieldMarkType.FieldEnd;
                parapgraph.Items.Insert(index + 3, end);
    
                //Save to file
                document.SaveToFile("AddHyperlink.docx", Spire.Doc.FileFormat.Docx);
            }
        }
    }

C#/VB.NET: Insert Hyperlinks to Word Documents

Solicite uma licença temporária

Se desejar remover a mensagem de avaliação dos documentos gerados ou se livrar das limitações de função, por favor solicite uma licença de teste de 30 dias para você mesmo.

Veja também