Java Word文書でハイパーリンクの挿入・読み取り

<p><strong>ハイパーリンクを挿入することで、ワード内の文字列や図形に別の場所の情報をリンクさせることができます。今回は、Spire.Doc for Javaという使いやすいライブラリを活用して、Word文書にハイパーリンクを挿入、そしてWord文書内のハイパーリンクを読み取る方法を紹介していきます。</strong></p>
<p><strong>1.E-iceblueの公式サイトから<a href="https://www.e-iceblue.com/Download/doc-for-java-free.html">Free Spire.doc for Java</a>無料版をダウンロードしてください。</strong></p>
<p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lendoris/20210901/20210901151710.png" alt="f:id:lendoris:20210901151710p:plain" width="437" height="221" loading="lazy" title="" class="hatena-fotolife" itemprop="image" /></p>
<p><strong>2.IDEを起動して新規プロジェクトを作成してから、インストールされたファイルにあった相応しいSpire.doc.jarを参照に追加してください。</strong></p>
<p><strong> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lendoris/20210901/20210901151952.png" alt="f:id:lendoris:20210901151952p:plain" width="239" height="101" loading="lazy" title="" class="hatena-fotolife" itemprop="image" /></strong></p>
<h4><strong>ハイパーリンクを挿入</strong></h4>
```JAVA
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.Section;
import com.spire.doc.documents.HorizontalAlignment;
import com.spire.doc.documents.HyperlinkType;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.ParagraphStyle;
import com.spire.doc.fields.DocPicture;

public class InsertHyperlinks {

    public static void main(String[] args) {

        //Wordオブジェクトを作成します。
        Document doc = new Document();
        Section section = doc.addSection();

        //サイトのリンクを追加します。
        Paragraph paragraph = section.addParagraph();
        paragraph.appendText("サイトのリンク：");
        paragraph.appendHyperlink("https://www.google.com/","ホームページ", HyperlinkType.Web_Link);

        //メールのリンクを追加します。
        paragraph = section.addParagraph();
        paragraph.appendText("メールのリンク：");
        paragraph.appendHyperlink("mailto:support@google.com","support@google.com", HyperlinkType.E_Mail_Link);

        //段落の形式を設定します。
        ParagraphStyle style1 = new ParagraphStyle(doc);
        style1.setName("style");
        style1.getCharacterFormat().setFontName("Ms mincho");
        doc.getStyles().add(style1);

        for (int i = 0; i < section.getParagraphs().getCount(); i++) {
            
            section.getParagraphs().get(i).getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
            section.getParagraphs().get(i).getFormat().setAfterAutoSpacing(true);
            section.getParagraphs().get(i).applyStyle(style1.getName());
        }

        //保存します
        doc.saveToFile("InsertHyperlinks.docx", FileFormat.Docx_2013);
    }
}
```

<h4><strong>実行結果</strong></h4>
<p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lendoris/20210901/20210901152048.png" alt="f:id:lendoris:20210901152048p:plain" width="554" height="326" loading="lazy" title="" class="hatena-fotolife" itemprop="image" /></p>
<h4><strong>リンクを読み取る</strong></h4>

```JAVA
import com.spire.doc.*;
import com.spire.doc.documents.DocumentObjectType;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.Field;

import java.util.ArrayList;
import java.util.List;

public class ExtractHyperlinkAddress {
    public static void main(String[] args){
        //Wordファイルをロードします。
        Document doc = new Document();
        doc.loadFromFile("test.docx");

        //sectionを取得します。
        Section section = doc.getSections().get(0);

        //リンクの数列を取得します。
        List hyperlinks = new ArrayList();

        //段落をループします。
        for (Paragraph para : (Iterable) section.getParagraphs()) {
            for (DocumentObject obj:(Iterable) para.getChildObjects()) {
                if (obj.getDocumentObjectType().equals(DocumentObjectType.Field)) {
                    Field field = (Field) obj;
                    if (field.getType().equals(FieldType.Field_Hyperlink)) {
                        hyperlinks.add(field);
                    }
                }
            }
        }

        //リンクを取得します。
        String text = hyperlinks.get(0).getFieldText();
        String address = hyperlinks.get(0).getValue();
        System.out.println("リンクのテキスト："+ text + "\n" + "リンクの位置:"+ address);
    }
}
```
<p><strong> </strong></p>