Java 删除PDF页面 (免费工具分享)

对PDF页面的增删通常需要借助专门的工具,而这些工具一般需要付费才能使用。那么我们可以通过Java代码免费实现这一功能吗?答案是肯定的。这篇文章就教大家如何使用一个免费的国产Java库来删除PDF中的指定页面或者删除PDF中的空白页。

使用Java快速删除PDF中的指定页面

  1. 首先,我们需要先将免费库 Free Spire.PDF for Java 添加到Java项目中。下载后手动导入jar或者通过Maven仓库安装都可。

  2. 创建一个Java类,并导入所需的类。

复制代码
import com.spire.pdf.*;
  1. 通过PdfDocument 类的**loadFromFile()**方法加载PDF文档。

  2. 通过索引删除指定PDF页面 (页面的索引从零开始)。

复制代码
PdfDocument.getPages().removeAt(0); //此为删除第一页
  1. 删除页面后,将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;
  1. 通过 PdfDocument 类的loadFromFile() 方法加载PDF文档。

  2. 遍历PDF中的页面并通过PdfPageBase 类的isBlank() 方法来检测页面是否为空白页面。

  1. 如果是完全空白的页面可以使用 remove() 方法直接删除;

  2. 如果不是完全空白的页面,需要先将这些页面转为图片,然后再自定义一个 isBlankImage() 方法判断转换出的图片是否为空白图片,如果是,再删除空白图片所在的页面。

  1. 删除所有空白页后,将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文档中的所有空白页。

代码执行前:

执行后:

相关推荐
m0_7482478018 分钟前
SOA(面向服务架构)全面解析
java·微服务·架构
m0_7401546721 分钟前
Tomcat
java·tomcat
爱敲代码的小冰28 分钟前
【Excel】 Power Query抓取多页数据导入到Excel
android·java·excel
心流时间42 分钟前
[Java基础] JVM常量池介绍(BeanUtils.copyProperties(source, target)中的属性值引用的是同一个对象吗)
java·开发语言·jvm
瑞金彭于晏1 小时前
通俗易懂版 Maven 科普,maven是什么?
java·maven
好看资源平台1 小时前
Java Web开发实战与项目——Spring Boot与Spring Cloud微服务项目实战
java
.猫的树1 小时前
Java集合List快速实现重复判断的10种方法深度解析
java·开发语言·list·集合
littlegirll1 小时前
命令行方式安装KFS同步KES到KADB
java·大数据·数据库
itachi-uchiha1 小时前
深入理解 Linux 中的 last 和 lastb 命令
java·linux·服务器
xiaoyustudiowww2 小时前
JSP + Servlet 实现 AJAX(纯JS版)
java·javascript·servlet