添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
首页
学习
活动
专区
工具
TVP
最新优惠活动
发布
精选内容/技术社群/优惠产品, 尽在小程序
立即前往

在Open xml文档中添加带有图像的超链接

在Open XML文档中添加带有图像的超链接,可以通过以下步骤完成:

  1. 创建一个Open XML文档对象,例如使用C#语言中的 WordprocessingDocument 类来创建一个Word文档对象。
  2. 在文档中插入一个带有图像的超链接,可以使用 HyperlinkRelationship 类来创建超链接关系,并将其添加到文档的关系部分。
  3. 创建一个带有图像的超链接的内容,可以使用 Paragraph 类来创建一个段落对象,并将其添加到文档的主体部分。
  4. 在段落中插入图像,可以使用 Drawing 类来创建一个绘图对象,并将其添加到段落中。
  5. 创建一个超链接的文本,可以使用 Run 类来创建一个文本对象,并将其添加到段落中。
  6. 将超链接的文本与超链接关系进行关联,可以使用 Hyperlink 类来创建一个超链接对象,并将其添加到段落中。
  7. 将段落添加到文档的主体部分。

以下是一个示例代码,演示如何在Open XML文档中添加带有图像的超链接:

代码语言: csharp
复制
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
using Drawing = DocumentFormat.OpenXml.Drawing;
using A = DocumentFormat.OpenXml.Drawing;
using DW = DocumentFormat.OpenXml.Drawing.Wordprocessing;
using PIC = DocumentFormat.OpenXml.Drawing.Pictures;
public void AddHyperlinkWithImageToOpenXmlDocument(string filePath, string imageUrl, string linkUrl)
    using (WordprocessingDocument document = WordprocessingDocument.Create(filePath, WordprocessingDocumentType.Document))
        // 创建文档主体部分
        MainDocumentPart mainPart = document.AddMainDocumentPart();
        mainPart.Document = new Document();
        // 创建超链接关系
        HyperlinkRelationship hyperlinkRelationship = mainPart.AddHyperlinkRelationship(new Uri(linkUrl), true);
        // 创建段落
        Paragraph paragraph = new Paragraph();
        // 创建绘图对象
        Drawing drawing = new Drawing();
        DW.Anchor anchor = new DW.Anchor();
        // 创建图像对象
        PIC.Picture picture = new PIC.Picture();
        PIC.BlipFill blipFill = new PIC.BlipFill();
        A.Blip blip = new A.Blip();
        blip.Embed = mainPart.GetIdOfPart(mainPart.AddImagePart(ImagePartType.Jpeg));
        blip.Cstate = new A.BlipExtension() { UseLocalDpi = true };
        blipFill.Append(blip);
        // 创建图像的外观
        A.Stretch stretch = new A.Stretch();
        A.FillRectangle fillRectangle = new A.FillRectangle();
        stretch.Append(fillRectangle);
        // 创建图像锚点
        DW.Extent extent = new DW.Extent() { Cx = 990000L, Cy = 792000L };
        DW.EffectExtent effectExtent = new DW.EffectExtent() { LeftEdge = 0L, TopEdge = 0L, RightEdge = 0L, BottomEdge = 0L };
        DW.DocProperties docProperties = new DW.DocProperties() { Id = (UInt32Value)1U, Name = "Picture 1" };
        DW.NonVisualGraphicFrameDrawingProperties nonVisualGraphicFrameDrawingProperties = new DW.NonVisualGraphicFrameDrawingProperties();
        A.GraphicFrameLocks graphicFrameLocks = new A.GraphicFrameLocks() { NoChangeAspect = true };
        nonVisualGraphicFrameDrawingProperties.Append(graphicFrameLocks);
        DW.Graphic graphic = new DW.Graphic();
        graphic.Append(new A.GraphicData(new PIC.Picture() { NonVisualPictureProperties = new PIC.NonVisualPictureProperties(new PIC.NonVisualDrawingProperties() { Id = (UInt32Value)0U, Name = "New Bitmap Image.jpg" }, new PIC.NonVisualPictureDrawingProperties()), BlipFill = blipFill, Stretch = stretch }));
        // 创建超链接的文本
        Run run = new Run();
        Hyperlink hyperlink = new Hyperlink() { History = true, Id = hyperlinkRelationship.Id };
        run.Append(hyperlink);
        run.Append(new Text("Click here to visit the link"));
        // 将超链接的文本与图像锚点进行关联
        anchor.Append(extent);
        anchor.Append(effectExtent);
        anchor.Append(docProperties);
        anchor.Append(nonVisualGraphicFrameDrawingProperties);
        anchor.Append(graphic);
        anchor.Append(new DW.ClientData());
        drawing.Append(anchor);
        paragraph.Append(run);
        paragraph.Append(drawing);