Example usage for com.lowagie.text.pdf PdfReader getPdfObjectRelease

List of usage examples for com.lowagie.text.pdf PdfReader getPdfObjectRelease

Introduction

In this page you can find the example usage for com.lowagie.text.pdf PdfReader getPdfObjectRelease.

Prototype

public PdfObject getPdfObjectRelease(int idx) 

Source Link

Usage

From source file:de.offis.health.icardea.cied.pdf.extractor.PDFiText2Extractor.java

License:LGPL

@SuppressWarnings("unchecked")
public java.util.List getBookmarkTitlesAsText() {
    java.util.List bookmarkContent = null;
    if (pdfReader != null) {
        //bookmarkContent = SimpleBookmark.getBookmark(pdfReader);

        PdfDictionary catalog = pdfReader.getCatalog();
        if (catalog != null) {
            PdfObject rootPdfObject = PdfReader.getPdfObjectRelease(catalog.get(PdfName.OUTLINES));
            if (rootPdfObject != null && rootPdfObject.isDictionary()) {
                PdfDictionary rootOutlinesPdfDictionary = (PdfDictionary) rootPdfObject;
                /*//ww w. java2s . c  om
                 * If it doesn't exist create the List and populate it,
                 * otherwise just return the already existing List.
                 */
                if (bookmarkTextList == null) {
                    bookmarkTextList = new ArrayList<String>();

                    // Populate the List
                    populateBookmarkTextList(rootOutlinesPdfDictionary, "");
                } // end if

            }
        } // end if
    }
    return bookmarkContent;
}

From source file:de.offis.health.icardea.cied.pdf.extractor.PDFiText2Extractor.java

License:LGPL

/**
 * This method will populate the text bookmark list.
 * /*from   w  ww . j a  v  a 2 s . co  m*/
 * @param rootOutlinesPdfDictionary The node element for the bookmark item.
 * @param indentionString The base indention string to be used.
 */
@SuppressWarnings("unchecked")
private void populateBookmarkTextList(PdfDictionary rootOutlinesPdfDictionary, String indentionString) {
    PdfDictionary outlineItemPdfDictionary = (PdfDictionary) PdfReader
            .getPdfObjectRelease(rootOutlinesPdfDictionary.get(PdfName.FIRST));
    while (outlineItemPdfDictionary != null) {
        PdfString bookmarkTitle = (PdfString) PdfReader
                .getPdfObjectRelease(outlineItemPdfDictionary.get(PdfName.TITLE));
        bookmarkTextList.add(indentionString + bookmarkTitle.toUnicodeString());
        logger.trace(indentionString + bookmarkTitle.toUnicodeString());

        /*
         * Recursive call to fill List
         */
        populateBookmarkTextList(outlineItemPdfDictionary, indentionString + bookmarkIndentionString());

        /*
         * Get next outline item
         */
        outlineItemPdfDictionary = (PdfDictionary) PdfReader
                .getPdfObjectRelease(outlineItemPdfDictionary.get(PdfName.NEXT));
    } // end while
}

From source file:it.flavianopetrocchi.jpdfbookmarks.itextbookmarksconverter.iTextBookmarksConverter.java

License:Open Source License

private Bookmark getBookmark() {
    PdfDictionary catalog = reader.getCatalog();
    PdfObject obj = PdfReader.getPdfObjectRelease(catalog.get(PdfName.OUTLINES));
    if (obj == null || !obj.isDictionary()) {
        return null;
    }//www  .j  a  v  a 2 s. c o  m
    PdfDictionary outlines = (PdfDictionary) obj;
    //        pages = new IntHashtable();
    //        int numPages = reader.getNumberOfPages();
    //        for (int k = 1; k <= numPages; ++k) {
    //            pages.put(reader.getPageOrigRef(k).getNumber(), k);
    //            reader.releasePage(k);
    //        }
    initPages();

    Bookmark root = new Bookmark();
    root.setTitle("Root Bookmark");
    bookmarkDepth(root, (PdfDictionary) PdfReader.getPdfObjectRelease(outlines.get(PdfName.FIRST)));
    //        bookmarkDepthIterative(root, outlines);
    return root;
}

From source file:it.flavianopetrocchi.jpdfbookmarks.itextbookmarksconverter.iTextBookmarksConverter.java

License:Open Source License

private void setActionInBookmark(Bookmark bookmark, PdfDictionary action) {
    PdfObject dest;// ww  w.j  a  v a  2 s . c o  m
    if (PdfName.GOTO.equals(PdfReader.getPdfObjectRelease(action.get(PdfName.S)))) {
        dest = PdfReader.getPdfObjectRelease(action.get(PdfName.D));
        if (dest != null) {
            mapGotoBookmark(bookmark, dest);
        }
    } else if (PdfName.URI.equals(PdfReader.getPdfObjectRelease(action.get(PdfName.S)))) {
        bookmark.setType(BookmarkType.Uri);
        bookmark.setUri(((PdfString) PdfReader.getPdfObjectRelease(action.get(PdfName.URI))).toUnicodeString());
    } else if (PdfName.GOTOR.equals(PdfReader.getPdfObjectRelease(action.get(PdfName.S)))) {
        bookmark.setRemoteDestination(true);
        PdfObject file = PdfReader.getPdfObjectRelease(action.get(PdfName.F));
        if (file != null) {
            if (file.isString()) {
                String path = Ut.onWindowsReplaceBackslashWithSlash(((PdfString) file).toUnicodeString());
                bookmark.setRemoteFilePath(path);
            } else if (file.isDictionary()) {
                file = PdfReader.getPdfObject(((PdfDictionary) file).get(PdfName.F));
                if (file.isString()) {
                    bookmark.setRemoteFilePath(((PdfString) file).toUnicodeString());
                }
            }
        }
        dest = PdfReader.getPdfObjectRelease(action.get(PdfName.D));
        if (dest != null) {
            if (dest.isString()) {
                bookmark.setNamedDestination(dest.toString());
            } else if (dest.isName()) {
                bookmark.setNamedDestination(PdfName.decodeName(dest.toString()));
                bookmark.setNamedAsName(true);
            } else if (dest.isArray()) {
                PdfArray arr = (PdfArray) dest;
                PdfReader remoteReader;
                try {
                    //                        File remoteFile = new File(bookmark.getRemoteFilePath());
                    //                        if (!remoteFile.isAbsolute()) {
                    //                            File openedFile = new File(filePath);
                    //                            String containingFolder = openedFile.getParent();
                    //                            String remotePath = containingFolder + File.separator + bookmark.getRemoteFilePath();
                    //                            remoteFile = new File(remotePath);
                    //                        }
                    File remoteFile = Ut.createAbsolutePath(new File(filePath),
                            new File(bookmark.getRemoteFilePath()));
                    remoteReader = new PdfReader(remoteFile.getCanonicalPath());
                    makeBookmarkParam(remoteReader, bookmark, arr, null);
                    remoteReader.close();
                } catch (IOException ex) {
                    //System.out.println(ex.getMessage());
                } finally {
                }
            }
        }
        PdfObject newWindow = PdfReader.getPdfObjectRelease(action.get(PdfName.NEWWINDOW));
        if (newWindow != null) {
            bookmark.setNewWindow(((PdfBoolean) newWindow).booleanValue());
        }
    } else if (PdfName.LAUNCH.equals(PdfReader.getPdfObjectRelease(action.get(PdfName.S)))) {
        bookmark.setType(BookmarkType.Launch);
        PdfObject file = PdfReader.getPdfObjectRelease(action.get(PdfName.F));
        if (file == null) {
            file = PdfReader.getPdfObjectRelease(action.get(PdfName.WIN));
        }
        if (file != null) {
            if (file.isString()) {
                bookmark.setFileToLaunch(((PdfString) file).toUnicodeString());
            } else if (file.isDictionary()) {
                file = PdfReader.getPdfObjectRelease(((PdfDictionary) file).get(PdfName.F));
                if (file.isString()) {
                    bookmark.setFileToLaunch(((PdfString) file).toUnicodeString());
                }
            }
        }
    } else if (PdfName.HIDE.equals(PdfReader.getPdfObjectRelease(action.get(PdfName.S)))) {
        bookmark.setType(BookmarkType.Hide);
        PdfObject annotation = PdfReader.getPdfObjectRelease(action.get(PdfName.T));
        if (annotation != null) {
            if (annotation.isDictionary()) {
            } else if (annotation.isArray()) {
            } else if (annotation.isString()) {
                bookmark.setFieldNameToHide(((PdfString) annotation).toUnicodeString());
            }
        }
        PdfBoolean hide = (PdfBoolean) PdfReader.getPdfObjectRelease(action.get(PdfName.H));
        if (hide != null) {
            bookmark.setHide(hide.booleanValue());
        }
    } else {
        bookmark.setType(BookmarkType.Unknown);
    }
}

From source file:it.flavianopetrocchi.jpdfbookmarks.itextbookmarksconverter.iTextBookmarksConverter.java

License:Open Source License

private void setActionsRecursive(Bookmark bookmark, PdfDictionary action) {

    setActionInBookmark(bookmark, action);

    PdfObject next = PdfReader.getPdfObjectRelease(action.get(PdfName.NEXT));
    if (next != null) {
        if (next.isArray()) {
            PdfArray actions = (PdfArray) next;
            for (int i = 0; i < actions.size(); i++) {
                Bookmark b = new Bookmark();
                action = actions.getAsDict(i);
                setActionsRecursive(b, action);
                bookmark.addChainedBookmark(b);
            }//from w  ww . ja va  2s  . c  o  m
        } else if (next.isDictionary()) {
            Bookmark b = new Bookmark();
            action = (PdfDictionary) next;
            setActionsRecursive(b, action);
            bookmark.addChainedBookmark(b);
        }
    }
}

From source file:it.flavianopetrocchi.jpdfbookmarks.itextbookmarksconverter.iTextBookmarksConverter.java

License:Open Source License

private Bookmark bookmarkFromDictionary(PdfDictionary outline) {
    if (outline == null) {
        return null;
    }//  ww  w .ja  va 2 s  .co m
    Bookmark bookmark = new Bookmark();
    PdfString title = (PdfString) PdfReader.getPdfObjectRelease(outline.get(PdfName.TITLE));
    bookmark.setTitle(title.toUnicodeString());
    PdfArray color = (PdfArray) PdfReader.getPdfObjectRelease(outline.get(PdfName.C));
    if (color != null && color.size() == 3) {
        ByteBuffer out = new ByteBuffer();
        out.append(color.getAsNumber(0).floatValue()).append(' ');
        out.append(color.getAsNumber(1).floatValue()).append(' ');
        out.append(color.getAsNumber(2).floatValue());
        bookmark.setColor(new Color(color.getAsNumber(0).floatValue(), color.getAsNumber(1).floatValue(),
                color.getAsNumber(2).floatValue()));
    }
    PdfNumber style = (PdfNumber) PdfReader.getPdfObjectRelease(outline.get(PdfName.F));
    if (style != null) {
        int f = style.intValue();
        if ((f & 1) != 0) {
            bookmark.setItalic(true);
        }
        if ((f & 2) != 0) {
            bookmark.setBold(true);
        }
    }
    PdfNumber count = (PdfNumber) PdfReader.getPdfObjectRelease(outline.get(PdfName.COUNT));
    if (count != null && count.intValue() < 0) {
        bookmark.setOpened(false);
    } else {
        bookmark.setOpened(true);
    }
    try {
        PdfObject dest = PdfReader.getPdfObjectRelease(outline.get(PdfName.DEST));
        if (dest != null) {
            mapGotoBookmark(bookmark, dest);
        } else {
            PdfDictionary action = (PdfDictionary) PdfReader.getPdfObjectRelease(outline.get(PdfName.A));
            if (action != null) {
                setActionsRecursive(bookmark, action);
            } else {
                bookmark.setType(BookmarkType.Unknown);
            }
        }
    } catch (Exception e) {
        //empty on purpose
    }
    return bookmark;
}

From source file:it.flavianopetrocchi.jpdfbookmarks.itextbookmarksconverter.iTextBookmarksConverter.java

License:Open Source License

private void bookmarkDepth(Bookmark father, PdfDictionary outline) {
    Bookmark bookmark = null;//from  ww  w.  j  a  v  a 2 s . co  m
    while (outline != null) {
        bookmark = bookmarkFromDictionary(outline);
        PdfDictionary first = (PdfDictionary) PdfReader.getPdfObjectRelease(outline.get(PdfName.FIRST));
        if (first != null) {
            bookmarkDepth(bookmark, first);
        }
        father.add(bookmark);
        outline = (PdfDictionary) PdfReader.getPdfObjectRelease(outline.get(PdfName.NEXT));
    }

}

From source file:it.flavianopetrocchi.jpdfbookmarks.itextbookmarksconverter.iTextBookmarksConverter.java

License:Open Source License

private static int getNumber(PdfIndirectReference indirect) {
    PdfDictionary pdfObj = (PdfDictionary) PdfReader.getPdfObjectRelease(indirect);
    if (pdfObj.contains(PdfName.TYPE) && pdfObj.get(PdfName.TYPE).equals(PdfName.PAGES)
            && pdfObj.contains(PdfName.KIDS)) {
        PdfArray kids = (PdfArray) pdfObj.get(PdfName.KIDS);
        indirect = (PdfIndirectReference) kids.getPdfObject(0);
    }//from   w w  w  .  j av  a2  s. c  om
    return indirect.getNumber();
}

From source file:it.flavianopetrocchi.jpdfbookmarks.itextbookmarksconverter.iTextBookmarksConverter.java

License:Open Source License

public ArrayList<AnnotationRect> getLinks(int currentPage, boolean convertNamedDestinations) {

    ArrayList<AnnotationRect> bookmarkLinks = new ArrayList<AnnotationRect>();
    ArrayList links = null;//from  w ww. ja v a2s  .  c  o  m
    if (reader != null) {
        if (convertNamedDestinations) {
            reader.consolidateNamedDestinations();
        }
        links = reader.getAnnotations(currentPage);
        for (int i = 0; i < links.size(); i++) {
            AnnotationRect annoRect = new AnnotationRect();
            Bookmark bookmark = new Bookmark();
            PdfDictionary annot = (PdfDictionary) links.get(i);
            try {
                PdfObject dest = PdfReader.getPdfObjectRelease(annot.get(PdfName.DEST));
                if (dest != null) {
                    mapGotoBookmark(bookmark, dest);
                } else {
                    PdfDictionary action = (PdfDictionary) PdfReader.getPdfObjectRelease(annot.get(PdfName.A));
                    if (action != null) {
                        setActionsRecursive(bookmark, action);
                    } else {
                        bookmark.setType(BookmarkType.Unknown);
                    }
                }
            } catch (Exception e) {
                //empty on purpose
            }
            PdfObject obj = (PdfObject) annot.get(PdfName.RECT);
            if (obj instanceof PdfArray) {
                PdfArray rc = (PdfArray) obj;
                annoRect.llx = (int) rc.getAsNumber(0).floatValue();
                annoRect.lly = (int) rc.getAsNumber(1).floatValue();
                annoRect.urx = (int) rc.getAsNumber(2).floatValue();
                annoRect.ury = (int) rc.getAsNumber(3).floatValue();
            }
            annoRect.bookmark = bookmark;
            bookmarkLinks.add(annoRect);
        }
    }

    return bookmarkLinks;
}