Ich muss Smart-Art in textuelle Ansicht konvertieren, genauso wie "Contribute To Text" Band Arbeit Highlight in unter 1. Bild. Bis jetzt bin ich in der Lage, Text von Smart-Art zu extrahieren und in eine Form zu schreiben. aber ich fand unten Probleme.Wie extrahiert man Text aus Smartart mit richtigem Texteinzug?
- nicht in der Lage Einzug von Texten Form
Nach dem Löschen der Smart-Technik macht es eine leere Form zu der Folie hinzuzufügen.
unten ist der Code, was ichprivate void ChangeSmartartToText(ref PresentationEXT textDeck, string deckType) { PPT.Slide slide = textDeck.destinationPresentation.Slides[textDeck.currentSlideNumber+1]; PPT.Shape tempSmartShape = null; foreach (Microsoft.Office.Interop.PowerPoint.Shape shape in slide.Shapes) { if (shape.HasSmartArt == MsoTriState.msoTrue) { tempSmartShape = shape; break; } } PPT.Shape newTextShape = null; if (tempSmartShape != null) { var smartartTop = tempSmartShape.Top; var smartartLeft = tempSmartShape.Left; var smartartHeight = tempSmartShape.Height; var smartartWidth = tempSmartShape.Width; newTextShape = slide.Shapes.AddShape(MsoAutoShapeType.msoShapeRectangle, smartartLeft, smartartTop, smartartWidth, smartartHeight); var val1 = tempSmartShape.SmartArt; string name = val1.Layout.Name; string category = val1.Layout.Category; StringBuilder smartartText = new StringBuilder(); foreach (SmartArtNode node in val1.AllNodes) { smartartText.AppendLine(node.TextFrame2.TextRange.Text); } Microsoft.Office.Interop.PowerPoint.TextRange objText; objText = newTextShape.TextFrame.TextRange; newTextShape.TextFrame.Orientation = MsoTextOrientation.msoTextOrientationHorizontal; objText.Text = smartartText.ToString(); tempSmartShape.Delete(); tempSmartShape = null; } }
aus dem obigen Code habe ich den ausstieg setzen (in der 2. Bild gezeigt) und zeigen auch das, was ich brauche.
In diesem Fall befindet sich die Smartart-Form in einem Inhaltsplatzhalter und nicht direkt auf der Folie. Wenn Sie den Inhalt eines Inhaltsplatzhalters löschen, wird er zu einem leeren Platzhalter. Sie werden es auch löschen wollen. Sie können dies überprüfen, indem Sie den Formtyp testen. Wenn es sich um einen Platzhalter handelt, testen Sie den Platzhaltertyp. Wenn es sich um einen Inhaltsplatzhalter handelt, können Sie den enthaltenen Typ anzeigen. –
Hallo @SteveRindsberg danke für die Idee. Es sieht gut aus. aber es kann ein Problem geben, Folie kann einen anderen Platzhalter enthalten und es ist schwierig zu identifizieren, ob Sie einen Demo-Code dafür haben. Ich habe es auch versucht, aber ich konnte keinen Weg finden. – madan