Java实现删除PDF中指定页面
对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中指定页面的文章就介绍到这了,更多相关Java删除PDF页面内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
logback的FileAppender文件追加模式和冲突检测解读
这篇文章主要为大家介绍了logback的FileAppender文件追加模式和冲突检测解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-10-10SpringBoot利用@Retryable注解实现接口重试
本文主要介绍了springboot如何利用@Retryable注解实现接口重试功能,文中示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-06-06Java TreeMap升序|降序排列和按照value进行排序的案例
这篇文章主要介绍了Java TreeMap升序|降序排列和按照value进行排序的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-10-10
最新评论