Java實現(xiàn)刪除PDF中指定頁面
對PDF頁面的增刪通常需要借助專門的工具,而這些工具一般需要付費才能使用。那么我們可以通過Java代碼免費實現(xiàn)這一功能嗎?答案是肯定的。這篇文章就教大家如何使用一個免費的國產(chǎn)Java庫來刪除PDF中的指定頁面或者刪除PDF中的空白頁。
使用Java快速刪除PDF中的指定頁面
1. 首先,我們需要先將免費庫 Free Spire.PDF for Java 添加到Java項目中。下載后手動導(dǎo)入jar或者通過Maven倉庫安裝都可。
2. 創(chuàng)建一個Java類,并導(dǎo)入所需的類。
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);
//保存結(jié)果文件
pdf.saveToFile("刪除PDF頁面.pdf");
pdf.close();
}
}使用Java自動查找并刪除PDF中的空白頁面
1. 安裝免費庫 Free Spire.PDF for Java 后,新建一個Java類,并導(dǎo)入如下類:
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) 如果不是完全空白的頁面,需要先將這些頁面轉(zhuǎn)為圖片,然后再自定義一個 isBlankImage() 方法判斷轉(zhuǎn)換出的圖片是否為空白圖片,如果是,再刪除空白圖片所在的頁面。
4. 刪除所有空白頁后,將PDF文檔保存保存至指定文件路徑。
具體實現(xiàn)代碼:
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頁面轉(zhuǎn)換為圖片
image = pdf.saveAsImage(i, PdfImageType.Bitmap);
//檢測轉(zhuǎn)換后的圖片是否為空白圖片
if (isBlankImage(image))
{
//移除空白圖片所在頁面
pdf.getPages().remove(page);
}
}
}
//保存結(jié)果文件
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í)行后:

到此這篇關(guān)于Java實現(xiàn)刪除PDF中指定頁面的文章就介紹到這了,更多相關(guān)Java刪除PDF頁面內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot獲取Request和Response方法代碼解析
這篇文章主要介紹了SpringBoot獲取Request和Response方法代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11
mybatisPlus中apply的使用以進行聯(lián)表等復(fù)雜sql語句詳解
在MyBatis-Plus中,`apply()`方法可以用于添加任意的SQL片段,包括聯(lián)表查詢,使用`apply()`方法的好處是可以直接添加原生的SQL片段,而不受MyBatis-Plus提供的常規(guī)查詢條件構(gòu)建方法的限制,但是,使用`apply()`方法需要注意安全性和性能問題2025-03-03
Java命令行參數(shù)解析工具jcommander詳解
這篇文章主要為大家介紹了Java命令行參數(shù)解析工具jcommander命令詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09
Spring Boot Admin監(jiān)控服務(wù)如何使用
這篇文章主要介紹了Spring Boot Admin監(jiān)控服務(wù)如何使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04
Spring AOP方法內(nèi)部調(diào)用不生效的解決方案
最近有個需求,統(tǒng)計某個方法的調(diào)用次數(shù),開始使用 Spring AOP 實現(xiàn),后來發(fā)現(xiàn)當方法被內(nèi)部調(diào)用時,切面邏輯將不會生效,所以本文就給大家介紹了Spring AOP方法內(nèi)部調(diào)用不生效的解決方案,需要的朋友可以參考下2025-01-01

