Thank you SO MUCH, Adam. With your advice, and some tinkering with PDFBox, I was able to get at and manipulate the named destinations.
On Tue, Jun 1, 2010 at 3:23 PM, <[email protected]> wrote: > Kevin, > > Section 7.7.2 of the PDF Spec (I'm referencing version 1.7) goes over the > Document catalog and table 20 points you to section 12.3.2.3 for "Named > Destinations"). Section 12.3.2.3 explains that "the correspondence > between name objects and destinations shall be defined by the Dests entry > in the document catalogue (see 7.7.2, "Document Catalog")." So, per the > spec, the answer lies in the document catalog. > > Table 28 defines what entries are allowed in the catalog dictionary. The > "Document Outline" (i.e. key: "Outlines"), which are also known as > bookmarks, are what you are looping through in your code. So that's why > you're getting bookmarks and not named destinations. You don't want > document.getDocumentCatalog().getDocumentOutline() but you do want > document.getDocumentCatalog(). > > Like I said before, I haven't actually dealt with named destinations, nor > have I even seen a document which uses them, so I don't know how the > "Dests" key works. However, it should be pretty easy to figure if you > take a look at a PDF in vi, Notepad++, or any other quality editor. Once > you know what you're looking for, it's just a matter of looking at things > in PDDocumentCatalog to find it. > > ---- > Thanks, > Adam > > > > > > From: > Kevin Brown <[email protected]> > To: > [email protected] > Date: > 05/25/2010 11:11 > Subject: > Re: getting page numbers of named destinations > > > > Thanks much! I'm trying this but it seems to pull in bookmarks, not named > destinations. Am I missing something? > > > On Sat, May 22, 2010 at 11:15 AM, Andreas Lehmkuehler > <[email protected]>wrote: > > > Hi > > > > Kevin Brown schrieb: > > > > I can't seem to get this done with pdfbox. There doesn't seem to be a > way > >> to > >> get the page number from the context of the named destination. Am I > wrong? > >> Anyone got any sample code for working with named destinations? > >> > > If you have a look at the mentioned example you find some code like > this: > > > > PDDocumentOutline > > bookmarks=document.getDocumentCatalog().getDocumentOutline(); > > PDOutlineItem item = bookmarks.getFirstChild().getNextSibling(); > > > > And the PDOutlineItem class provides a method to get the corresponding > > page: > > > > /** > > * This method will attempt to find the page in this PDF document that > this > > outline points to. > > * If the outline does not point to anything then this method will > return > > null. If the outline > > * is an action that is not a GoTo action then this methods will throw > the > > OutlineNotLocationException > > * > > * @param doc The document to get the page from. > > * > > * @return The page that this outline will go to when activated or null > if > > it does not point to anything. > > * @throws IOException If there is an error when trying to find the > page. > > */ > > public PDPage findDestinationPage( PDDocument doc ) throws IOException > > > > I didn't test it, but theoretically it looks like the piece of code you > are > > looking for. > > > > BR > > Andreas Lehmkühler > > > > > > > >> On Wed, May 19, 2010 at 12:45 PM, Kevin Brown <[email protected]> wrote: > >> > >> Thanks. I do need to do that! > >>> > >>> At the moment I'm trying to see if I can get the > >>> GotoSecondBookmarkOnOpen.java sample has any clues... if PDOutlineItem > >>> could refer to a named destination then I may be in business! > >>> > >>> > >>> > >>> On Wed, May 19, 2010 at 11:57 AM, <[email protected]> wrote: > >>> > >>> I haven't dealt with named destinations, but if you get get the > object > >>>> ID > >>>> of the page, you can look up the page number with doc.getPageMap(). > If > >>>> you haven't already, I'd suggest tracing through a PDF with a hex > editor > >>>> (or any good quality text editor will work fine) to find out how > >>>> everything is connected. > >>>> > >>>> ---- > >>>> Thanks, > >>>> Adam > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> From: > >>>> Kevin Brown <[email protected]> > >>>> To: > >>>> [email protected] > >>>> Date: > >>>> 05/19/2010 08:42 > >>>> Subject: > >>>> getting page numbers of named destinations > >>>> > >>>> > >>>> > >>>> Is it possible to, for a PDF, get the named destinations in it, and > find > >>>> out > >>>> what page each is on? It doesn't look like it from my perusal of the > >>>> documentation, but I'm not sure. Seems like you can get the > destination > >>>> names but that's about it. > >>>> > >>>> > >>>> > >>>> ? Click here to submit conditions > >>>> > >>>> This email and any content within or attached hereto from Sun West > >>>> Mortgage Company, Inc. is confidential and/or legally privileged. > The > >>>> information is intended only for the use of the individual or entity > >>>> named > >>>> on this email. If you are not the intended recipient, you are hereby > >>>> notified that any disclosure, copying, distribution or the taking of > any > >>>> action in reliance on the contents of this email information is > strictly > >>>> prohibited, and that the documents should be returned to this office > >>>> immediately by email. Receipt by anyone other than the intended > >>>> recipient is > >>>> not a waiver of any privilege. Please do not include your social > >>>> security > >>>> number, account number, or any other personal or financial > information > >>>> in > >>>> the content of the email. Should you have any questions, please call > >>>> (800) > >>>> 453 7884. > >>>> > >>> > >>> > >>> > >> > > > > > > ? Click here to submit conditions > > This email and any content within or attached hereto from Sun West > Mortgage Company, Inc. is confidential and/or legally privileged. The > information is intended only for the use of the individual or entity named > on this email. If you are not the intended recipient, you are hereby > notified that any disclosure, copying, distribution or the taking of any > action in reliance on the contents of this email information is strictly > prohibited, and that the documents should be returned to this office > immediately by email. Receipt by anyone other than the intended recipient is > not a waiver of any privilege. Please do not include your social security > number, account number, or any other personal or financial information in > the content of the email. Should you have any questions, please call (800) > 453 7884. >

