pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tilman Hausherr <THaush...@t-online.de>
Subject Re: outline pagedestination problem
Date Sun, 16 Dec 2018 08:48:46 GMT
Am 15.12.2018 um 21:46 schrieb Tilman Hausherr:
>
> However all this means that I the example code should be improved to 
> include named destinations. 


The example has now been improved, here's the new method. But you using 
findDestinationPage() is fine too.


     public void printBookmark(PDDocument document, PDOutlineNode 
bookmark, String indentation) throws IOException
     {
         PDOutlineItem current = bookmark.getFirstChild();
         while( current != null )
         {
             // one could also use current.findDestinationPage(document) 
to get the page number,
             // but this example does it the hard way to explain the 
different types
             // Note that bookmarks can also do completely different 
things, e.g. link to a website,
             // or to an external file. This example focuses on internal 
pages.

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

" + (pd.retrievePageNumber() + 1));
                 }
             }
             else if (current.getDestination() != null)
             {
                 System.out.println(indentation + "Destination class: " 
+ current.getDestination().getClass().getSimpleName());
             }

             if (current.getAction() instanceof PDActionGoTo)
             {
                 PDActionGoTo gta = (PDActionGoTo) current.getAction();
                 if (gta.getDestination() instanceof PDPageDestination)
                 {
                     PDPageDestination pd = (PDPageDestination) 
gta.getDestination();
                     System.out.println(indentation + "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(indentation + "Destination

page: " + (pd.retrievePageNumber() + 1));
                     }
                 }
                 else
                 {
                     System.out.println(indentation + "Destination 
class2: " + gta.getDestination().getClass().getSimpleName());
                 }
             }
             else if (current.getAction() != null)
             {
                 System.out.println(indentation + "Action class: " + 
current.getAction().getClass().getSimpleName());
             }
             System.out.println( indentation + current.getTitle() );
             printBookmark( document, current, indentation + "    " );
             current = current.getNextSibling();
         }
     }
}


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: users-help@pdfbox.apache.org


Mime
View raw message