package org.icepdf.core.pobjects; import org.icepdf.core.util.Library; import java.util.HashMap; import java.util.logging.Logger; /** * Some categories of objects in a PDF file can be referred to by name rather * than by object reference. The correspondence between names and objects is * established by the document’s name dictionary (PDF 1.2), located by means of * the Names entry in the document’s catalog (see 7.7.2, "Document Catalog"). * Each entry in this dictionary designates the root of a name tree (see 7.9.6, * "Name Trees") defining names for a particular category of objects. * * @since 5.1.0 */ public class Names extends Dictionary { private static final Logger logger = Logger.getLogger(Names.class.toString()); /** * A name tree mapping name strings to destinations. */ public static final Name DEST_KEY = new Name("Dests"); /** * A name tree mapping name strings to annotation appearance streams. */ public static final Name ANNOTATION_APPEARANCE_KEY = new Name("AP"); /** * A name tree mapping name strings to document-level JavaScript actions. */ public static final Name JAVASCRIPT_KEY = new Name("JavaScript"); /** * A name tree mapping name strings to visible pages for use in interactive * forms. */ public static final Name PAGES_KEY = new Name("Pages"); /** * A name tree mapping name strings to invisible (template) pages for use * in interactive forms. */ public static final Name TEMPLATES_KEY = new Name("Templates"); /** * A name tree mapping digital identifiers to Web Capture content sets. */ public static final Name IDS_KEY = new Name("IDS"); /** * A name tree mapping name strings to file specifications for embedded * file streams. */ public static final Name EMBEDDED_FILES_KEY = new Name("EmbeddedFiles"); /** * A name tree mapping name strings to alternate presentations. */ public static final Name ALTERNATE_PRESENTATIONS_KEY = new Name("AlternatePresentations"); /** * A name tree mapping name strings (which shall have Unicode encoding) to * rendition objects. */ public static final Name RENDITIONS_KEY = new Name("Renditions"); private NameTree destsNameTree; private NameTree javaScriptNameTree; private NameTree pagesNameTree; private NameTree templatesNameTree; private NameTree idsNameTree; private NameTree embeddedFilesNameTree; private NameTree alternatePresentationsNameTree; private NameTree renditionsNameTree; private NameTree annotationAppearanceNameTree; public Names(Library l, HashMap h) { super(l, h); if (!inited) { // destinations Object tmp = library.getObject(entries, DEST_KEY); if (tmp != null && tmp instanceof HashMap) { destsNameTree = new NameTree(library, (HashMap) tmp); destsNameTree.init(); } // Javascript tmp = library.getObject(entries, JAVASCRIPT_KEY); if (tmp != null && tmp instanceof HashMap) { javaScriptNameTree = new NameTree(library, (HashMap) tmp); javaScriptNameTree.init(); } // Pages tmp = library.getObject(entries, PAGES_KEY); if (tmp != null && tmp instanceof HashMap) { pagesNameTree = new NameTree(library, (HashMap) tmp); pagesNameTree.init(); } // templates tmp = library.getObject(entries, TEMPLATES_KEY); if (tmp != null && tmp instanceof HashMap) { templatesNameTree = new NameTree(library, (HashMap) tmp); templatesNameTree.init(); } // ID's tmp = library.getObject(entries, IDS_KEY); if (tmp != null && tmp instanceof HashMap) { idsNameTree = new NameTree(library, (HashMap) tmp); idsNameTree.init(); } // embedded files tmp = library.getObject(entries, EMBEDDED_FILES_KEY); if (tmp != null && tmp instanceof HashMap) { embeddedFilesNameTree = new NameTree(library, (HashMap) tmp); embeddedFilesNameTree.init(); } // alternative presentation tmp = library.getObject(entries, ALTERNATE_PRESENTATIONS_KEY); if (tmp != null && tmp instanceof HashMap) { alternatePresentationsNameTree = new NameTree(library, (HashMap) tmp); alternatePresentationsNameTree.init(); } // renditions tmp = library.getObject(entries, RENDITIONS_KEY); if (tmp != null && tmp instanceof HashMap) { renditionsNameTree = new NameTree(library, (HashMap) tmp); renditionsNameTree.init(); } } } public NameTree getDestsNameTree() { return destsNameTree; } public NameTree getAnnotationAppearanceNameTree() { return annotationAppearanceNameTree; } public NameTree getJavaScriptNameTree() { return javaScriptNameTree; } public NameTree getPagesNameTree() { return pagesNameTree; } public NameTree getTemplatesNameTree() { return templatesNameTree; } public NameTree getIdsNameTree() { return idsNameTree; } public NameTree getEmbeddedFilesNameTree() { return embeddedFilesNameTree; } public NameTree getAlternatePresentationsNameTree() { return alternatePresentationsNameTree; } public NameTree getRenditionsNameTree() { return renditionsNameTree; } }