org.apache.fop.pdf

## Class PDFStructElem

- java.lang.Object
- - org.apache.fop.pdf.PDFObject
  - - org.apache.fop.pdf.PDFDictionary
    - - org.apache.fop.pdf.StructureHierarchyMember
      - - org.apache.fop.pdf.PDFStructElem

- All Implemented Interfaces:
    Serializable, StructureTreeElement, PDFWritable
  Direct Known Subclasses:
    PageSequenceStructElem, PDFStructElem.Placeholder

      public class PDFStructElem
      extends StructureHierarchyMember
      implements StructureTreeElement, Serializable

  Class representing a PDF Structure Element.
  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `PDFStructElem.Placeholder` Class representing a placeholder for a PDF Structure Element.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected List<PDFObject>` | `kids` Elements to be added to the kids array.
    `protected PDFStructElem` | `parentElement`

    - ### Fields inherited from class org.apache.fop.pdf.PDFDictionary

      `entries, order`

    - ### Fields inherited from class org.apache.fop.pdf.PDFObject

      `log`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PDFStructElem()` Creates PDFStructElem with no entries.
    `PDFStructElem(PDFObject parent, StructureType structureType)` Creates a new structure element.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addKid(PDFObject kid)` Adds a kid to this structure element.
    `void` | `addKidInSpecificOrder(int position, PDFStructElem kid)`
    `protected boolean` | `attachKids()` Attaches all valid kids to the kids array.
    `List<PDFObject>` | `getKids()`
    `String` | `getLanguage()` Returns the language of this structure element.
    `PDFStructElem` | `getParentStructElem()` Returns the parent of this structure element.
    `StructureType` | `getStructureType()` Returns the structure type of this structure element.
    `int` | `output(OutputStream stream)` Write the PDF represention of this object
    `void` | `setLanguage(Locale language)` Sets the language of this structure element.
    `void` | `setMCIDKid(int mcid)` Sets the given mcid as the kid of this structure element.
    `void` | `setPage(PDFPage page)` Sets the page reference of this structure element.
    `void` | `setParent(PDFObject parent)` Sets the direct parent object.
    `void` | `setTableAttributeColSpan(int colSpan)`
    `void` | `setTableAttributeRowSpan(int rowSpan)`
    `protected void` | `writeDictionary(OutputStream out, StringBuilder textBuffer)` Writes the contents of the dictionary to a StringBuffer.

    - ### Methods inherited from class org.apache.fop.pdf.PDFDictionary

      `containsKey, get, getChildren, getChildren, keySet, put, put, remove`

    - ### Methods inherited from class org.apache.fop.pdf.PDFObject

      `contentEquals, encode, encodeBinaryToHexString, encodeString, encodeText, formatObject, getDocument, getDocumentSafely, getGeneration, getObjectID, getObjectNumber, getParent, hasObjectNumber, makeReference, outputInline, referencePDF, setDocument, setObjectNumber, setObjectNumber, setObjectNumber, supportsObjectStream, toPDF, toPDFString`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### parentElement

          protected PDFStructElem parentElement

    - #### kids

          protected List<PDFObject> kids

      Elements to be added to the kids array.

  - ### Constructor Detail

    - #### PDFStructElem

          public PDFStructElem()

      Creates PDFStructElem with no entries.

    - #### PDFStructElem

          public PDFStructElem(PDFObject parent,
                               StructureType structureType)

      Creates a new structure element.
      Parameters:
        `parent` - parent of this element
        `structureType` - the structure type of this element

  - ### Method Detail

    - #### getParentStructElem

          public PDFStructElem getParentStructElem()

      Returns the parent of this structure element.
      Returns:
        the parent, `null` if the parent is not a structure element (i.e., is the structure tree root)

    - #### setParent

          public void setParent(PDFObject parent)

      Sets the direct parent object.
      Overrides:
        `setParent` in class `PDFObject`
      Parameters:
        `parent` - the direct parent

    - #### addKid

          public void addKid(PDFObject kid)

      Adds a kid to this structure element.
      Specified by:
        `addKid` in class `StructureHierarchyMember`
      Parameters:
        `kid` - element to be added

    - #### setMCIDKid

          public void setMCIDKid(int mcid)

      Sets the given mcid as the kid of this structure element. This element will then add itself to its parent structure element if it has not already, and so will the parent, and so on.
      Parameters:
        `mcid` - mcid of the marked-content sequence corresponding to this structure element's kid

    - #### setPage

          public void setPage(PDFPage page)

      Sets the page reference of this structure element.
      Parameters:
        `page` - value for the Pg entry

    - #### getStructureType

          public StructureType getStructureType()

      Returns the structure type of this structure element.
      Returns:
        the value of the S entry

    - #### setLanguage

          public void setLanguage(Locale language)

      Sets the language of this structure element.
      Parameters:
        `language` - a value for the Lang entry

    - #### getLanguage

          public String getLanguage()

      Returns the language of this structure element.
      Returns:
        the value of the Lang entry (`null` if no language was specified)

    - #### writeDictionary

          protected void writeDictionary(OutputStream out,
                                         StringBuilder textBuffer)
                                  throws IOException

      Description copied from class: `PDFDictionary`
      Writes the contents of the dictionary to a StringBuffer.
      Overrides:
        `writeDictionary` in class `PDFDictionary`
      Parameters:
        `out` - the OutputStream (for binary content)
        `textBuffer` - the text buffer for text output
      Throws:
        `IOException` - if an I/O error occurs

    - #### addKidInSpecificOrder

          public void addKidInSpecificOrder(int position,
                                            PDFStructElem kid)

    - #### attachKids

          protected boolean attachKids()

      Attaches all valid kids to the kids array.
      Returns:
        true iff 1+ kids were added to the kids array

    - #### setTableAttributeColSpan

          public void setTableAttributeColSpan(int colSpan)

    - #### setTableAttributeRowSpan

          public void setTableAttributeRowSpan(int rowSpan)

    - #### getKids

          public List<PDFObject> getKids()

    - #### output

          public int output(OutputStream stream)
                     throws IOException

      Description copied from class: `PDFDictionary`
      Write the PDF represention of this object
      Overrides:
        `output` in class `PDFDictionary`
      Parameters:
        `stream` - the stream to write the PDF to
      Returns:
        the number of bytes written
      Throws:
        `IOException` - if there is an error writing to the stream

Copyright © 2025 Apache Software Foundation. All rights reserved.