JavaはWordで脚注と文末脚注を読む方法

脚注は文章の内容を補充し説明するときに役に立ちます、Wordを使用している中よく見える機能の一つです。今回の記事はWordで脚注と文末脚注を読む方法を紹介します。
注：この記事では、Wordライブラリー（Java Free Editionの場合はFree Spire.Doc）を使用して読み取ります。公式Webサイトからライブラリーを**[ダウンロード](https://www.e-iceblue.com/Download/doc-for-java-free.html)**し、ファイルを解凍して、JavaプログラムをlibフォルダーのSpire.Doc.jarにインポートできます。または、Mavenリポジトリを介してインストールおよびインポートします。

jarインポートの結果は次のとおりです。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/68131eee-3be4-4344-f9de-1cb555feab80.png)
テストドキュメントは、脚注と文末脚注を含めて次のとおりです。
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/786c6317-6462-e67c-1e59-44703c3a9982.png)
##1. Wordの脚注を読む
```
import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.Footnote;
import com.spire.doc.fields.TextRange;

import java.util.List;

public class ExtractFootnoteAndEndnote {
    public static void main(String[] args) {
        //Documentのインスタンスを作成する
        Document doc = new Document();
        doc.loadFromFile("C:\\Users\\Administrator\\Desktop\\Sample.docx");

        //ドキュメント内のすべての脚注を取得する 
        List<Footnote> footNotes = doc.getFootnotes();

        //文字列型変数をインスタンス化する
        String str = "";

        //脚注をトラバースする
        for (Footnote footNote :footNotes) {
            //脚注の段落をトラバースする
            for (int j = 0; j < footNote.getTextBody().getParagraphs().getCount(); j++) {
                Paragraph paragraph = footNote.getTextBody().getParagraphs().get(j);
                //段落の中のオブジェクトを全てトラバースする
                for(Object object : paragraph.getChildObjects()){
                    //テキストを読み取る
                    if (object instanceof TextRange) {
                        TextRange textRange = (TextRange) object;
                        str = str + textRange.getText();
                    }
                }

            }
        }
        //脚注テキストをエクスポートする
        System.out.println(str);
    }
}
```
**脚注の読み取り結果：**
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/29d5b424-9748-2ca3-c787-c26a49fbba54.png)
##2. Wordの文末脚注を読む
```
import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.Footnote;
import com.spire.doc.fields.TextRange;

import java.util.List;

public class ExtractFootnoteAndEndnote {
    public static void main(String[] args) {
        //Documentのインスタンスを作成する
        Document doc = new Document();
        doc.loadFromFile("C:\\Users\\Administrator\\Desktop\\Sample.docx");

        //ドキュメント内のすべての文末脚注を取得する
        List<Footnote> endNotes = doc.getEndnotes();
        //文字列型変数をインスタンス化する
        String str = "";

        //文末脚注をトラバースする
        for (Footnote endnote :endNotes) {
            //文末脚注の段落をトラバースする
            for (int j = 0; j < endnote.getTextBody().getParagraphs().getCount(); j++) {
                Paragraph paragraph = endnote.getTextBody().getParagraphs().get(j);
                //段落の中のオブジェクトを全てトラバースする
                for(Object object : paragraph.getChildObjects()){
                    //テキストを読み取る
                    if (object instanceof TextRange) {
                        TextRange textRange = (TextRange) object;
                        str = str + textRange.getText();
                    }
                }
            }
        }
        //文末脚注をエクスポートする
        System.out.println(str);
    }
}
```
**文末脚注の読み取り結果：**
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/d99dfdfe-46e8-d4c0-c202-66c19faa054f.png)
以上は今回の記事の紹介でした、最後まで読んでいただきありがとうございます。