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)文章
Eclipse 項目出現(xiàn)錯誤(紅色嘆號)解決方法
這篇文章主要介紹了Eclipse 項目出現(xiàn)錯誤(紅色嘆號)解決方法的相關(guān)資料,需要的朋友可以參考下2017-06-06Java Swing中的工具欄(JToolBar)和分割面版(JSplitPane)組件使用案例
這篇文章主要介紹了Java Swing中的工具欄(JToolBar)和分割面版(JSplitPane)組件使用案例,本文直接給出代碼實例和效果截圖,需要的朋友可以參考下2014-10-10詳解Spring?@Lazy注解為什么能破解死循環(huán)
這篇文章主要來和大家探討一下Spring中的@Lazy注解為什么能破解死循環(huán),文中的示例代碼講解詳細(xì),具有一定的參考價值,需要的可以了解一下2023-07-07java調(diào)用shell命令并獲取執(zhí)行結(jié)果的示例
今天小編就為大家分享一篇java調(diào)用shell命令并獲取執(zhí)行結(jié)果的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07mybatis創(chuàng)建項目報Invalid?bound?statement?(not?found)錯誤解決方法
使用MyBatis能夠幫助我們將SQL語句和Java代碼分離,這篇文章主要給大家介紹了關(guān)于mybatis創(chuàng)建項目報Invalid?bound?statement?(not?found)錯誤的解決方法,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05