2013-10-30 98 views
0

我正在用C#应用程序开发以创建PowerPoint演示文稿。如何使用OpenXml SDK向演示文稿中的形状添加超链接

我使用的OpenXML SDK 2.0和MS Office 2007 PP

我能够从我的模板复制我的幻灯片,并在其上添加一个新的形状。

但现在我想添加一个超链接到我的形状。

我该怎么做?

我发现这个: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,宽度,高度的形状的)

此致!

回答

0

你说“什么都没有发生”,所以我不会假设。请尝试几个这些想法:

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

2)您是否将nonVisualDrawingProperties1附加到您的shape1?告诉,右键单击PP2007中的形状并选择超链接...查看您的URL是否存在。如果它不在那里,那么你需要确保nonVisualDrawingProperties1被添加到shape1generateShapeText方法中。 3)如果URL存在,但它不工作,也许你有你的关系Ids不正确? 在具有相同文件的PP2007中,创建一个新的简单形状,添加一个新的超链接,将其保存为一个新文件名,并将这两个文件与生产力工具进行比较。您应该看到PP2007生成的新超链接和关系。

您公开的部分代码generateShapeText。如果您可以放置​​完整的代码,那可能会帮助我们解决这个问题。 -干杯。

+0

你好Taterhead,我已经忘记了这个问题,因为我解决了这个问题。对不起。问题的解决方案很简单。如果您对解决方案感兴趣,请告诉我!我稍后会更新我的问题。 – Leviathan

+1

@Leviathan嗨。你能不能更新你的问题,并包括你的解决方案?碰巧遇到同样的问题,您的解决方案将非常有帮助:) 谢谢。 – Keith

相关问题