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

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

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

2. 创建一个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) { //创建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){ //创建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文档中的所有空白页。

代码执行前:

执行后:

Java 删除PDF页面 (免费工具分享)的更多相关文章

  1. JAVA 添加、修改和删除PDF书签

    当阅读篇幅较长的PDF文档时,为方便我们再次阅读时快速定位到上一次的阅读位置,可以插入一个书签进行标记:此外,对于文档中已有的书签,我们也可以根据需要进行修改或者删除等操作.本篇文章将通过Java编程 ...

  2. PDF中的空白页面怎么删除,PDF页面删除技巧

    在Word中想要删除其中一页文档的怎么办?直接打开就可以删除了,那么我们如何删除PDF其中几页呢?下面小编就来告诉大家PDF删除页面跟空白页面的方法.想要删除PDF文档中的页面,可以使用PDF编辑器, ...

  3. Java添加、提取、替换和删除PDF图片

    (一)简介 这篇文章将介绍在Java中添加.提取.删除和替换PDF文档中的图片. 工具使用: Free Spire.PDF for JAVA 2.4.4(免费版) Intellij IDEA Jar包 ...

  4. Java 添加、替换、删除PDF中的图片

    概述 本文介绍通过java程序向PDF文档添加图片,以及替换和删除PDF中已有的图片.另外,关于图片的操作还可参考设置PDF 图片背景.设置PDF图片水印.读取PDF中的图片.将PDF保存为图片等文章 ...

  5. 媳妇儿让我给她找一个PDF转word免费工具,找了半天我决定给她写一个出来^-^

    ​ 之前我媳妇儿让我给她找一个PDF转WORD的免费工具,在网上找了半天发现要不就是收费,要不就是转化的格式混乱.既然网上不能找到好用的免费工具那就直接来写一个吧.人生苦短,我用python. 万能的 ...

  6. 【干货】微信场景之H5页面制作免费工具大集合

    营销代有手段出,各领风骚数百天.要说现在哪些营销方式最能传播,屡屡刷爆朋友圈的H5页面肯定就是首当其冲的,提到H5页面,就立马想到"围住神经猫",上线微信朋友圈3天的时间便创造了用 ...

  7. 如何通过Java应用程序添加或删除 PDF 中的附件

    当我们在制作PDF文件或者PPT演示文稿的时候,为了让自己的文件更全面详细,就会在文件中添加附件.并且将相关文档附加到 PDF 可以方便文档的集中管理和传输.那么如何添加或删除 PDF 中的附件呢?别 ...

  8. java 用PDFBox 删除 PDF文件中的某一页

    依赖: <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox-app ...

  9. java如何实现批量删除pdf指定的页数

    依赖: <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox-app ...

  10. 真正免费,不限页数的PDF转Word工具

    真正免费,不限页数的PDF转Word工具 我们知道PDF转Word工具非常多,但大部分都有各种限制,限大小,限页数,加水印等等. 这其中绝大部分其实并不能做到格式完全一样,遇到图片更是直接傻了. 我们 ...

随机推荐

  1. CentOS7系统初始化个人配置

    以下内容为个人最小化安装后的配置步骤 更换yum源为阿里云 yum install -y epel-release lrzsz wget yum-axelget mv /etc/yum.repos.d ...

  2. windows访问linux分区文件

    正常情况下,linux可以访问windows系统的文件,而要想在windows下访问linux文件,需要借助第三方软件. 常用的有以下几款: 1.Linux Reader 2.Ext2 IFS 3.E ...

  3. 大怨种的pwn的wp

    0x01 pwnable_echo1 军训几天加暑假的活 from pwn import * context(os='linux', arch='amd64', log_level='debug') ...

  4. 使用Java来开发物联网应用

    这是Hello, Lithosphere Tutorials系列教程中的其中一篇. 感觉介绍用C/C++,用Python来开发物联网应用的文章比较多,用Java来做物联网的文章比较少. 这篇文章,介绍 ...

  5. 为何每个开发者都在谈论Go?

    本文深入探讨了Go语言的多个关键方面,从其简洁的语法.强大的并发支持到出色的性能优势,进一步解析了Go在云原生领域的显著应用和广泛的跨平台支持.文章结构严谨,逐一分析了Go语言在现代软件开发中所占据的 ...

  6. 运用手机运营商二要素Api接口,守护您的账户和隐私,让您安心使用!

    随着移动互联网的普及,我们的生活离不开手机,手机成为了我们生活中不可或缺的一部分.但是随着移动支付的普及,手机支付在我们的生活中也变得越来越重要.手机支付是一种方便快捷的支付方式,但是也存在一些安全隐 ...

  7. 回归克里格、普通克里格插值在ArcGIS中的实现

      本文介绍基于ArcMap软件,实现普通克里格.回归克里格方法的空间插值的具体操作. 目录 1 背景知识准备 2 回归克里格实现 2.1 采样点与环境变量提取 2.2 子集要素划分 2.3 异常值提 ...

  8. 安卓APK加固工具 如何进行实名认证购买和激活

    安卓APK资源混淆加密重签名工具 价格表 授权时长 价格 1小时 49 1天 99 1个月 199 1个季度 399 半年 599 1年 799 付费版功能 功能点 免费版 付费版 去除广告信息 × ...

  9. 【matplotlib基础】--几何图形

    除了绘制各类分析图形(比如柱状图,折线图,饼图等等)以外,matplotlib 也可以在画布上任意绘制各类几何图形.这对于计算机图形学.几何算法和计算机辅助设计等领域非常重要. matplitlib ...

  10. C++高精度算法

    文章结尾有惊喜 在 C++ 中,unsigned long long最大只能表示到2^64-1=18446744073709551615264−1=18446744073709551615 而有些题目 ...