JavaでWord文書の編集を制限する方法

Word文書を他の人と共有する際、Wordドキュメント上の情報を保護するために、Word文書の一部または全部の編集を制限したい場合があります。この記事では、無料の [Free Spire.Doc for Java](https://jp.e-iceblue.com/introduce/free-spire-doc-for-java.html) を使用して、**Wordドキュメントに編集制限を設定する方法**を学びます。それは、ユーザーが保護の正確なタイプを選択できるように **ProtectionType** 列挙パラメータを提供しています。

- **[Word文書権限を閲覧のみに設定する](#word文書権限を閲覧のみに設定する)**
- **[Word文書権限をコメントのみに設定する](#word文書権限をコメントのみに設定する)**
- **[Word文書権限をフォームへの入力のみに設定する](#word文書権限をフォームへの入力のみに設定する)**
- **[Word文書権限を編集のみに設定する](#word文書権限を編集のみに設定する)**
- **[Word文書の権限設定を解除する](#word文書の権限設定を解除する)**

## 【依存関係の追加】
> **この方法は、無料のFree Spire.Doc for Javaが必要ですので、先にjarファイルをインポートしてください。**

### 1. Maven
Maven を使用している場合、プロジェクトの pom.xml ファイルに以下のコードを追加することで、簡単にアプリケーションに JAR ファイルをインポートすることができます。

```XML
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc.free</artifactId>
        <version>5.1.0</version>
    </dependency>
</dependencies>
```

### 2. 公式サイトよりJarファイルをダウンロード

まず、[Free Spire.Doc for Java](https://jp.e-iceblue.com/download/free-spire-doc-for-java.html) の公式サイトよりzipファイルをダウンロードします。zipファイルを解凍し、libフォルダの下にあるSpire.Doc.jarファイルを依存関係としてプロジェクトにインポートしてください。

## Word文書権限を閲覧のみに設定する

Spire.Doc for Javaは、パスワードによって、あなたの文書を他者による改ざんから保護することができます。

> **詳細な手順は以下の通りです。**

- **Document** クラスのインスタンスを作成し、**Document.loadFromFile()** メソッドでWord文書を読み込みます。
- **Document.protect(ProtectionType.Allow_Only_Reading, password string)** メソッドで、Word文書を読み取り専用にします。
- **Document.saveToFile()** メソッドを使用して、文書を別のWord文書に保存します。

**Java**

```Java
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.ProtectionType;

public class protectWordDocument {

    public static void main(String[] args) throws Exception {

        //Documentクラスのインスタンスを作成する
        Document document = new Document();

        //Word文書を読み込む
        document.loadFromFile("ご注文について.docx");

        //文書の権限を閲覧のみに設定する
        document.protect(ProtectionType.Allow_Only_Reading, "123456");


        //ドキュメントを保存する
        document.saveToFile("閲覧のみ.docx", FileFormat.Docx_2013);
    }
}
```

### 【結果のWordドキュメント】

![Word文書権限を閲覧のみに設定する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/4f5b4933-3383-11f5-d82d-eb5c81c14064.png)

## Word文書権限をコメントのみに設定する

文書の権限がコメント入力のみ許可に設定されている場合、パスワードを持たないユーザーはコメント入力以外の変更を行うことができません。

> **詳しい手順は以下の通りです。**

- **Document** クラスのインスタンスを作成し、**Document.loadFromFile()** メソッドでWord文書を読み込みます。
- **Document.protect(ProtectionType.Allow_Only_Comments, password string)** メソッドで、コメントのみ追加できるようにします。
- **Document.saveToFile()** メソッドでドキュメントを保存します。

**Java**

```Java
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.ProtectionType;

public class protectWordDocument {

    public static void main(String[] args) throws Exception {

        //Documentクラスのインスタンスを作成する
        Document document = new Document();

        //Word文書を読み込む
        document.loadFromFile("ご注文について.docx");

        //文書の権限をコメントのみに設定する
        document.protect(ProtectionType.Allow_Only_Comments, "123456");

        //ドキュメントを保存する
        document.saveToFile("コメントのみ.docx", FileFormat.Docx_2013);
    }
}
```

### 【結果のWordドキュメント】

![Word文書権限をコメントのみに設定する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/26d83cc5-2e78-715f-3353-4a4a3d0dfee4.png)

## Word文書権限をフォームへの入力のみに設定する

文書のアクセス権をフォームへの入力のみに設定すると、パスワードを持たない読者は、フォームへの入力以外の変更を行うことができなくなります。

> **以下、詳しい手順を説明します。**

- **Document** クラスのインスタンスを作成します。
- **Document.loadFromFile()** メソッドでWord文書を読み込みます。
- **Document.protect(ProtectionType.Allow_Only_Comments, password string)** メソッドを使用して、コメント以外の改変ができないようにWord文書を保護します。
- **Document.saveToFile()** メソッドを使用して文書を保存します。

**Java**

```Java
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.ProtectionType;

public class protectWordDocument {

    public static void main(String[] args) throws Exception {

        //Documentクラスのインスタンスを作成する
        Document document = new Document();

        //Word文書を読み込む
        document.loadFromFile("ご注文について.docx");

        //文書の権限をフォーム入力のみに設定する
        document.protect(ProtectionType.Allow_Only_Form_Fields, "123456");

        //ドキュメントを保存する
        document.saveToFile("フォーム入力のみ.docx", FileFormat.Docx_2013);
    }
}
```

### 【結果のWordドキュメント】

![Word文書権限をフォームへの入力のみに設定する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/714ad111-6de6-8722-ddd4-8f12e468b674.png)

## Word文書権限を編集のみに設定する

**ProtectionType** を **Allow_Only_Revisions** に設定すると、Word文書はすべての変更点を追跡しながら編集することができます。そうすれば、Word文書の編集記録を確認することが非常に簡単になり、変更を受け入れるか拒否することができます。

> **詳細な手順は以下の通りです。**

- **Document** クラスのインスタンスを作成し、**Document.loadFromFile()** メソッドでWord文書を読み込みます。
- **Document.protect(ProtectionType.Allow_Only_Revisions, password string)** メソッドを使用して、Word文書が変更履歴のある状態で編集されるようにします。
- **Document.saveToFile()** メソッドを使用して文書を保存します。

**Java**

```Java
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.ProtectionType;

public class protectWordDocument {

    public static void main(String[] args) throws Exception {

        //Documentクラスのインスタンスを作成する
        Document document = new Document();

        //Word文書を読み込む
        document.loadFromFile("ご注文について.docx");

        //文書の権限をAllow_Only_Revisionsに設定する
        document.protect(ProtectionType.Allow_Only_Revisions, "123456");

        //ドキュメントを保存する
        document.saveToFile("編集のみ.docx", FileFormat.Docx_2013);
    }
}
```

### 【結果のWordドキュメント】

![Word文書権限を編集のみに設定する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/5e55fd2a-d653-8efe-4a66-3734f368a5f9.png)

## Word文書の権限設定を解除する

**ProtectionType** を **No_Protection** に設定すると、Word文書に対するすべての制限が解除され、通常通り編集ができるようになります。

> **以下、詳しい手順を説明します。**

- **Document** インスタンスを作成し、**Document.loadFromFile()** メソッドでWord文書を読み込みます。
- **Document.protect(ProtectionType.No_Protection, password string)** メソッドで、制限を解除します。
- **Document.saveToFile()** メソッドを使用して文書を保存します。

**Java**

```Java
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.ProtectionType;

public class protectWordDocument {

    public static void main(String[] args) throws Exception {

        //Documentクラスのインスタンスを作成する
        Document document = new Document();

        //Word文書を読み込む
        document.loadFromFile("編集のみ.docx");

        //権限設定を解除する
        document.protect(ProtectionType.No_Protection,"123456");

        //ドキュメントを保存する
        document.saveToFile("権限設定の解除.docx", FileFormat.Docx_2013);
    }
}
```

### 【結果のWordドキュメント】

![Word文書の権限設定を解除する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/6e05cf3b-c1a8-0432-bce6-e78dc5053622.png)

> **この記事では、Free Spire.Doc for Javaを使用してWord文書のアクセス権を設定する方法を紹介します。[Spire.Doc Forum](https://www.e-iceblue.com/forum/spire-doc-f6.html) で、より多くのWord文書処理スキルを得ることができます。**