最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實現(xiàn)刪除PDF中指定頁面

 更新時間:2023年11月20日 16:10:51   作者:E-iceblue  
這篇文章主要為大家詳細介紹了如何使用一個免費的國產(chǎn)Java庫來刪除PDF中的指定頁面或者刪除PDF中的空白頁,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

對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方法代碼解析

    這篇文章主要介紹了SpringBoot獲取Request和Response方法代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • Java中的split使用方法詳解

    Java中的split使用方法詳解

    這篇文章主要介紹了Java中的split使用方法詳解,Java 中 String 的 split 方法可以將字符串根據(jù)指定的間隔進行切割,經(jīng)過切割后得到的返回值是一個字符串數(shù)組,需要的朋友可以參考下
    2023-10-10
  • mybatisPlus中apply的使用以進行聯(lián)表等復(fù)雜sql語句詳解

    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詳解

    這篇文章主要為大家介紹了Java命令行參數(shù)解析工具jcommander命令詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Spring Boot Admin監(jiān)控服務(wù)如何使用

    Spring Boot Admin監(jiān)控服務(wù)如何使用

    這篇文章主要介紹了Spring Boot Admin監(jiān)控服務(wù)如何使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Java中實現(xiàn)線程的超時中斷方法實例

    Java中實現(xiàn)線程的超時中斷方法實例

    之前在使用Java實現(xiàn)熔斷降級組件的時候,需要實現(xiàn)接口請求的超時中斷,通過查找相關(guān)資料了解了相關(guān)的方法,下面這篇文章主要給大家介紹了關(guān)于Java中實現(xiàn)線程的超時中斷的相關(guān)資料,需要的朋友可以參考下
    2018-06-06
  • Java Bean的作用域,生命周期和注解

    Java Bean的作用域,生命周期和注解

    這篇文章主要介紹了淺談Spring中Bean的作用域,生命周期和注解,具有一定借鑒價值,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-11-11
  • Spring AOP方法內(nèi)部調(diào)用不生效的解決方案

    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
  • 10種簡單的Java性能優(yōu)化

    10種簡單的Java性能優(yōu)化

    你是否正打算優(yōu)化hashCode()方法?是否想要繞開正則表達式?Lukas Eder介紹了很多簡單方便的性能優(yōu)化小貼士以及擴展程序性能的技巧
    2017-11-11
  • mybatis引用其他文件中的sql片段的實現(xiàn)

    mybatis引用其他文件中的sql片段的實現(xiàn)

    Mybatis中也是支持引用其他Mapper文件中的SQL片段的,本文就來介紹一下如何使用,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03

最新評論

竹山县| 阿拉尔市| 铁力市| 东港市| 日土县| 巩留县| 临漳县| 永新县| 松溪县| 峨山| 昭平县| 军事| 酉阳| 陆河县| 涪陵区| 武乡县| 临沭县| 盐山县| 昌乐县| 海口市| 淮阳县| 通化市| 图木舒克市| 祁东县| 云龙县| 大邑县| 东乌| 六安市| 崇阳县| 监利县| 定兴县| 大港区| 华安县| 当涂县| 海城市| 社会| 云和县| 淮阳县| 巴马| 紫金县| 禄丰县|