Class SimpleBookmark

java.lang.Object
com.lowagie.text.pdf.SimpleBookmark
All Implemented Interfaces:
SimpleXMLDocHandler

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:

  • "Action" = "GoTo" - "Page" | "Named"
    • "Page" = "3 XYZ 70 400 null" - page number followed by a destination (/XYZ is also accepted)
    • "Named" = "named_destination"
  • "Action" = "GoToR" - "Page" | "Named" | "NamedN", "File", ["NewWindow"]
    • "Page" = "3 XYZ 70 400 null" - page number followed by a destination (/XYZ is also accepted)
    • "Named" = "named_destination_as_a_string"
    • "NamedN" = "named_destination_as_a_name"
    • "File" - "the_file_to_open"
    • "NewWindow" - "true" or "false"
  • "Action" = "URI" - "URI"
    • "URI" = "http://sf.net" - URI to jump to
  • "Action" = "Launch" - "File"
    • "File" - "the_file_to_open_or_execute"
  • Field Details

  • Constructor Details

    • SimpleBookmark

      private SimpleBookmark()
      Creates a new instance of SimpleBookmark
  • Method Details

    • bookmarkDepth

      private static List<Map<String,Object>> bookmarkDepth(PdfDictionary outline, IntHashtable pages)
    • mapGotoBookmark

      private static void mapGotoBookmark(Map<String,Object> map, PdfObject dest, IntHashtable pages)
    • makeBookmarkParam

      private static String makeBookmarkParam(PdfArray dest, IntHashtable pages)
    • 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
    • getBookmarkList

      public static List<Map<String,Object>> getBookmarkList(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
    • eliminatePages

      public static void eliminatePages(List<Map<String,Object>> 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.
    • shiftPageNumbersInRange

      public static void shiftPageNumbersInRange(List<Map<String,Object>> 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
    • createOutlineAction

      static void createOutlineAction(PdfDictionary outline, Map<String,Object> map, PdfWriter writer, boolean namedAsNames)
    • iterateOutlines

      public static Object[] iterateOutlines(PdfWriter writer, PdfIndirectReference parent, List<Map<String,Object>> kids, boolean namedAsNames) throws IOException
      Throws:
      IOException
    • exportToXMLNode

      public static void exportToXMLNode(List list, Writer out, int indent, boolean onlyASCII) throws IOException
      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
    • exportToXML

      public static void exportToXML(List list, OutputStream out, String encoding, boolean onlyASCII) throws IOException
      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) throws IOException
      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
    • importFromXML

      public static List<Map<String,Object>> importFromXML(InputStream in) throws IOException
      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<Map<String,Object>> importFromXML(Reader in) throws IOException
      Import the bookmarks from XML.
      Parameters:
      in - the XML source. The reader is not closed
      Returns:
      the bookmarks
      Throws:
      IOException - on error
    • endDocument

      public void endDocument()
      Description copied from interface: SimpleXMLDocHandler
      Called after the document is parsed.
      Specified by:
      endDocument in interface SimpleXMLDocHandler
    • endElement

      public void endElement(String tag)
      Description copied from interface: SimpleXMLDocHandler
      Called when an end tag is found.
      Specified by:
      endElement in interface SimpleXMLDocHandler
      Parameters:
      tag - the tag name
    • startDocument

      public void startDocument()
      Description copied from interface: SimpleXMLDocHandler
      Called when the document starts to be parsed.
      Specified by:
      startDocument in interface SimpleXMLDocHandler
    • startElement

      public void startElement(String tag, Map<String,String> h)
      Description copied from interface: SimpleXMLDocHandler
      Called when a start tag is found.
      Specified by:
      startElement in interface SimpleXMLDocHandler
      Parameters:
      tag - the tag name
      h - the tag's attributes
    • text

      public void text(String str)
      Description copied from interface: SimpleXMLDocHandler
      Called when a text element is found.
      Specified by:
      text in interface SimpleXMLDocHandler
      Parameters:
      str - the text element, probably a fragment.