如何通过itext 7获取目标页面的大纲编号

如何通过itext 7获取目标页面的大纲编号,itext,outline,Itext,Outline,我使用itext解析一些pdf文件,只想得到大纲文本和大纲将跳转到的页码 我试着用PDFDestation来获取一些信息,但什么也用不到, 任何机构都可以提供帮助,代码如下: public static void showTitle(PdfOutline outline, StringBuffer stringBuffer) { System.out.println(outline.getTitle()); stringBuffer.append(outline.getTitle

我使用itext解析一些pdf文件,只想得到大纲文本和大纲将跳转到的页码

我试着用PDFDestation来获取一些信息,但什么也用不到, 任何机构都可以提供帮助,代码如下:

public static void showTitle(PdfOutline outline, StringBuffer stringBuffer) {
    System.out.println(outline.getTitle());
    stringBuffer.append(outline.getTitle() + "\n");
    List<PdfOutline> kids = outline.getAllChildren();
    if (kids != null) {
        for (PdfOutline kid : kids) {
            showTitle(kid, stringBuffer);
        }
    }
}

public static void itext_getCatalogs(String pdfPath) {
    try {
        long startTime = System.nanoTime();
        PdfDocument doc = new PdfDocument(new PdfReader(pdfPath));
        int pageCount = doc.getNumberOfPages();
        System.out.printf("pageCount=%d\n", pageCount);

        PdfOutline outlines = doc.getOutlines(false);

        PdfDictionary pdfDictionary = doc.getCatalog().getPdfObject();
        List<PdfOutline> bookmarks = outlines.getAllChildren().get(0).getAllChildren();
        StringBuffer stringBuffer = new StringBuffer();
        for (PdfOutline bookmark : bookmarks) {
            //PdfDestination dest = bookmark.getDestination();
            //Map<String, PdfObject> retMap = new HashMap<String, PdfObject>();
            //PdfObject pdfObject = bookmark.getDestination().getDestinationPage(retMap);
            showTitle(bookmark, stringBuffer);
        }
        doc.close();
        long endTime = System.nanoTime();
        long duration = endTime - startTime;
        System.out.printf("time: %dms\n", duration/1000000);
    }catch (IOException e) {

    }
}
publicstaticvoidshowthile(PdfOutline轮廓,StringBuffer-StringBuffer){
System.out.println(outline.getTitle());
stringBuffer.append(outline.getTitle()+“\n”);
List kids=outline.getAllChildren();
if(kids!=null){
适用于(PdfOutline儿童:儿童){
showTitle(kid、stringBuffer);
}
}
}
公共静态void itext_getCatalogs(字符串pdfPath){
试一试{
long startTime=System.nanoTime();
PdfDocument doc=新PdfDocument(新PDF阅读器(pdfPath));
int pageCount=doc.getNumberOfPages();
System.out.printf(“pageCount=%d\n”,pageCount);
PdfOutline outlines=doc.getOutlines(false);
PdfDictionary PdfDictionary=doc.getCatalog().getPdfObject();
列表书签=outlines.getAllChildren().get(0.getAllChildren();
StringBuffer StringBuffer=新的StringBuffer();
用于(PdfOutline书签:书签){
//pdfdestation dest=bookmark.getDestination();
//Map retMap=newhashmap();
//PdfObject PdfObject=bookmark.getDestination().getDestinationPage(retMap);
showTitle(书签、stringBuffer);
}
doc.close();
long-endTime=System.nanoTime();
长持续时间=结束时间-开始时间;
System.out.printf(“时间:%dms\n”,持续时间/1000000);
}捕获(IOE异常){
}
}

大纲可以将其目标放在
目的地
操作
中。你似乎只看过前一种。您的示例文档大纲可能使用后一个选项?此外,目的地可以包含显式数据或名称,而这些数据或名称又必须查找。在您的注释代码中,您为指定目的地查找提供了一个空地图,这是没有帮助的。谢谢您的回复,我已经处理了。如果您找到了问题的答案,请将其作为答案发布。如果您没有答案,但也对答案不感兴趣,请删除您的问题。