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

参考文章

相关推荐
狗凯之家源码网23 分钟前
微博图床 PHP 系统搭建与实战应用指南
android·开发语言·php
自强的小白1 小时前
核心功能(Service接口)
java·mybatis
乌暮2 小时前
深入理解 Java 泛型:把「万能盒子」用对、用稳
java·开发语言·后端·学习
大连好光景2 小时前
RAG系统中,如何处理PDF文档中的表格?
pdf·ai-native
大猫和小黄2 小时前
深入理解 Java Optional:从设计哲学到工程实战
java
数据库百宝箱2 小时前
rum&gin索引对比
java·数据库·gin
2601_962218612 小时前
C语言中三种库的编译和使用方法
开发语言·c++
传奇开心果编程3 小时前
中庸、有容、破执:仓颉编程语言的中华智慧结晶——三重哲学境界思辨
开发语言·华为·开源·软件工程
yychen_java3 小时前
第六篇:Spring AI 实战:将 Java 业务接口封装成企业级 MCP Server
java·人工智能·spring