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
    }
}

参考文章

相关推荐
宵时待雨8 分钟前
C++笔记归纳13:map & set
开发语言·数据结构·c++·笔记·算法
xiangpanf10 分钟前
PHP与Vue:前后端技术深度对比
开发语言·vue.js·php
怀旧诚子1 小时前
timeshift之Fedora43设置,已在VM虚拟机验证,待真机验证。
java·服务器·数据库
1104.北光c°1 小时前
滑动窗口HotKey探测机制:让你的缓存TTL更智能
java·开发语言·笔记·程序人生·算法·滑动窗口·hotkey
for_ever_love__2 小时前
Objective-C学习 NSSet 和 NSMutableSet 功能详解
开发语言·学习·ios·objective-c
zzh940772 小时前
2026年AI文件上传功能实战:聚合站处理图片、PDF、PPT全指南
人工智能·pdf·powerpoint
云原生指北4 小时前
GitHub Copilot SDK 入门:五分钟构建你的第一个 AI Agent
java
似水明俊德8 小时前
02-C#.Net-反射-面试题
开发语言·面试·职场和发展·c#·.net
Leinwin8 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
薛定谔的悦8 小时前
MQTT通信协议业务层实现的完整开发流程
java·后端·mqtt·struts