pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Maruan Sahyoun <sahy...@fileaffairs.de>
Subject Re: bookmark.getDestination is null
Date Sat, 09 Nov 2013 08:32:02 GMT
Hi Sera,

if the bookmarks do nor relate to pages they can not be taken as a hint for splitting.

Is it possible to upload a sample PDF at a public location so we can take a look at a sample
file. Might give us another idea to handle your requirement.

BR
Maruan

Am 08.11.2013 um 17:24 schrieb Sera <news4sera@gmx.de>:

> Well then. I've got another idea.
> Actually, I don't need the exakt pagenumber, but the pagecount of each chapter.
> Is it still possible to devide the PDF by it's bookmarks or would'nt that work as well?
> When I've devided them, I can just make doc.getNumberOfPages(). That works here.
> 
> Am 08.11.2013, 17:19 Uhr, schrieb Gilad Denneboom <gilad.denneboom@gmail.com>:
> 
>> Yes, that could very well be the cause...
>> 
>> 
>> On Fri, Nov 8, 2013 at 4:51 PM, Sera <news4sera@gmx.de> wrote:
>> 
>>> Could it be a problem of latex?
>>> I'm using it do generate the pdf.
>>> 
>>> Am 08.11.2013, 16:40 Uhr, schrieb Sera <news4sera@gmx.de>:
>>> 
>>> 
>>> First, thanks for the code!
>>>> Unfurtanately, I still get a Nullpointer.
>>>> dests.getNames() is null.
>>>> 
>>>> Am 04.11.2013, 13:38 Uhr, schrieb Gilad Denneboom <
>>>> gilad.denneboom@gmail.com>:
>>>> 
>>>> You wrote the following code to do it:
>>>>> 
>>>>>    public static int getPageNumberFromNamedDestination(PDDocument doc,
>>>>> String name) throws IOException {
>>>>>        PDDestinationNameTreeNode dests =
>>>>> doc.getDocumentCatalog().getNames().getDests();
>>>>>        if (dests==null || dests.getNames()==null)
>>>>>            return -1;
>>>>>        Object d = dests.getNames().get(name);
>>>>>        if (d==null)
>>>>>            return -1;
>>>>>        return getPageDestPageNumber(d);
>>>>>    }
>>>>> 
>>>>>    public static int getPageDestPageNumber(Object dest) {
>>>>> 
>>>>>        if (dest instanceof PDPageFitDestination) {
>>>>>            PDPageFitDestination pageFitDestination =
>>>>> (PDPageFitDestination) dest;
>>>>>            return pageFitDestination.findPageNumber();
>>>>>        }
>>>>> 
>>>>>        if (dest instanceof PDPageXYZDestination) {
>>>>>            PDPageXYZDestination pageXYZDestination =
>>>>> (PDPageXYZDestination) dest;
>>>>>            return pageXYZDestination.findPageNumber();
>>>>>        }
>>>>> 
>>>>>        if (dest instanceof PDPageFitWidthDestination) {
>>>>>            PDPageFitWidthDestination fitWidthDestination =
>>>>> (PDPageFitWidthDestination) dest;
>>>>>            return fitWidthDestination.findPageNumber();
>>>>>        }
>>>>> 
>>>>>        if (dest instanceof PDPageFitHeightDestination) {
>>>>>            PDPageFitHeightDestination fitHeightDestination =
>>>>> (PDPageFitHeightDestination) dest;
>>>>>            return fitHeightDestination.findPageNumber();
>>>>>        }
>>>>> 
>>>>>        if (dest instanceof PDPageFitRectangleDestination) {
>>>>>            PDPageFitRectangleDestination pageFitRectangleDestination
=
>>>>> (PDPageFitRectangleDestination) dest;
>>>>>            return pageFitRectangleDestination.findPageNumber();
>>>>>        }
>>>>> 
>>>>>        return -1;
>>>>>    }
>>>>> 
>>>>> 
>>>>> On Sun, Nov 3, 2013 at 1:39 PM, Sera <news4sera@gmx.de> wrote:
>>>>> 
>>>>> I've debugged it and it throws an exception.
>>>>>> 
>>>>>> 
>>>>>> PDDestinationNameTreeNode node = (PDDestinationNameTreeNode)
>>>>>> document.getDocumentCatalog().getStructureTreeRoot().getIDTree();
>>>>>> 
>>>>>> any idea what the correct way is?
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> Am 01.11.2013, 23:47 Uhr, schrieb Sera <news4sera@gmx.de>:
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> is this the right way to get to the treenode?
>>>>>>> 
>>>>>>> Am 31.10.2013, 11:28 Uhr, schrieb Gilad Denneboom <
>>>>>>> gilad.denneboom@gmail.com>:
>>>>>>> 
>>>>>>> If the destination is a PDNamedDestination object, you have to
cast
>>>>>>> it to
>>>>>>> 
>>>>>>>> that class...
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> On Thu, Oct 31, 2013 at 11:24 AM, Sera <news4sera@gmx.de>
wrote:
>>>>>>>> 
>>>>>>>> Do I have to cast Action to another type than ActionGoTo?
I don't
>>>>>>>> see a
>>>>>>>> 
>>>>>>>>> function getNamedDestination() in the suggestions for
my objects.
>>>>>>>>> 
>>>>>>>>> Am 31.10.2013, 10:45 Uhr, schrieb Gilad Denneboom <
>>>>>>>>> gilad.denneboom@gmail.com>:
>>>>>>>>> 
>>>>>>>>> Ah, so your bookmarks are not pointing to page locations
directly,
>>>>>>>>> but
>>>>>>>>> to
>>>>>>>>> 
>>>>>>>>> Named Destinations. This makes things more complex. You
can use
>>>>>>>>>> getNamedDestination() to get the name of the ND the
bookmark is
>>>>>>>>>> pointing
>>>>>>>>>> to. Of course, then you still need to write a function
that looks up
>>>>>>>>>> that
>>>>>>>>>> specific ND in the tree (a PDDestinationNameTreeNode
object) and
>>>>>>>>>> then
>>>>>>>>>> figures out to which page it's pointing to by its
value.
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> On Thu, Oct 31, 2013 at 10:35 AM, Sera <news4sera@gmx.de>
wrote:
>>>>>>>>>> 
>>>>>>>>>> when i make it toString() i get:
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>> org.apache.pdfbox.pdmodel.****interactive.****
>>>>>>>>>>> documentnavigation.**
>>>>>>>>>>> destination.****PDNamedDestination@505484dc
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> whereas the last after @ is always different.
I think its the
>>>>>>>>>>> hashed
>>>>>>>>>>> destination?
>>>>>>>>>>> 
>>>>>>>>>>> Am 31.10.2013, 10:20 Uhr, schrieb Gilad Denneboom
<
>>>>>>>>>>> gilad.denneboom@gmail.com>:
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> What do you mean by "hascode", exactly?
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>>> On Thu, Oct 31, 2013 at 10:16 AM, Sera <news4sera@gmx.de>
wrote:
>>>>>>>>>>>> 
>>>>>>>>>>>> ok, now I've got the destination as a hashcode.
How do I get the
>>>>>>>>>>>> 
>>>>>>>>>>>> pagenumber from this?
>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Am 30.10.2013, 20:10 Uhr, schrieb Gilad
Denneboom <
>>>>>>>>>>>>> gilad.denneboom@gmail.com>:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Like I said, you need to determine (using
instanceof, for
>>>>>>>>>>>>> example)
>>>>>>>>>>>>> which
>>>>>>>>>>>>> 
>>>>>>>>>>>>> actual class it is, one of the subsets
of PDAction, like
>>>>>>>>>>>>> PDActionGoTo
>>>>>>>>>>>>> 
>>>>>>>>>>>>> ...
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> On Wed, Oct 30, 2013 at 7:51 PM,
Sera <news4sera@gmx.de> wrote:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> current.getAction() is just a PDAction.
From there I don't have
>>>>>>>>>>>>>> access
>>>>>>>>>>>>>> to
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> getDestination().
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Am 30.10.2013, 16:27 Uhr, schrieb
Gilad Denneboom <
>>>>>>>>>>>>>>> gilad.denneboom@gmail.com>:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> You should get the Action of
the bookmark, and then check
>>>>>>>>>>>>>>> which
>>>>>>>>>>>>>>> type
>>>>>>>>>>>>>>> of
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> action it is (probably PDActionGoTo),
and from the Action
>>>>>>>>>>>>>>> you'll
>>>>>>>>>>>>>>> have
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> access to the Destination.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> On Wed, Oct 30, 2013 at 4:00
PM, Sera <news4sera@gmx.de>
>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Hello!
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> I need to extract the pagenumber
out of the bookmarks and
>>>>>>>>>>>>>>>> tried
>>>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> with
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> PDOutlineItem current
= bookmark.getFirstChild();
>>>>>>>>>>>>>>>>> PDDestination destination
= null;
>>>>>>>>>>>>>>>>> destination = current.getDestination();
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> But the destination stays
null. Any ideas on how to fix this?
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>>>>>> Sera
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Erstellt mit Operas E-Mail-Modul:
>>>>>>>>>>>>>>>>> http://www.opera.com/mail/
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Erstellt mit Operas E-Mail-Modul:
http://www.opera.com/mail/
>>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> --
>>>>>>>>>>>>> 
>>>>>>>>>>>> Erstellt mit Operas E-Mail-Modul: http://www.opera.com/mail/
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> --
>>>>>>>>> Erstellt mit Operas E-Mail-Modul: http://www.opera.com/mail/
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>> --
>>>>>> Erstellt mit Operas E-Mail-Modul: http://www.opera.com/mail/
>>>>>> 
>>>>>> 
>>>> 
>>>> 
>>> 
>>> --
>>> Erstellt mit Operas E-Mail-Modul: http://www.opera.com/mail/
>>> 
> 
> 
> -- 
> Erstellt mit Operas E-Mail-Modul: http://www.opera.com/mail/


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message