You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ko...@apache.org on 2010/04/09 17:02:04 UTC

svn commit: r932448 [3/3] - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange: logicalstructure/ taggedpdf/

Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDTableAttributeObject.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDTableAttributeObject.java?rev=932448&view=auto
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDTableAttributeObject.java (added)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDTableAttributeObject.java Fri Apr  9 15:02:03 2010
@@ -0,0 +1,222 @@
+/*
+ * 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.taggedpdf;
+
+import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.pdmodel.documentinterchange.logicalstructure.PDStructureElement;
+
+/**
+ * A Table attribute object.
+ * 
+ * @author <a href="mailto:Johannes%20Koch%20%3Ckoch@apache.org%3E">Johannes Koch</a>
+ * @version $Revision: $
+ */
+public class PDTableAttributeObject extends PDStandardAttributeObject
+{
+
+    /**
+     *  standard attribute owner: Table
+     */
+    public static final String OWNER_TABLE = "Table";
+
+    protected static final String ROW_SPAN = "RowSpan";
+    protected static final String COL_SPAN = "ColSpan";
+    protected static final String HEADERS  = "Headers";
+    protected static final String SCOPE    = "Scope";
+    protected static final String SUMMARY  = "Summary";
+
+    /**
+     * Scope: Both
+     */
+    public static final String SCOPE_BOTH   = "Both";
+    /**
+     * Scope: Column
+     */
+    public static final String SCOPE_COLUMN = "Column";
+    /**
+     * Scope: Row
+     */
+    public static final String SCOPE_ROW    = "Row";
+
+
+    /**
+     * Default constructor.
+     */
+    public PDTableAttributeObject()
+    {
+        this.setOwner(OWNER_TABLE);
+    }
+
+    /**
+     * Creates a new Table attribute object with a given dictionary.
+     * 
+     * @param dictionary the dictionary
+     */
+    public PDTableAttributeObject(COSDictionary dictionary)
+    {
+        super(dictionary);
+    }
+
+
+    /**
+     * Gets the number of rows in the enclosing table that shall be spanned by
+     * the cell (RowSpan). The default value is 1.
+     * 
+     * @return the row span
+     */
+    public int getRowSpan()
+    {
+        return this.getInteger(ROW_SPAN, 1);
+    }
+
+    /**
+     * Sets the number of rows in the enclosing table that shall be spanned by
+     * the cell (RowSpan).
+     * 
+     * @param rowSpan the row span
+     */
+    public void setRowSpan(int rowSpan)
+    {
+        this.setInteger(ROW_SPAN, rowSpan);
+    }
+
+    /**
+     * Gets the number of columns in the enclosing table that shall be spanned
+     * by the cell (ColSpan). The default value is 1.
+     * 
+     * @return the column span
+     */
+    public int getColSpan()
+    {
+        return this.getInteger(COL_SPAN, 1);
+    }
+
+    /**
+     * Sets the number of columns in the enclosing table that shall be spanned
+     * by the cell (ColSpan).
+     * 
+     * @param colSpan the column span
+     */
+    public void setColSpan(int colSpan)
+    {
+        this.setInteger(COL_SPAN, colSpan);
+    }
+
+    /**
+     * Gets the headers (Headers). An array of byte strings, where each string
+     * shall be the element identifier (see the
+     * {@link PDStructureElement#getElementIdentifier()}) for a TH structure
+     * element that shall be used as a header associated with this cell.
+     * 
+     * @return the headers.
+     */
+    public String[] getHeaders()
+    {
+        return this.getArrayOfString(HEADERS);
+    }
+
+    /**
+     * Sets the headers (Headers). An array of byte strings, where each string
+     * shall be the element identifier (see the
+     * {@link PDStructureElement#getElementIdentifier()}) for a TH structure
+     * element that shall be used as a header associated with this cell.
+     * 
+     * @param headers the headers
+     */
+    public void setHeaders(String[] headers)
+    {
+        this.setArrayOfString(HEADERS, headers);
+    }
+
+    /**
+     * Gets the scope (Scope). It shall reflect whether the header cell applies
+     * to the rest of the cells in the row that contains it, the column that
+     * contains it, or both the row and the column that contain it.
+     * 
+     * @return the scope
+     */
+    public String getScope()
+    {
+        return this.getName(SCOPE);
+    }
+
+    /**
+     * Sets the scope (Scope). It shall reflect whether the header cell applies
+     * to the rest of the cells in the row that contains it, the column that
+     * contains it, or both the row and the column that contain it. The value
+     * shall be one of the following:
+     * <ul>
+     *   <li>{@link #SCOPE_ROW},</li>
+     *   <li>{@link #SCOPE_COLUMN}, or</li>
+     *   <li>{@link #SCOPE_BOTH}.</li>
+     * </ul>
+     * 
+     * @param scope the scope
+     */
+    public void setScope(String scope)
+    {
+        this.setName(SCOPE, scope);
+    }
+
+    /**
+     * Gets the summary of the table’s purpose and structure.
+     * 
+     * @return the summary
+     */
+    public String getSummary()
+    {
+        return this.getString(SUMMARY);
+    }
+
+    /**
+     * Sets the summary of the table’s purpose and structure.
+     * 
+     * @param summary the summary
+     */
+    public void setSummary(String summary)
+    {
+        this.setString(SUMMARY, summary);
+    }
+
+    @Override
+    public String toString()
+    {
+        StringBuilder sb = new StringBuilder().append(super.toString());
+        if (this.isSpecified(ROW_SPAN))
+        {
+            sb.append(", RowSpan=").append(String.valueOf(this.getRowSpan()));
+        }
+        if (this.isSpecified(COL_SPAN))
+        {
+            sb.append(", ColSpan=").append(String.valueOf(this.getColSpan()));
+        }
+        if (this.isSpecified(HEADERS))
+        {
+            sb.append(", Headers=").append(arrayToString(this.getHeaders()));
+        }
+        if (this.isSpecified(SCOPE))
+        {
+            sb.append(", Scope=").append(this.getScope());
+        }
+        if (this.isSpecified(SUMMARY))
+        {
+            sb.append(", Summary=").append(this.getSummary());
+        }
+        return sb.toString();
+    }
+
+}

Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/StandardStructureTypes.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/StandardStructureTypes.java?rev=932448&view=auto
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/StandardStructureTypes.java (added)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/StandardStructureTypes.java Fri Apr  9 15:02:03 2010
@@ -0,0 +1,320 @@
+/*
+ * 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.taggedpdf;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * The standard structure types.
+ * 
+ * @author <a href="mailto:Johannes%20Koch%20%3Ckoch@apache.org%3E">Johannes Koch</a>
+ * @version $Revision: $
+ */
+public class StandardStructureTypes
+{
+
+    private StandardStructureTypes()
+    {
+    }
+
+
+    // Grouping Elements
+    /**
+     * Document
+     */
+    public static final String DOCUMENT = "Document";
+
+    /**
+     * Part
+     */
+    public static final String PART = "Part";
+
+    /**
+     * Art
+     */
+    public static final String ART = "Art";
+
+    /**
+     * Sect
+     */
+    public static final String SECT = "Sect";
+
+    /**
+     * Div
+     */
+    public static final String DIV = "Div";
+
+    /**
+     * BlockQuote
+     */
+    public static final String BLOCK_QUOTE = "BlockQuote";
+
+    /**
+     * Caption
+     */
+    public static final String CAPTION = "Caption";
+
+    /**
+     * TOC
+     */
+    public static final String TOC = "TOC";
+
+    /**
+     * TOCI
+     */
+    public static final String TOCI = "TOCI";
+
+    /**
+     * Index
+     */
+    public static final String INDEX = "Index";
+
+    /**
+     * NonStruct
+     */
+    public static final String NON_STRUCT = "NonStruct";
+
+    /**
+     * Private
+     */
+    public static final String PRIVATE = "Private";
+
+
+    // Block-Level Structure Elements
+    /**
+     * P
+     */
+    public static final String P = "P";
+
+    /**
+     * H
+     */
+    public static final String H = "H";
+
+    /**
+     * H1
+     */
+    public static final String H1 = "H1";
+
+    /**
+     * H2
+     */
+    public static final String H2 = "H2";
+
+    /**
+     * H3
+     */
+    public static final String H3 = "H3";
+
+    /**
+     * H4
+     */
+    public static final String H4 = "H4";
+
+    /**
+     * H5
+     */
+    public static final String H5 = "H5";
+
+    /**
+     * H6
+     */
+    public static final String H6 = "H6";
+
+    /**
+     * L
+     */
+    public static final String L = "L";
+
+    /**
+     * LI
+     */
+    public static final String LI = "LI";
+
+    /**
+     * Lbl
+     */
+    public static final String LBL = "Lbl";
+
+    /**
+     * LBody
+     */
+    public static final String L_BODY = "LBody";
+
+    /**
+     * Table
+     */
+    public static final String TABLE = "Table";
+
+    /**
+     * TR
+     */
+    public static final String TR = "TR";
+
+    /**
+     * TH
+     */
+    public static final String TH = "TH";
+
+    /**
+     * TD
+     */
+    public static final String TD = "TD";
+
+    /**
+     * THead
+     */
+    public static final String T_HEAD = "THead";
+
+    /**
+     * TBody
+     */
+    public static final String T_BODY = "TBody";
+
+    /**
+     * TFoot
+     */
+    public static final String T_FOOT = "TFoot";
+
+
+    // Inline-Level Structure Elements
+    /**
+     * Span
+     */
+    public static final String SPAN = "Span";
+
+    /**
+     * Quote
+     */
+    public static final String QUOTE = "Quote";
+
+    /**
+     * Note
+     */
+    public static final String NOTE = "Note";
+
+    /**
+     * Reference
+     */
+    public static final String REFERENCE = "Reference";
+
+    /**
+     * BibEntry
+     */
+    public static final String BIB_ENTRY = "BibEntry";
+
+    /**
+     * Code
+     */
+    public static final String CODE = "Code";
+
+    /**
+     * Link
+     */
+    public static final String LINK = "Link";
+
+    /**
+     * Annot
+     */
+    public static final String ANNOT = "Annot";
+
+    /**
+     * Ruby
+     */
+    public static final String RUBY = "Ruby";
+
+    /**
+     * RB
+     */
+    public static final String RB = "RB";
+
+    /**
+     * RT
+     */
+    public static final String RT = "RT";
+
+    /**
+     * RP
+     */
+    public static final String RP = "RP";
+
+    /**
+     * Warichu
+     */
+    public static final String WARICHU = "Warichu";
+
+    /**
+     * WT
+     */
+    public static final String WT = "WT";
+
+    /**
+     * WP
+     */
+    public static final String WP = "WP";
+
+
+    // Illustration Elements
+    /**
+     * Figure
+     */
+    public static final String Figure = "Figure";
+
+    /**
+     * Formula
+     */
+    public static final String FORMULA = "Formula";
+
+    /**
+     * Form
+     */
+    public static final String FORM = "Form";
+
+    /**
+     * All standard structure types.
+     */
+    public static List<String> types = new ArrayList<String>();
+
+    static
+    {
+        Field[] fields = StandardStructureTypes.class.getFields();
+        for (int i = 0; i < fields.length; i++)
+        {
+            if (Modifier.isFinal(fields[i].getModifiers()))
+            {
+                try
+                {
+                    types.add(fields[i].get(null).toString());
+                }
+                catch (IllegalArgumentException e)
+                {
+                    e.printStackTrace();
+                }
+                catch (IllegalAccessException e)
+                {
+                    e.printStackTrace();
+                }
+            }
+        }
+        Collections.sort(types);
+    }
+
+}

Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/package.html
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/package.html?rev=932448&view=auto
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/package.html (added)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/package.html Fri Apr  9 15:02:03 2010
@@ -0,0 +1,26 @@
+<!--
+ ! 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.
+ !-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+
+</head>
+<body>
+The tagged PDF package provides a mechanism for incorporating "tags" (standard
+structure types and attributes) into a PDF file.
+</body>
+</html>