• 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 文档保存保存至指定文件路径。

     

    下面是完整代码,比较简单:

    1. import com.spire.pdf.*;
    2. public class DeletePage {
    3. public static void main(String[] args) {
    4. //创建PdfDocument对象
    5. PdfDocument pdf = new PdfDocument();
    6. //加载PDF文档
    7. pdf.loadFromFile("示例.pdf");
    8. //删除第一页
    9. pdf.getPages().removeAt(0);
    10. //保存结果文件
    11. pdf.saveToFile("删除PDF页面.pdf");
    12. pdf.close();
    13. }
    14. }

    通过指定页面的索引,我们可以删除PDF中任何不需要的页面,从而实现轻松管理PDF文档。

    使用Java自动查找并删除PDF中的空白页面:

    1. 安装免费库 Free Spire.PDF for Java 后,新建一个Java类,并导入如下类:

    1. import com.spire.pdf.PdfDocument;
    2. import com.spire.pdf.PdfPageBase;
    3. import com.spire.pdf.graphics.PdfImageType;

    2. 通过 PdfDocument 类的 loadFromFile() 方法加载PDF文档。

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

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

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

    4. 删除所有空白页后,将PDF文档保存保存至指定文件路径。

    具体实现代码:

    1. import com.spire.pdf.PdfDocument;
    2. import com.spire.pdf.PdfPageBase;
    3. import com.spire.pdf.graphics.PdfImageType;
    4. import java.awt.*;
    5. import java.awt.image.BufferedImage;
    6. public class removeBlankPages {
    7. public static void main(String []args){
    8. //创建PdfDocument对象
    9. PdfDocument pdf = new PdfDocument();
    10. //加载PDF文件
    11. pdf.loadFromFile("空白页.pdf");
    12. BufferedImage image;
    13. //遍历PDF中的所有页面
    14. for(int i = pdf.getPages().getCount()-1; i>=0; i--)
    15. {
    16. PdfPageBase page = pdf.getPages().get(i);
    17. //检测是否为空白页面
    18. if(page.isBlank())
    19. {
    20. //移除完全空白的页面
    21. pdf.getPages().remove(page);
    22. }
    23. else
    24. {
    25. //将PDF页面转换为图片
    26. image = pdf.saveAsImage(i, PdfImageType.Bitmap);
    27. //检测转换后的图片是否为空白图片
    28. if (isBlankImage(image))
    29. {
    30. //移除空白图片所在页面
    31. pdf.getPages().remove(page);
    32. }
    33. }
    34. }
    35. //保存结果文件
    36. pdf.saveToFile("删除空白页.pdf");
    37. }
    38. //检测图片是否为空白图片
    39. public static boolean isBlankImage(BufferedImage image)
    40. {
    41. BufferedImage bufferedImage = image;
    42. Color pixel;
    43. for (int i = 0; i < bufferedImage.getWidth(); i++)
    44. {
    45. for (int j = 0; j < bufferedImage.getHeight(); j++)
    46. {
    47. pixel = new Color(bufferedImage.getRGB(i, j));
    48. if (pixel.getRed() < 240 || pixel.getGreen() < 240 || pixel.getBlue() < 240)
    49. {
    50. return false;
    51. }
    52. }
    53. }
    54. return true;
    55. }
    56. }

    PdfPageBase.isBlank() 方法无法检测出包含白色图片的页面,所以需要自定义一个方法来检测这些空白图片,这样才能删除PDF文档中的所有空白页。

    代码执行前:

    执行后:

     

  • 相关阅读:
    藻红蛋白/牛血清蛋白/β2-微球蛋白修饰二氧化硅微球偶联免疫球蛋白(IgG)的制备
    NSTimer 滑动导致失效
    C# 转义字符
    ES6基础5
    c# 字符串格式化日期时间
    9月总共面试34次,我人麻了....
    uniapp快速入门系列(1)- 概述与基础知识
    【C#】典型的 C# 项目使用 Visual Studio 编译所产生的文件格式和文件夹
    FPGA基础(数字电路)
    【Web前端入门】CSS知识详解——附源码
  • 原文地址:https://blog.csdn.net/Eiceblue/article/details/134423585