Java:获取PDF文件的总页数

引入依赖

xml 复制代码
<!--pdf-->
<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.24</version>
</dependency>

代码工具类

java 复制代码
package com.example.util;

import org.apache.pdfbox.pdmodel.PDDocument;

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;

/**
 * PDF工具类
 */
public class PdfUtil {
    /**
     * 获取PDF文件的总页数
     *
     * @param pdfUrl
     * @return
     */
    public static int getPdfTotalPage(String pdfUrl) {

        if (pdfUrl == null || "".equals(pdfUrl)) {
            return 0;
        }

        int pages = 0;

        URL url = null;
        InputStream inputStream = null;
        PDDocument pdDocument = null;

        // 尝试打开文件流
        try {
            url = new URL(pdfUrl);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        if (url != null) {
            try {
                inputStream = url.openStream();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        // 读取pdf的页数
        if (inputStream != null) {
            try {
                pdDocument = PDDocument.load(inputStream);
                pages = pdDocument.getNumberOfPages();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        // 善后工作
        if (pdDocument != null) {
            try {
                pdDocument.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        if (inputStream != null) {
            try {
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        return pages;
    }
}

测试类

java 复制代码
package com.example.util;

import org.junit.jupiter.api.Test;

import java.io.IOException;

public class PdfUtilTest {
    @Test
    public void getPdfTotalPage() throws IOException {
        String pdfUrl = "https://pdf.dfcfw.com/pdf/H3_AP202402231623204056_1.pdf?1708699798000.pdf";
        int pdfTotalPage = PdfUtil.getPdfTotalPage(pdfUrl);
        System.out.println(pdfTotalPage); // 17
    }
}

参考文章

相关推荐
云泽野10 分钟前
【Java|集合类】list遍历的6种方式
java·python·list
二进制person37 分钟前
Java SE--方法的使用
java·开发语言·算法
OneQ6661 小时前
C++讲解---创建日期类
开发语言·c++·算法
小阳拱白菜2 小时前
java异常学习
java
码农不惑2 小时前
2025.06.27-14.44 C语言开发:Onvif(二)
c语言·开发语言
FrankYoou3 小时前
Jenkins 与 GitLab CI/CD 的核心对比
java·docker
麦兜*3 小时前
Spring Boot启动优化7板斧(延迟初始化、组件扫描精准打击、JVM参数调优):砍掉70%启动时间的魔鬼实践
java·jvm·spring boot·后端·spring·spring cloud·系统架构
Coding小公仔3 小时前
C++ bitset 模板类
开发语言·c++
KK溜了溜了3 小时前
JAVA-springboot 整合Redis
java·spring boot·redis
小赖同学啊4 小时前
物联网数据安全区块链服务
开发语言·python·区块链