" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java提取pdf對(duì)應(yīng)的目錄及頁(yè)碼實(shí)踐

 更新時(shí)間:2025年09月30日 08:52:25   作者:萬(wàn)能的小帥  
這篇文章主要介紹了java提取pdf對(duì)應(yīng)的目錄及頁(yè)碼實(shí)踐,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

java提取pdf對(duì)應(yīng)目錄及頁(yè)碼

添加依賴

 <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.24</version>
        </dependency>

代碼

public static void main(String[] args) throws IOException {
//        File file = new File("E:\\navicat.pdf");
        File file = new File("C:\\Users\\msi\\Desktop\\max.pdf");
        PDDocument document = PDDocument.load(file);


        // 獲取PDF文件的結(jié)構(gòu)樹(shù)根對(duì)象
//        PDStructureTreeRoot structureTree = document.getDocumentCatalog().getStructureTreeRoot();

        // 獲取PDF文件的文檔目錄對(duì)象
        PDDocumentOutline documentOutline = document.getDocumentCatalog().getDocumentOutline();

        // 輸出目錄內(nèi)容
        if (documentOutline != null) {

            printOutline(documentOutline, "",0);
        }


        // 創(chuàng)建PDFTextStripper對(duì)象,用于提取文本
//        PDFTextStripper pdfStripper = new PDFTextStripper();
//        // 提取文本
//        String text = pdfStripper.getText(document);
//        // 輸出文本內(nèi)容
//        System.out.println(text);

        // 關(guān)閉PDDocument對(duì)象
        document.close();

    }

    // 遞歸輸出目錄內(nèi)容
    private static void printOutline(PDOutlineNode documentOutline, String indent,int i) throws IOException {
        PDOutlineItem item = documentOutline.getFirstChild();
        i++;
        indent = indent + "    ";
        while (item != null){
            //        PDPageDestination destination = (PDPageDestination) item.getDestination();
//        int pageNumber = destination.retrievePageNumber();

            int pages = 0;
            if(item.getDestination() instanceof PDPageDestination){
                PDPageDestination pd = (PDPageDestination) item.getDestination();
                pages = pd.retrievePageNumber() + 1;
            }
            if (item.getAction()  instanceof PDActionGoTo) {
                PDActionGoTo gta = (PDActionGoTo) item.getAction();
                if (gta.getDestination() instanceof PDPageDestination) {
                    PDPageDestination pd = (PDPageDestination) gta.getDestination();
                    pages = pd.retrievePageNumber() + 1;
                }
            }
            System.out.println("------" +indent + item.getTitle() + "----"+pages+"   層級(jí):"+i );
            // 遞歸處理子項(xiàng)
            printOutline(item, indent ,i);
//        獲取同級(jí)
            item= item.getNextSibling();
        }

    }

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中final、static關(guān)鍵字與方法的重寫和繼承易錯(cuò)點(diǎn)整理

    Java中final、static關(guān)鍵字與方法的重寫和繼承易錯(cuò)點(diǎn)整理

    這篇文章主要給大家介紹了關(guān)于Java中final、static關(guān)鍵字與方法的重寫和繼承易錯(cuò)點(diǎn)的相關(guān)資料,在Java編程中final關(guān)鍵字用于限制方法或類的進(jìn)一步修改,final方法不能被子類重寫,而static方法不可被重寫,只能被遮蔽,需要的朋友可以參考下
    2024-10-10
  • J2EE中的struts2表單細(xì)節(jié)處理

    J2EE中的struts2表單細(xì)節(jié)處理

    這篇文章主要介紹了J2EE中的struts2表單細(xì)節(jié)處理的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • java8使用Stream API方法總結(jié)

    java8使用Stream API方法總結(jié)

    在本篇文章里小編給大家分享了關(guān)于java8使用Stream API方法相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-04-04
  • 簡(jiǎn)單實(shí)現(xiàn)java數(shù)獨(dú)游戲

    簡(jiǎn)單實(shí)現(xiàn)java數(shù)獨(dú)游戲

    這篇文章主要教大家如何簡(jiǎn)單實(shí)現(xiàn)java數(shù)獨(dú)游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • java編寫Http服務(wù)器下載工具

    java編寫Http服務(wù)器下載工具

    這篇文章主要介紹了java編寫Http服務(wù)器下載工具的方法,工具很簡(jiǎn)單,功能也很簡(jiǎn)單,代碼就更簡(jiǎn)潔了,卻非常實(shí)用,有需要的小伙伴參考下吧。
    2015-03-03
  • Java源碼解析HashMap的tableSizeFor函數(shù)

    Java源碼解析HashMap的tableSizeFor函數(shù)

    今天小編就為大家分享一篇關(guān)于Java源碼解析HashMap的tableSizeFor函數(shù),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • Java8中Stream使用的一個(gè)注意事項(xiàng)

    Java8中Stream使用的一個(gè)注意事項(xiàng)

    最近在工作中發(fā)現(xiàn)了對(duì)于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個(gè)非常重要的注意點(diǎn),所以這篇文章主要給大家介紹了關(guān)于Java8中Stream使用過(guò)程中的一個(gè)注意事項(xiàng),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Java消息隊(duì)列Kafka的簡(jiǎn)單概述

    Java消息隊(duì)列Kafka的簡(jiǎn)單概述

    這篇文章主要介紹了Java消息隊(duì)列Kafka的簡(jiǎn)單概述,消息系統(tǒng)負(fù)責(zé)將數(shù)據(jù)從一個(gè)應(yīng)用程序傳輸?shù)搅硪粋€(gè)應(yīng)用程序,應(yīng)用程序可以專注于數(shù)據(jù),不擔(dān)心如何共享它,需要的朋友可以參考下
    2023-07-07
  • java控制臺(tái)輸出版多人聊天室

    java控制臺(tái)輸出版多人聊天室

    這篇文章主要為大家詳細(xì)介紹了java控制臺(tái)輸出版多人聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 淺談shiro的SecurityManager類結(jié)構(gòu)

    淺談shiro的SecurityManager類結(jié)構(gòu)

    下面小編就為大家?guī)?lái)一篇淺談shiro的SecurityManager類結(jié)構(gòu)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07

最新評(píng)論

河北省| 灯塔市| 壶关县| 宁明县| 扶沟县| 溧水县| 剑河县| 十堰市| 绥阳县| 广饶县| 都兰县| 驻马店市| 共和县| 荥阳市| 阳曲县| 洪泽县| 富锦市| 华容县| 德兴市| 揭西县| 大港区| 灵台县| 年辖:市辖区| 平度市| 芦溪县| 都昌县| 高唐县| 明星| 洪江市| 泗洪县| 丰镇市| 吉林省| 饶平县| 临泉县| 灵宝市| 河源市| 阳山县| 绩溪县| 丰台区| 十堰市| 博兴县|