java - 如何使用 Apache PdfBox 获取 PDF 文件中的书签页码?

标签 java pdfbox

我已经获得了书签,但我需要知道这些书签在 PDF 中的位置。 (书签 1 = 第 1 页,...,书签 54= 第 72 页等。)。有人可以帮助我吗?感谢您的支持。

PDDocument doc = PDDocument.load( ... );
PDDocumentOutline root = doc.getDocumentCatalog().getDocumentOutline();
PDOutlineItem item = root.getFirstChild();
  while( item != null )
  {
      System.out.println( "Item:" + item.getTitle() );
      item = item.getNextSibling();
  }

最佳答案

摘自源代码下载中的 PrintBookmarks.java 示例:

if (item.getDestination() instanceof PDPageDestination)
{
    PDPageDestination pd = (PDPageDestination) item.getDestination();
    System.out.println("Destination page: " + (pd.retrievePageNumber() + 1));
}
else if (item.getDestination() instanceof PDNamedDestination)
{
    PDPageDestination pd = document.getDocumentCatalog().findNamedDestinationPage((PDNamedDestination) item.getDestination());
    if (pd != null)
    {
        System.out.println("Destination page: " + (pd.retrievePageNumber() + 1));
    }
}

if (item.getAction() instanceof PDActionGoTo)
{
    PDActionGoTo gta = (PDActionGoTo) item.getAction();
    if (gta.getDestination() instanceof PDPageDestination)
    {
        PDPageDestination pd = (PDPageDestination) gta.getDestination();
        System.out.println("Destination page: " + (pd.retrievePageNumber() + 1));
    }
    else if (gta.getDestination() instanceof PDNamedDestination)
    {
        PDPageDestination pd = document.getDocumentCatalog().findNamedDestinationPage((PDNamedDestination) gta.getDestination());
        if (pd != null)
        {
            System.out.println("Destination page: " + (pd.retrievePageNumber() + 1));
        }
    }
}

关于java - 如何使用 Apache PdfBox 获取 PDF 文件中的书签页码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56736874/

相关文章:

java - PDFBox PDFMergerUtility : how do I tell which sources failed?

java - 如何在没有数字签名的情况下添加时间戳

java - 使用 PDFBox 在背景中创建渐变

java - 我读到,当你声明两个 vector 时,语句 b=a 没有达到我们想要的效果。但是我写了一个小程序并且可以运行

java - 在 Android/Java 中使用 Canvas 在图像上绘图

Java:读取文件然后将数据写入文本文件

java - PDFBox在创建文档时添加背景

java - 识别字符串有数字

java - PostgreSQL 不关闭连接

java - 将 PDF 评论提取为 HTML