スマートアートをテキストビューに変換する必要があります。これは、最初の画像の下の「テキストに変換」リボンの作業ハイライトと同じです。今まで私はスマートアートからテキストを抽出し、それを図形に書くことができます。しかし私は問題の下で見つけた。スマートテキストから適切なテキストインデントを使ってテキストを抽出する方法は?
- それがスライドに空白の形状を追加し、スマート技術の形状を削除した後、テキスト
のインデントを行うことができません。以下
は私が(第二の画像に示されている)アウトプットを持っても、私は必要なものを示し、上記のコードからprivate 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; } }
この場合、スマートシェイプの形状は、スライド上に直接配置されるのではなく、コンテンツプレースホルダの内側にあります。コンテンツプレースホルダからコンテンツを削除すると、空のプレースホルダに戻ります。あなたもそれを削除したいです。図形の種類をテストすることでこれらを確認できます。それがプレースホルダの場合は、プレースホルダの型をテストします。コンテンツプレースホルダの場合、含まれているタイプを見ることができます。 –
こんにちは@SteveRindsbergさん、ありがとうございました。良い感じ。スライドに別のプレースホルダが含まれている可能性があります。これを確認するためのデモコードがありません。私も試しましたが、方法を見つけることができませんでした。 – madan