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

参考文章

相关推荐
新知图书几秒前
搭建Spring Boot开发环境
java·spring boot·后端
冰河团队5 分钟前
一个拉胯的分库分表方案有多绝望?整个部门都在救火!
java·高并发·分布式数据库·分库分表·高性能
洛_尘8 分钟前
Java EE进阶:Linux的基本使用
java·java-ee
无限进步_9 分钟前
【C++】电话号码的字母组合:从有限处理到通用解法
开发语言·c++·ide·windows·git·github·visual studio
宸津-代码粉碎机10 分钟前
Spring Boot 4.0虚拟线程实战调优技巧,最大化发挥并发优势
java·人工智能·spring boot·后端·python
MaCa .BaKa13 分钟前
47-心里健康咨询平台/心理咨询系统
java·spring boot·mysql·tomcat·maven·intellij-idea·个人开发
JJay.24 分钟前
Android Kotlin 协程使用指南
android·开发语言·kotlin
csbysj202030 分钟前
jQuery 捕获详解
开发语言
木子欢儿31 分钟前
Docker Hub 镜像发布指南
java·spring cloud·docker·容器·eureka
私人珍藏库37 分钟前
【Windows】PDF超能助手(1.0.13)
windows·pdf·工具·软件·多功能