チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル»Java»Spire.PDF for Java»ページの設定»Java:PDF から空のページを検索して削除する方法
2022-09-28

Java:PDF から空のページを検索して削除する方法

PDF ドキュメントを印刷または共有する場合、ドキュメント内に白紙ページがあるかどうかを確認した方がよいでしょう。なぜなら、白紙ページは紙の無駄遣いにつながり、ドキュメントの専門的な外観が損なわれてしまうからです。しかし、すべてのページに目を通して空白のページを見つけ、それを削除するには、多くの時間がかかるでしょう。この問題に対処するためのより良い方法は、Spire.PDF for Java を使用することです。この記事では、プログラミングによって簡単に PDF ドキュメントから空白ページを見つけ、削除するために Spire.PDF for Java を使用する方法を示しています。

Spire.PDF for Java をインストールします

まず、Spire. PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.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>8.9.1</version>
    </dependency>
</dependencies>

PDF ドキュメントから空白のページを検索して削除する

Spire.PDF for Java は、PDF ページが完全に白紙であるかどうかを検出するメソッド PdfPageBase.isBlank() を提供しています。しかし、空白に見えるいくつかのページが実際に白い画像を含んでいる、これらのページは PdfPageBase.isBlank() メソッドを使用して空白とみなされないでしょう。したがって、白紙ページと白い画像を含むページを検出するために、 PdfPageBase.isBlank() メソッドと組み合わせて使用するカスタムメソッド isBlankImage() を作成する必要があります。

注意:この解決策は、PDF ページを画像に変換し、画像が空白であるかどうかを検出します。変換された画像の評価メッセージを削除するには、ライセンスを適用する必要があります。そうでなければ、この方法は正しく動作しません。もしライセンスをお持ちでない場合は、このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。でご連絡いただき、評価用の一時的なライセンスをお受け取りください。

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

  • PdfDocument クラスのオブジェクトを作成します。
  • PdfDocument.loadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
  • PdfPageBase.isBlank() メソッドを使用して、PDF ドキュメント内のページをループして、ページが空白であるかどうかを検出します。
  • 完全に白紙のページについては、PdfDocument.getPages().remove() メソッドを使用してそれらを削除します。
  • 完全に空白でないページについては、PdfDocument.saveAsImage() メソッドを使用して画像として保存し、変換後の画像が空白かどうかをカスタムメソッド isBlankImage() で検出し、空白の画像に対応するページを PdfDocument.getPages().remove() で削除してください。
  • PdfDocument.saveToFile() メソッドを使用して結果ドキュメントを保存します。
  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImageType;

import java.awt.*;
import java.awt.image.BufferedImage;

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

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

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

        BufferedImage image;
        //PDF内のページをループする
        for(int i = pdf.getPages().getCount()-1; i>=0; i--)
        {
            //ページを取得する
            PdfPageBase page = pdf.getPages().get(i);
            //ページが空白かどうかを検出する
            if(page.isBlank())
            {
                //白紙ページを削除する
                pdf.getPages().remove(page);
            }
            else
            {
                //PDFのページを画像として保存する
                image = pdf.saveAsImage(i, PdfImageType.Bitmap);

                //変換後の画像が空白かどうかを検出する
                if (isBlankImage(image))
                {
                    //白紙画像に対応するページを削除する
                    pdf.getPages().remove(page);
                }
            }

        }

        //結果のドキュメントを保存する
        pdf.saveToFile("空白ページの削除.pdf");
    }

    //画像が空白かどうかを検出する
    public static boolean isBlankImage(BufferedImage image)
    {
        BufferedImage bufferedImage = image;

        Color pixel;
        for (int i = 0; i < bufferedImage.getWidth(); i++)
        {
            for (int j = 0; j < bufferedImage.getHeight(); j++)
            {
                pixel = new Color(bufferedImage.getRGB(i, j));
                if (pixel.getRed() < 240 || pixel.getGreen() < 240 || pixel.getBlue() < 240)
                {
                    return false;
                }
            }
        }
        return true;
    }
}

Java:PDF から空のページを検索して削除する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Read 848 times