在我们打印或分享 PDF 文件时,最好先检查一下文件中是否有空白页面。这些空白页面不仅会造成纸张的浪费,还会让我们的文档显得不那么专业。但如果一页一页地翻阅文档,特别是那些比较大的文档,来查找并删除空白页面,会耗费很多时间和精力。我们可以选择使用简单方便的 Spire.PDF for Java 来解决这个问题。本文将展示如何使用 Spire.PDF for Java 通过编程简单快速地找到并删除 PDF 文档中的空白页面。
安装 Spire.PDF for Java
首先,您需要在 Java 程序中添加 Spire.Pdf.jar 文件作为依赖项。JAR 文件可以从此链接下载。如果您使用 Maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而在应用程序中导入 JAR 文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>11.5.2</version>
</dependency>
</dependencies>
查找并移除 PDF 文档中的空白页面
Spire.PDF for Java 提供了 PdfPageBase.isBlank() 方法来检测页面是否为完全空白的页面。但有些看起来空白的页面实际上包含有白色的图片,因此使用 PdfPageBase.isBlank() 方法无法检测出这样的空白页面。因此,我们需要自定义一个 isBlankImage() 方法来与 PdfPageBase.isBlank() 方法共同使用以检测出所有空白页面。
注意:本文所使用的方法需要将 PDF 页面转换为图片并判断图片是否为空白图片来检测空白页面,因此需要申请许可来移除转换出的图片上的评估信息,否则无法正常完成对空白页面地检测。如果你没有许可,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取临时许可。
详细操作步骤如下:
- 创建 PdfDocument类的对象。
- 使用 PdfDocument.loadFromFile()方法载入 PDF 文档。
- 循环遍历 PDF 文档中的页面,并使用 PdfPageBase.isBlank()方法判断页面是否为完全空白的页面。
- 如页面为完全空白,则使用 PdfDocument.getPages().remove()方法删除该页面。
- 如页面不是完全空白的页面,则使用 PdfDocument.saveAsImage()方法将其转换为图片,然后使用自定义的 isBlankImage()方法判断转换出的图片是否为空白图片,最后使用 PdfDocument.getPages().remove()方法删除空白图片所对应的页面。
- 使用 PdfDocument.saveToFile()方法保存结果文档。
- Java
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("C:/Sample.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{//将页面转换为图片 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;}}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。