C#/VB.NET: insertar hipervínculos a documentos de Word

2023-09-27 06:17:37

Instalado a través de NuGet

PM> Install-Package Spire.Doc

enlaces relacionados

Un hipervínculo dentro de un documento de Word permite a los lectores saltar desde su ubicación a un lugar diferente dentro del documento, a un archivo o sitio web diferente, o a un nuevo mensaje de correo electrónico. Los hipervínculos facilitan y agilizan la navegación de los lectores hacia información relacionada. Este artículo demuestra cómo agregar hipervínculos a texto o imágenes en C# y VB.NET usando Spire.Doc for .NET.

Instalar Spire.Doc for .NET

Para empezar, debe agregar los archivos DLL incluidos en el paquete Spire.Doc for .NET como referencias en su proyecto .NET. Los archivos DLL se pueden descargar desde este enlace o instalado a través de NuGet.

PM> Install-Package Spire.Doc

Insertar hipervínculos al agregar párrafos a Word

Spire.Doc ofrece el método Paragraph.AppendHyperlink() para agregar un enlace web, un enlace de correo electrónico, un enlace de archivo o un enlace de marcador a un fragmento de texto o una imagen dentro de un párrafo. Los siguientes son los pasos detallados.

  • Crea un objeto de documento.
  • Agregue una sección y un párrafo.
  • Inserte un hipervínculo basado en texto usando el método Paragraph.AppendHyerplink (enlace de cadena, texto de cadena, tipo HyperlinkType).
  • Agregue una imagen al párrafo usando el método Paragraph.AppendPicture().
  • Inserte un hipervínculo basado en la imagen usando el método Paragraph.AppendHyerplink (enlace de cadena, imagen Spire.Doc.Fields.DocPicture, tipo HyperlinkType).
  • Guarde el documento utilizando el 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

Agregar hipervínculos a texto existente en Word

Agregar hipervínculos al texto existente en un documento es un poco más complicado. Primero deberá encontrar la cadena de destino y luego reemplazarla en el párrafo con un campo de hipervínculo. Los siguientes son los pasos.

  • Crea un objeto de documento.
  • Cargue un archivo de Word usando el método Document.LoadFromFile().
  • Encuentre todas las apariciones de la cadena de destino en el documento utilizando el método Document.FindAllString() y obtenga la específica por su índice de la colección.
  • Obtenga el párrafo propio de la cadena y su posición en él.
  • Elimina la cadena del párrafo.
  • Cree un campo de hipervínculo e insértelo en la posición donde se encuentra la cadena.
  • Guarde el documento en otro archivo utilizando el 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 una licencia temporal

Si desea eliminar el mensaje de evaluación de los documentos generados o deshacerse de las limitaciones de la función, por favor solicitar una licencia de prueba de 30 días para ti.

Ver también