添加依赖:
<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("C:\\Users\\msi\\Desktop\\max.pdf");
PDDocument document = PDDocument.load(file);
PDDocumentOutline documentOutline = document.getDocumentCatalog().getDocumentOutline();
if (documentOutline != null) {
printOutline(documentOutline, "",0);
}
document.close();
}
private static void printOutline(PDOutlineNode documentOutline, String indent,int i) throws IOException {
PDOutlineItem item = documentOutline.getFirstChild();
i++;
indent = indent + " ";
while (item != null){
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+" 层级:"+i );
printOutline(item, indent ,i);
item= item.getNextSibling();
}
}