(Sorry, it returns 16)
On Sat, Nov 9, 2013 at 2:18 PM, Gilad Denneboom <[email protected]>wrote: > I wrote this code for you to do this task in a different way: > > PDDocument doc = PDDocument.load("c:/temp/2013_DA_Schmitz.pdf"); > PDPage p = > doc.getDocumentCatalog().getDocumentOutline().getFirstChild().findDestinationPage(doc); > List<PDPage> pages = doc.getDocumentCatalog().getAllPages(); > for (int i=0; i<pages.size(); i++) > if (pages.get(i).equals(p)) > System.out.println(i); > doc.close(); > > This looks up the page number of the first bookmark in the file, and it > returns 14 (remember it's 0-based). > > Gilad > > > On Sat, Nov 9, 2013 at 12:51 PM, Sera <[email protected]> wrote: > >> My main goal is to extract the chapternames, the pagecount of each >> chapter and a way to see, if something new was written in the chapter. >> Further, I want to extract the bullet points inside the PDF, but thats >> not so relevant. I've got the chapternames out of PDFBox. So that works. >> The "see if somethings new" I wanted to make with counting the characters. >> >> >> Am 09.11.2013, 10:53 Uhr, schrieb Gilad Denneboom < >> [email protected]>: >> >> >> Is writing the code a part of your thesis, or extracting the "chapters"? >>> If >>> the latter, have you considered doing it with JavaScript in Acrobat >>> instead >>> of using Java? >>> >>> >>> On Sat, Nov 9, 2013 at 10:00 AM, Sera <[email protected]> wrote: >>> >>> https://www2.swc.rwth-aachen.de/docs/2013_DA_Schmitz.pdf >>>> >>>> This would be a sample. It was made with LateX and consists of more than >>>> one .tex file. >>>> >>>> Hope it can help. It's for my bachelor thesis and otherwise I'm lost :( >>>> >>>> BR >>>> Sera >>>> >>>> >>>> Am 09.11.2013, 09:32 Uhr, schrieb Maruan Sahyoun < >>>> [email protected]>: >>>> >>>> >>>> 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 <[email protected]>: >>>>> >>>>> 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 < >>>>>> [email protected]>: >>>>>> >>>>>> Yes, that could very well be the cause... >>>>>> >>>>>>> >>>>>>> >>>>>>> On Fri, Nov 8, 2013 at 4:51 PM, Sera <[email protected]> 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 <[email protected]>: >>>>>>>> >>>>>>>> >>>>>>>> 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 < >>>>>>>>> [email protected]>: >>>>>>>>> >>>>>>>>> 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 <[email protected]> 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 <[email protected]>: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> is this the right way to get to the treenode? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> Am 31.10.2013, 11:28 Uhr, schrieb Gilad Denneboom < >>>>>>>>>>>> [email protected]>: >>>>>>>>>>>> >>>>>>>>>>>> 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 <[email protected]> >>>>>>>>>>>>> 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 < >>>>>>>>>>>>>> [email protected]>: >>>>>>>>>>>>>> >>>>>>>>>>>>>> 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 <[email protected]> >>>>>>>>>>>>>>> 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 < >>>>>>>>>>>>>>>> [email protected]>: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> What do you mean by "hascode", exactly? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Thu, Oct 31, 2013 at 10:16 AM, Sera <[email protected]> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> 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 < >>>>>>>>>>>>>>>>>> [email protected]>: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> 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 <[email protected]> >>>>>>>>>>>>>>>>>>> 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 < >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> [email protected]>: >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> 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 < >>>>>>>>>>>>>>>>>>>>> [email protected]> >>>>>>>>>>>>>>>>>>>>> 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/ >>>>>> >>>>>> >>>>> >>>>> >>>> -- >>>> Erstellt mit Operas E-Mail-Modul: http://www.opera.com/mail/ >>>> >>>> >> >> -- >> Erstellt mit Operas E-Mail-Modul: http://www.opera.com/mail/ >> > >

