1

オープン XML を使用して 1 つのスライド PowerPoint ファイルを作成しています。プログラムで更新する必要がある PPT のプレースホルダーにタグを付けました。プレースホルダーを見つけることができ、データベースからその値を更新できます。

ここでの問題は、ユーザーが WYSIWYG エディターを使用して入力した HTML コードを、ユーザーが入力したのと同じ形式 (箇条書きなど) で表示する必要があることです。

プレースホルダーをHTMLテキストに置き換えようとすると、すべてのタグなどと同様にHTMLテキストがそのまま貼り付けられました。

    var presPart = myPres.PresentationPart;
        var slideIdList = presPart.Presentation.SlideIdList;

        var list = slideIdList.ChildElements
                    .Cast<SlideId>()
                    .Select(x => presPart.GetPartById(x.RelationshipId))
                    .Cast<SlidePart>();


        var tableSlidePart = (SlidePart)list.First();
        var secondSlidePart = (SlidePart)list.Last();
        var current = tableSlidePart;

シンプルなプレーンテキストを貼り付ける必要がある場合、下の行は正常に機能しています

        List<DocumentFormat.OpenXml.Drawing.Text> textList = tableSlidePart.Slide.Descendants<DocumentFormat.OpenXml.Drawing.Text>().Where(t => t.Text.Equals("IntroText")).ToList();
        foreach (DocumentFormat.OpenXml.Drawing.Text text in textList)
        {
            text.Text = "Some Text";
        }

しかし、HTML をプレースホルダーに貼り付けたい場合、通常のプレーン文字列として扱われます。

     textList = null;
        textList = tableSlidePart.Slide.Descendants<DocumentFormat.OpenXml.Drawing.Text>().Where(t => t.Text.Equals("##DESCRIPTION##")).ToList();
        foreach (DocumentFormat.OpenXml.Drawing.Text text in textList)
            text.Text = "<html><table><tr><td><b>Hello</b></td></tr></table></html>";

ヘルプやポインタをいただければ幸いです。前もって感謝します

4

0 に答える 0