2017年10月29日日曜日

【OpenXML】すべてのスライドのテキストを取得する(foreach版)

目的

 OpenXMLを学んでいる。Microsoftの公式ではスライド数を調べて、その数でループしていたが、それでは納得いかなかったため、スライド数を調べないでできないか試した結果を記す。

参考サイト

 [方法] プレゼンテーション内のすべてのスライドのテキストを取得する (Open XML SDK)

 [方法] プレゼンテーションのすべてのスライドから特定の作成者のコメントをすべて削除する (Open XML SDK)

ソース

using DocumentFormat.OpenXml.Packaging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using D = DocumentFormat.OpenXml.Drawing;

namespace すべてのスライドのテキストを取得する_foreach版_
{
    class Program
    {
        static void Main(string[] args)
        {
            string fileName = "TEST";
            string filePath = @"C:\Users\t\Documents\07_OpenXML\" + fileName + ".pptx";

            ShowTextAllSlide(filePath);
        }

        public static void ShowTextAllSlide( string fileName)
        {
            // エラーチェック
            if(String.IsNullOrEmpty(fileName))
            {
                throw new ArgumentNullException("File Name Not Exist.");
            }

            using(PresentationDocument doc = PresentationDocument.Open(fileName, false))
            {
                // スライド数を取得し、表示する。スライドが0枚だと、何も表示しないため。
                int numberOfSlides = doc.PresentationPart.SlideParts.Count();
                System.Console.WriteLine("Number of slides = {0}", numberOfSlides);

                // スライド内をループする
                // 問題:スライドを1から順番に表示しない。
                foreach( SlidePart slide in doc.PresentationPart.SlideParts)
                {
                    StringBuilder paragraphText = new StringBuilder();

                    IEnumerable texts = slide.Slide.Descendants();
                    foreach(D.Text text in texts)
                    {
                        paragraphText.Append(text.Text);
                    }
                    System.Console.WriteLine("contains: {0}", paragraphText); 
                }
            }
            System.Console.ReadKey();
        }
    }
}

問題

スライドの1枚目から表示できなかった。

2017年10月22日日曜日

ラズパイ上に構築したDjangoアプリに外部からアクセスする方法

目的

 ラズパイ上でDjangoの勉強をするために環境を構築し、初歩から勉強を始めようとしたところ、外部PCからアクセスする方法を調べる必要があり、わかったため、その方法を以下に記す。

環境

  • RaspberryPi2:stretch
  • Python:3.5.3
  • Django:1.11.5

必要な設定

  1. python manage.py runserver 0.0.0.0:8000 で起動する。
  2. プロジェクト名/settings.py 内のALLOWED_HOSTSにアクセスURLを記述する。

具体例

 PCからラズパイ上のDjangoアプリアクセスURL:raspberrypi.local:8000/polls

 settings.py内に以下のような記述をする。

ALLOWED_HOSTS = ['raspberrypi.local']