0
2

More than 1 year has passed since last update.

PDFに画像を挿入、置換、削除、抽出する方法(Java)

Last updated at Posted at 2022-10-13

テキストと比較して、画像は通常、意味を伝えやすく、PDFドキュメントをより魅力的なものにすることができます。画像はPDFにおいて重要な役割を果たすため、PDFへの画像を挿入、置換、削除、抽出する方法を知っておくことは、すべての開発者にとって真の利益となり得ます。この記事では、Free Spire.PDF for Javaを使用して、PDF内の画像関連の操作を処理する方法を紹介します。

【依存関係の追加】

この方法は、無料のFree Spire.PDF for Javaが必要ですので、先にjarファイルをインポートしてください。

1. Maven

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

<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.free</artifactId>
        <version>5.1.0</version>
    </dependency>
</dependencies>

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

まず、Free Spire.PDF for Java の公式サイトよりzipファイルをダウンロードします。zipファイルを解凍し、libフォルダの下にあるSpire.Pdf.jarファイルを依存関係としてプロジェクトにインポートしてください。

PDFに画像を指定した位置に挿入する

drawImage() メソッドは、指定した幅と高さの画像を、PDFページ上の指定した位置に描画するために使用されます。したがって、描画の前にあらかじめ画像のサイズを変更する必要はありません。

以下は、Javaで新しいPDFドキュメントに画像を挿入するための主な手順です。

  • PdfDocument クラスのオブジェクトを作成します。
  • PdfDocument.getPages().add() メソッドを使用して、PDFにページを追加します。
  • PdfImage.fromFile() メソッドを使用して画像を読み込みます。
  • 画像のサイズとページ内の位置を指定します。
  • PdfPageBase.getCanvas.drawImage() メソッドを使用して、ページ上に画像を描画します。
  • PDFドキュメントを保存し ます。

Java

import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImage;

public class insertImage {

    public static void main(String[] args) {

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

        //ページの余白を設定する
        doc.getPageSettings().setMargins(30);

        //ページを追加する
        PdfPageBase page = doc.getPages().add();

        //画像を読み込む
        PdfImage image = PdfImage.fromFile("C:/Sample.jpg");

        //画像の幅と高さをPDFで指定する
        float width = image.getWidth() * 0.5f;
        float height = image.getHeight() * 0.5f;

        //画像の描画位置を指定する
        double x = 0f;
        float y = 0f;

        //ページに画像を描く
        page.getCanvas().drawImage(image, x, y, width, height);

        //ドキュメントを保存する
        doc.saveToFile("画像の挿入.pdf", FileFormat.PDF);
    }
}

【結果のPDFファイル】

PDFに画像を指定した位置に挿入する

PDF内の画像を別の画像に置き換える

replaceImage() メソッドを使用すると、PDF内の画像を置き換えることができます。このメソッドは、置き換えられた新しい画像のサイズを自動的に変更し、周囲にある他の要素の可読性に影響を与えないようにします。

以下は、その手順です。

  • PdfDocument クラスのオブジェクトを作成します。
  • PdfDocument.loadFromFile() メソッドを使用して既存の PDF ドキュメントを読み込みます。
  • PdfDocument.getPages().get() メソッドを使用して特定のページを取得します。
  • PdfImage.fromFile() メソッドを使用して画像を読み込みます。
  • PdfDocument.replaceImage() メソッドを使用して、ドキュメント内の特定の画像を新しい画像に置き換えます。
  • PDFドキュメントを保存します。

Java

import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImage;

public class replaceImage {
    public static void main(String[] args) {

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

        //PDFファイルを読み込む
        doc.loadFromFile("C:/Sample.pdf");

        //最初のページを取得する
        PdfPageBase page = doc.getPages().get(0);

        //画像を読み込む
        PdfImage image = PdfImage.fromFile("C:/Sample1.jpg");

        //ページ内の最初の画像を読み込まれた画像に置き換える
        page.replaceImage(0, image);

        //ファイルを保存する
        doc.saveToFile("画像の置き換え.pdf", FileFormat.PDF);
    }
}

【結果のPDFファイル】

PDF内の画像を別の画像に置き換える

PDF内の指定した画像を削除する

PDFドキュメント内の画像は、deleteImage() メソッドを使用することで簡単に削除することができます。

以下はその手順です。

  • PdfDocument クラスのオブジェクトを作成します。
  • PdfDocument.loadFromFile() メソッドを使用して既存の PDF ドキュメントを読み込みます。
  • PdfDocument.getPages().get() メソッドを使用して特定のページを取得します。
  • PdfPageBase.deleteImage(int imageIndex) メソッドを使用して、特定の画像をそのインデックスで削除します。
  • PDFドキュメントを保存します。

Java

import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;

public class removeImage {
    public static void main(String[] args) {

        //Create a PdfDocument object
        PdfDocument doc = new PdfDocument();

        //Load the sample PDF file
        doc.loadFromFile("C:/Sample.pdf");

        //Get the specified page
        PdfPageBase page = doc.getPages().get(0);

        //Delete a particular image by its index
        page.deleteImage(0);

        //Save the file
        doc.saveToFile("画像の削除.pdf", FileFormat.PDF);
    }
}

【結果のPDFファイル】

PDF内の指定した画像を削除する

PDFから画像を抽出する

PDFページの画像は、extractImages() メソッドを使用して抽出することができます。

以下は、Free Spire.PDF for Javaを使用してPDFドキュメントからすべての画像を抽出する手順です。

  • PdfDocument クラスのオブジェクトを作成します。
  • PdfDocument.loadFromFile() メソッドを使用して既存の PDF ドキュメントを読み込みます。
  • PdfDocument.getPages().get() メソッドを使用して、特定のページを取得します。
  • ドキュメント内のすべてのページをループし、PdfPageBase.extractImages() メソッドを使用して特定のページから画像を抽出します。
  • 画像を.pngファイルとしてフォルダに保存します。

Java

import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class extractImages {

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

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

        //PDFドキュメントを読み込む
        doc.loadFromFile("C:/Sample.pdf");

        //int型変数を宣言する
        int index = 0;

        //全ページをループする
        for (Object page : doc.getPages()) {

            PdfPageBase pageBase = (PdfPageBase) page;

            //指定されたページから画像を抽出する
            for (BufferedImage image : pageBase.extractImages()) {

                //ファイルのパスと名前を指定する
                File output = new File("C:/抽出された画像/" + String.format("Image_%d.png", index++));

                //画像を.pngファイルとして保存する
                ImageIO.write(image, "PNG", output);
            }
        }
    }
}

【抽出された画像】

PDFから画像を抽出する

この記事では、PDFドキュメント内の画像を扱ういくつかの方法を紹介します。PDFドキュメントの取り扱いに関するより詳細な情報は、Spire.PDF Forumをご覧下さい。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2