如何使用OpenXml SDK向演示文稿中的形状添加超链接

时间:2013-10-30 11:46:56

标签: c# openxml-sdk

我正在使用C#应用程序开发以创建PowerPoint演示文稿。

我正在使用OpenXML SDK 2.0和MS Office PP 2007。

我可以从模板中克隆幻灯片并在其上添加新形状。

但现在我想为我的形状添加超链接。

我该怎么做?

我发现了这个:tutorial但我需要在运行时添加这些超链接。

我已经尝试过了。

SlidePart currentSlidePart = CloneSlidePart(presentationPart, slidePart);
Slide s = currentSlidePart.Slide;
currentSlidePart.AddHyperlinkRelationship(new System.Uri("myuri", System.UriKind.Absolute), true, "rId2");

然后我调用了创建形状的方法:

s.CommonSlideData.ShapeTree.Append(generateTextShape("some content", shape));

这是方法:

 public static Shape generateTextShape(String input, ShapePosition shapePosition)
 {
            Shape shape1 = new Shape();
...
            D.HyperlinkOnClick hyperlinkOnClick1 = new D.HyperlinkOnClick() { Id = "rId2" };
            nonVisualDrawingProperties1.Append(hyperlinkOnClick1);
...
    return shape1;
}

现在,没有任何事情发生.. 我做错了什么,有什么建议吗?

(类ShapePosition仅用于x,y,宽度,形状的高度)

祝你好运!

1 个答案:

答案 0 :(得分:0)

你说“没有任何反应”,所以我不会假设。请尝试以下几点:

1)超链接以幻灯片放映模式显示。将演示文稿放入幻灯片放映模式(按F5) - 然后单击形状。

2)您是否将nonVisualDrawingProperties1追加到了shape1?要说明一下,右键单击PP2007中的形状并选择超链接...查看您的URL是否存在。如果不存在,那么您需要确保在nonVisualDrawingProperties1方法中将shape1添加到generateShapeText

3)如果URL在那里,但它不起作用,也许你的关系ID不正确? 在具有相同文件的PP2007中,创建一个新的简单形状,添加一个新的超链接,使用新文件名保存它,并将这两个文件与生产力工具进行比较。您应该看到PP2007生成的新超链接和关系。

您在generateShapeText中发布了部分代码。如果您可以填写完整的代码,这可能有助于我们对您进行故障排除。 -Cheers。