AYU MAX

プログラミングとか作ったもの

PPTX作成機能 イメージ挿入と箇条書き

前回版の課題

前回の記事(http://ayumax.hatenablog.com/entry/2018/05/06/231645)の段階では以下の課題がありました。

  • テキストの位置を自由に変更できない
  • イメージ挿入機能がない
  • テキストが全て箇条書きになる

そこで今回はそれらの対策を行いました。

github.com

テキストの位置設定

PPTXTextAreaクラスを新規作成し、Position(x,y)とSize(width, height)を設定できるようにした。 パワポの世界ではcmで設定するようなのでcmで値は入れれるように行った。(内部で変換している)

イメージの挿入

これまたPPTXImageクラスを新規作成して対応。
PPTXTextAreaと同様に位置も指定できるようにした。
ただ課題があって、もと画像のアスペクト比を保ったまま拡縮ができない。。やろうと思うとSizeの値をアスペクト比を保った値に自分でいれてあげる必要があり、ちょっと不便。

テキストの箇条書き設定

PPTXBulletを新規作成。enumでテキストの箇条書き設定を設定可能。

結果

入力ソース

        using (PPTXDocument document = new PPTXDocument(PPTXFilePath, settings))
        {
            document.Slides = new List<PPTXSlide>()
            {
                new PPTXSlide()
                {
                    SlideLayout = settings.SlideLayouts[EPPTXSlideLayoutType.TitleAndContents],
                    Title = new PPTXTextArea("コンテンツ1ページ目"),
                    TextAreas = new List<PPTXTextArea>()
                    {
                        new PPTXTextArea("本文です。\n\\nをいれると改行もされます")
                    }
                },
                new PPTXSlide()
                {
                    SlideLayout = settings.SlideLayouts[EPPTXSlideLayoutType.TitleOnly],
                    Title = new PPTXTextArea("コンテンツ2ページ目"),
                    TextAreas = new List<PPTXTextArea>()
                    {
                        new PPTXTextArea("パワーポイント2枚目のテキスト1", 1, 5, 20, 2),
                        new PPTXTextArea(1, 7, 20, 7)
                        {
                            Texts = new List<PPTXText>()
                            {
                                new PPTXText("2枚目1行目", PPTXBullet.Circle),
                                new PPTXText("2枚目2行目", PPTXBullet.Circle),
                                new PPTXText("2枚目3行目", PPTXBullet.Rectangle),
                                new PPTXText("2枚目4行目 箇条書き解除")
                            }
                        }
                    },
                    Images = new List<PPTXImage>()
                    {
                        new PPTXImage(@"C:\temp\sample.jpg", 1, 15, 5, 3),
                        new PPTXImage(@"C:\temp\sample.jpg", 7, 15, 5, 3)
                    }
                }
            };
        }   

結果

f:id:ayuma0913:20180513221724j:plain

f:id:ayuma0913:20180513221738j:plain

f:id:ayuma0913:20180513222106j:plain

これでpptx作成機能はひと段落。
フォントの設定機能もあった方が良いかなあとも思うけど、あまり凝りすぎると先に進まないので必要最低限で。
またいるなって思ったら検討する予定。

次はMarkdownの解析にはいろう。