Java 刪除PDF頁面 (免費工具分享)

對PDF頁面的增刪通常需要藉助專門的工具,而這些工具一般需要付費才能使用。那麼我們可以通過Java代碼免費實現這一功能嗎?答案是肯定的。這篇文章就教大家如何使用一個免費的國產Java庫來刪除PDF中的指定頁面或者刪除PDF中的空白頁。

 

使用Java快速刪除PDF中的指定頁面

1. 首先,我們需要先將免費庫 Free Spire.PDF for Java 添加到Java項目中。下載後手動導入jar或者通過Maven倉庫安裝都可。

2. 創建一個Java類,並導入所需的類。

import com.spire.pdf.*;

3. 通過 PdfDocument 類的 loadFromFile() 方法加載PDF文檔。

4. 通過索引刪除指定PDF頁面 (頁面的索引從零開始)。

PdfDocument.getPages().removeAt(0); //此爲刪除第一頁

5. 刪除頁面後,將PDF 文檔保存保存至指定文件路徑。

 

下面是完整代碼,比較簡單:

import com.spire.pdf.*;
 
public class DeletePage {
    public static void main(String[] args) {
 
        //創建PdfDocument對象
        PdfDocument pdf = new PdfDocument();
 
        //加載PDF文檔
        pdf.loadFromFile("示例.pdf");
 
        //刪除第一頁
        pdf.getPages().removeAt(0);
 
        //保存結果文件
        pdf.saveToFile("刪除PDF頁面.pdf");
        pdf.close();
    }
}

 

使用Java自動查找並刪除PDF中的空白頁面

1. 安裝免費庫 Free Spire.PDF for Java 後,新建一個Java類,並導入如下類:

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

2. 通過 PdfDocument 類的 loadFromFile() 方法加載PDF文檔。

3. 遍歷PDF中的頁面並通過 PdfPageBase 類的 isBlank() 方法來檢測頁面是否爲空白頁面。

        1) 如果是完全空白的頁面可以使用 remove() 方法直接刪除;

        2) 如果不是完全空白的頁面,需要先將這些頁面轉爲圖片,然後再自定義一個 isBlankImage() 方法判斷轉換出的圖片是否爲空白圖片,如果是,再刪除空白圖片所在的頁面。

4. 刪除所有空白頁後,將PDF文檔保存保存至指定文件路徑。

具體實現代碼:

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("空白頁.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;
    }
}

因 PdfPageBase.isBlank() 方法無法檢測出包含白色圖片的頁面,所以需要自定義一個方法來檢測這些空白圖片,這樣才能刪除PDF文檔中的所有空白頁。

代碼執行前:

執行後:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章