org.apache.pdfbox.pdmodel.documentinterchange.logicalstructure.PDStructureTreeRoot Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pdfbox Show documentation
Show all versions of pdfbox Show documentation
The Apache PDFBox library is an open source Java tool for working with PDF documents.
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.pdfbox.pdmodel.documentinterchange.logicalstructure;
import java.io.IOException;
import java.util.Hashtable;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.pdfbox.cos.COSArray;
import org.apache.pdfbox.cos.COSBase;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.PDStructureElementNameTreeNode;
import org.apache.pdfbox.pdmodel.common.COSDictionaryMap;
import org.apache.pdfbox.pdmodel.common.PDNameTreeNode;
import org.apache.pdfbox.pdmodel.common.PDNumberTreeNode;
/**
* A root of a structure tree.
*
* @author Ben Litchfield
* @author Johannes Koch
*
*/
public class PDStructureTreeRoot extends PDStructureNode
{
/**
* Log instance.
*/
private static final Log LOG = LogFactory.getLog(PDStructureTreeRoot.class);
private static final String TYPE = "StructTreeRoot";
/**
* Default Constructor.
*
*/
public PDStructureTreeRoot()
{
super(TYPE);
}
/**
* Constructor for an existing structure element.
*
* @param dic The existing dictionary.
*/
public PDStructureTreeRoot(COSDictionary dic)
{
super(dic);
}
/**
* Returns the K array entry.
*
* @return the K array entry
*/
public COSArray getKArray()
{
COSBase k = this.getCOSObject().getDictionaryObject(COSName.K);
if (k != null)
{
if (k instanceof COSDictionary)
{
COSDictionary kdict = (COSDictionary) k;
k = kdict.getDictionaryObject(COSName.K);
if (k instanceof COSArray)
{
return (COSArray) k;
}
}
else
{
return (COSArray) k;
}
}
return null;
}
/**
* Returns the K entry.
*
* @return the K entry
*/
public COSBase getK()
{
return this.getCOSObject().getDictionaryObject(COSName.K);
}
/**
* Sets the K entry.
*
* @param k the K value
*/
public void setK(COSBase k)
{
this.getCOSObject().setItem(COSName.K, k);
}
/**
* Returns the ID tree.
*
* @return the ID tree
*/
public PDNameTreeNode getIDTree()
{
COSDictionary idTreeDic = (COSDictionary) this.getCOSObject().getDictionaryObject(COSName.ID_TREE);
if (idTreeDic != null)
{
return new PDStructureElementNameTreeNode(idTreeDic);
}
return null;
}
/**
* Sets the ID tree.
*
* @param idTree the ID tree
*/
public void setIDTree(PDNameTreeNode idTree)
{
this.getCOSObject().setItem(COSName.ID_TREE, idTree);
}
/**
* Returns the parent tree.
*
* @return the parent tree
*/
public PDNumberTreeNode getParentTree()
{
COSDictionary parentTreeDic = (COSDictionary) this.getCOSObject().getDictionaryObject(COSName.PARENT_TREE);
if (parentTreeDic != null)
{
return new PDNumberTreeNode(parentTreeDic, COSBase.class);
}
return null;
}
/**
* Sets the parent tree.
*
* @param parentTree the parent tree
*/
public void setParentTree(PDNumberTreeNode parentTree)
{
this.getCOSObject().setItem(COSName.PARENT_TREE, parentTree);
}
/**
* Returns the next key in the parent tree.
*
* @return the next key in the parent tree
*/
public int getParentTreeNextKey()
{
return this.getCOSObject().getInt(COSName.PARENT_TREE_NEXT_KEY);
}
/**
* Sets the next key in the parent tree.
*
* @param parentTreeNextkey the next key in the parent tree.
*/
public void setParentTreeNextKey(int parentTreeNextkey)
{
this.getCOSObject().setInt(COSName.PARENT_TREE_NEXT_KEY, parentTreeNextkey);
}
/**
* Returns the role map.
*
* @return the role map
*/
public Map getRoleMap()
{
COSBase rm = this.getCOSObject().getDictionaryObject(COSName.ROLE_MAP);
if (rm instanceof COSDictionary)
{
try
{
return COSDictionaryMap.convertBasicTypesToMap((COSDictionary) rm);
}
catch (IOException e)
{
LOG.error(e,e);
}
}
return new Hashtable();
}
/**
* Sets the role map.
*
* @param roleMap the role map
*/
public void setRoleMap(Map roleMap)
{
COSDictionary rmDic = new COSDictionary();
for (Map.Entry entry : roleMap.entrySet())
{
rmDic.setName(entry.getKey(), entry.getValue());
}
this.getCOSObject().setItem(COSName.ROLE_MAP, rmDic);
}
}