對PDF頁面的增刪通常需要藉助專門的工具,而這些工具一般需要付費才能使用。那麼我們可以通過Java代碼免費實現這一功能嗎?答案是肯定的。這篇文章就教大家如何使用一個免費的國產Java庫來刪除PDF中的指定頁面或者刪除PDF中的空白頁。 使用Java快速刪除PDF中的指定頁面 1. 首先,我們需要先將 ...
對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文檔中的所有空白頁。
代碼執行前:
執行後: