Java實現刪除PDF中指定頁面
對PDF頁面的增刪通常需要借助專門的工具,而這些工具一般需要付費才能使用。那么我們可以通過Java代碼免費實現這一功能嗎?答案是肯定的。這篇文章就教大家如何使用一個免費的國產Java庫來刪除PDF中的指定頁面或者刪除PDF中的空白頁。
使用Java快速刪除PDF中的指定頁面
1. 首先,我們需要先將免費庫 Free Spire.PDF for Java 添加到Java項目中。下載后手動導入jar或者通過Maven倉庫安裝都可。
2. 創(chuàng)建一個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) {
//創(chuàng)建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){
//創(chuàng)建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文檔中的所有空白頁。
代碼執(zhí)行前:

執(zhí)行后:

到此這篇關于Java實現刪除PDF中指定頁面的文章就介紹到這了,更多相關Java刪除PDF頁面內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java Swing中的工具欄(JToolBar)和分割面版(JSplitPane)組件使用案例
這篇文章主要介紹了Java Swing中的工具欄(JToolBar)和分割面版(JSplitPane)組件使用案例,本文直接給出代碼實例和效果截圖,需要的朋友可以參考下2014-10-10
詳解Spring?@Lazy注解為什么能破解死循環(huán)
這篇文章主要來和大家探討一下Spring中的@Lazy注解為什么能破解死循環(huán),文中的示例代碼講解詳細,具有一定的參考價值,需要的可以了解一下2023-07-07
mybatis創(chuàng)建項目報Invalid?bound?statement?(not?found)錯誤解決方法
使用MyBatis能夠幫助我們將SQL語句和Java代碼分離,這篇文章主要給大家介紹了關于mybatis創(chuàng)建項目報Invalid?bound?statement?(not?found)錯誤的解決方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-05-05

