JavaでPDF文書のレイヤーを追加または削除する方法

PDFレイヤー（可視レイヤーまたは追加レイヤーとも呼ばれる）は、PDF文書内のコンテンツの可視性を整理および制御するための方法です。 インタラクティブな文書の作成、機密情報の非表示、多言語版の作成などに使用できます。 レイヤーを追加したり削除したりすることで、ユーザーは必要に応じてPDF文書の表示や内容をカスタマイズできます。 この記事では、無料の[Free Spire.PDF for Java](https://jp.e-iceblue.com/introduce/free-spire-pdf-for-java.html)を使用して**PDF文書にレイヤーを追加**したり、**PDF文書からレイヤーを削除**する方法について説明します。
- **[PDFレイヤーの追加](#pdfレイヤーの追加)**
- **[PDFレイヤーの削除](#pdfレイヤーの削除)**

### 依存関係の追加
Free Spire.PDF for Javaは、[公式サイト](https://jp.e-iceblue.com/download/free-spire-pdf-for-java.html)から手動でダウンロードしてプロジェクトに導入するか、Mavenで以下のコードを入力してインストールすることが可能です。
```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.pdf</artifactId>
        <version>5.1.0</version>
    </dependency>
</dependencies>
```
## PDFレイヤーの追加
**PdfDocument.getLayers().addLayer()** メソッドを使えば、 PDF文書内にレイヤーを作成することができす。 良いレイヤーを作成したら、要素を追加したいレイヤー上に描画することができます。 詳しい手順は以下のとおりです。
- **PdfDocument** クラスのオブジェクトを作成します。
- **PdfDocument.loadFromFile()** メソッドを使ってPDF文書を読み込みます。
- **PdfDocument.getLayers().addLayer()** メソッドを使って文書内にレイヤーを作成します。
- レイヤー上に絵を描きます。
- **PdfDocument.saveToFile()** メソッドを使用してドキュメントを保存します。

**コード例**
Java
```java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.*;
import com.spire.pdf.graphics.layer.PdfLayer;

import java.awt.geom.Dimension2D;
import java.io.IOException;

public class addLayersToPdf {

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

        //PdfDocumentクラスのオブジェクトを作成する
        PdfDocument pdf = new PdfDocument();

        //PDFドキュメントを読み込む
        pdf.loadFromFile("サンプル.pdf");

        //"ヘッダー"という名前のレイヤーを作成する
        PdfLayer layer = pdf.getLayers().addLayer("ヘッダー");

        //ページのサイズを取得する
        Dimension2D size = pdf.getPages().get(0).getSize();

        //ページ数を取得する
        int pageCount = pdf.getPages().getCount();

        //2つの変数を宣言する
        PdfPageBase page;
        PdfCanvas canvas;

        //すべてのページをループで処理する
        for (int i = 0; i < pageCount; i++) {

            //レイヤーに画像を描画する
            PdfImage pdfImage = PdfImage.fromFile("ヘッダー.jpg");
            page = pdf.getPages().get(i);
            float width = pdfImage.getWidth();
            float height = pdfImage.getHeight();
            float x = (float) size.getWidth() / 2 - width / 2;
            float y = 30;
            canvas = layer.createGraphics(page.getCanvas());
            canvas.drawImage(pdfImage, x, y, width, height);

            //レイヤーに線を描画する
            PdfPen pen = new PdfPen(PdfBrushes.getDarkGray(), 2f);
            canvas.drawLine(pen, x, y + height + 5, size.getWidth() - x, y + height + 2);
        }

        //ドキュメントを保存する
        pdf.saveToFile("レイヤーの追加.pdf");
        pdf.dispose();
    }
}
```
![PDFレイヤーの追加](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/e2bdd220-3f00-280a-0794-9726e685d8ed.png)
 
## PDFレイヤーの削除
**PdfDocument.getLayers().removeLayer()** メソッドを使えば、レイヤーの名前で削除することができます。詳しい手順は以下の通りです。
- **PdfDocument** クラスのオブジェクトを作成します。
- **PdfDocument.loadFromFile()** メソッドを使ってPDF文書を読み込みます。
- **PdfDocument.getLayers().removeLayer()** メソッドを使用して、" ヘッダー" レイヤーをその名前で削除します。
- **PdfDocument.saveToFile()** メソッドを使用してドキュメントを保存します。

**コード例**
Java
```java
import com.spire.pdf.PdfDocument;

public class deleteLayers {

    public static void main(String[] args) {

        //PdfDocumentクラスのオブジェクトを作成する
        PdfDocument pdf = new PdfDocument();

        //PDFドキュメントを読み込む
        pdf.loadFromFile("レイヤーの追加.pdf");

        //指定したレイヤーをその名前で削除する
        pdf.getLayers().removeLayer("ヘッダー");

        //ファイルを保存する
        pdf.saveToFile("レイヤーの削除.pdf");
        pdf.close();
    }
}
```
![PDFレイヤーの削除](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/f2723106-9b36-d908-9768-df9a31f6cdb0.png)

この記事では、Spire.PDF for Javaを使ってPDF文書にレイヤーを追加したり削除したりする方法について説明します。無料のSpire.PDF for Javaは、PDFレイヤーの表示と非表示など、他の多くの機能もサポートしています。詳しくは[Spire.PDF for Javaチュートリアル](https://jp.e-iceblue.com/tutorials/java/spire-pdf-java/pdf-java-program-guide-content.html)をご覧下さい。また、[Spire.PDFフォーラム](https://www.e-iceblue.com/forum/spire-pdf-f7.html)で議論やフィードバックをすることもできます。