com.lowagie.text.pdf

Class SimpleBookmark

public final class SimpleBookmark extends Object implements SimpleXMLDocHandler

Bookmark processing in a simple way. It has some limitations, mainly the only action types supported are GoTo, GoToR, URI and Launch.

The list structure is composed by a number of HashMap, keyed by strings, one HashMap for each bookmark. The element values are all strings with the exception of the key "Kids" that has another list for the child bookmarks.

All the bookmarks have a "Title" with the bookmark title and optionally a "Style" that can be "bold", "italic" or a combination of both. They can also have a "Color" key with a value of three floats separated by spaces. The key "Open" can have the values "true" or "false" and signals the open status of the children. It's "true" by default.

The actions and the parameters can be:

Field Summary
Stackattr
ArrayListtopList
Constructor Summary
SimpleBookmark()
Creates a new instance of SimpleBookmark
Method Summary
static ListbookmarkDepth(PdfReader reader, PdfDictionary outline, IntHashtable pages)
static voidcreateOutlineAction(PdfDictionary outline, HashMap map, PdfWriter writer, boolean namedAsNames)
static voideliminatePages(List list, int[] pageRange)
Removes the bookmark entries for a number of page ranges.
voidendDocument()
voidendElement(String tag)
static voidexportToXML(List list, OutputStream out, String encoding, boolean onlyASCII)
Exports the bookmarks to XML.
static voidexportToXML(List list, Writer wrt, String encoding, boolean onlyASCII)
Exports the bookmarks to XML.
static voidexportToXMLNode(List list, Writer out, int indent, boolean onlyASCII)
Exports the bookmarks to XML.
static ListgetBookmark(PdfReader reader)
Gets a List with the bookmarks.
static intgetNumber(PdfIndirectReference indirect)
Gets number of indirect.
static ListimportFromXML(InputStream in)
Import the bookmarks from XML.
static ListimportFromXML(Reader in)
Import the bookmarks from XML.
static Object[]iterateOutlines(PdfWriter writer, PdfIndirectReference parent, List kids, boolean namedAsNames)
static StringmakeBookmarkParam(PdfArray dest, IntHashtable pages)
static voidmapGotoBookmark(HashMap map, PdfObject dest, IntHashtable pages)
static voidshiftPageNumbers(List list, int pageShift, int[] pageRange)
For the pages in range add the pageShift to the page number.
voidstartDocument()
voidstartElement(String tag, HashMap h)
voidtext(String str)

Field Detail

attr

private Stack attr

topList

private ArrayList topList

Constructor Detail

SimpleBookmark

private SimpleBookmark()
Creates a new instance of SimpleBookmark

Method Detail

bookmarkDepth

private static List bookmarkDepth(PdfReader reader, PdfDictionary outline, IntHashtable pages)

createOutlineAction

static void createOutlineAction(PdfDictionary outline, HashMap map, PdfWriter writer, boolean namedAsNames)

eliminatePages

public static void eliminatePages(List list, int[] pageRange)
Removes the bookmark entries for a number of page ranges. The page ranges consists of a number of pairs with the start/end page range. The page numbers are inclusive.

Parameters: list the bookmarks pageRange the page ranges, always in pairs.

endDocument

public void endDocument()

endElement

public void endElement(String tag)

exportToXML

public static void exportToXML(List list, OutputStream out, String encoding, boolean onlyASCII)
Exports the bookmarks to XML. The DTD for this XML is:

 <?xml version='1.0' encoding='UTF-8'?>
 <!ELEMENT Title (#PCDATA|Title)*>
 <!ATTLIST Title
    Action CDATA #IMPLIED
    Open CDATA #IMPLIED
    Page CDATA #IMPLIED
    URI CDATA #IMPLIED
    File CDATA #IMPLIED
    Named CDATA #IMPLIED
    NamedN CDATA #IMPLIED
    NewWindow CDATA #IMPLIED
    Style CDATA #IMPLIED
    Color CDATA #IMPLIED
 >
 <!ELEMENT Bookmark (Title)*>
 

Parameters: list the bookmarks out the export destination. The stream is not closed encoding the encoding according to IANA conventions onlyASCII codes above 127 will always be escaped with &#nn; if true, whatever the encoding

Throws: IOException on error

exportToXML

public static void exportToXML(List list, Writer wrt, String encoding, boolean onlyASCII)
Exports the bookmarks to XML.

Parameters: list the bookmarks wrt the export destination. The writer is not closed encoding the encoding according to IANA conventions onlyASCII codes above 127 will always be escaped with &#nn; if true, whatever the encoding

Throws: IOException on error

exportToXMLNode

public static void exportToXMLNode(List list, Writer out, int indent, boolean onlyASCII)
Exports the bookmarks to XML. Only of use if the generation is to be include in some other XML document.

Parameters: list the bookmarks out the export destination. The writer is not closed indent the indentation level. Pretty printing significant only onlyASCII codes above 127 will always be escaped with &#nn; if true, whatever the encoding

Throws: IOException on error

getBookmark

public static List getBookmark(PdfReader reader)
Gets a List with the bookmarks. It returns null if the document doesn't have any bookmarks.

Parameters: reader the document

Returns: a List with the bookmarks or null if the document doesn't have any

getNumber

private static int getNumber(PdfIndirectReference indirect)
Gets number of indirect. If type of directed indirect is PAGES, it refers PAGE object through KIDS. (Contributed by Kazuya Ujihara)

Parameters: indirect 2004-06-13

importFromXML

public static List importFromXML(InputStream in)
Import the bookmarks from XML.

Parameters: in the XML source. The stream is not closed

Returns: the bookmarks

Throws: IOException on error

importFromXML

public static List importFromXML(Reader in)
Import the bookmarks from XML.

Parameters: in the XML source. The reader is not closed

Returns: the bookmarks

Throws: IOException on error

iterateOutlines

public static Object[] iterateOutlines(PdfWriter writer, PdfIndirectReference parent, List kids, boolean namedAsNames)

makeBookmarkParam

private static String makeBookmarkParam(PdfArray dest, IntHashtable pages)

mapGotoBookmark

private static void mapGotoBookmark(HashMap map, PdfObject dest, IntHashtable pages)

shiftPageNumbers

public static void shiftPageNumbers(List list, int pageShift, int[] pageRange)
For the pages in range add the pageShift to the page number. The page ranges consists of a number of pairs with the start/end page range. The page numbers are inclusive.

Parameters: list the bookmarks pageShift the number to add to the pages in range pageRange the page ranges, always in pairs. It can be null to include all the pages

startDocument

public void startDocument()

startElement

public void startElement(String tag, HashMap h)

text

public void text(String str)