All Implemented Interfaces:
COSObjectable
Direct Known Subclasses:
PDCheckBox, PDPushButton, PDRadioButton

public abstract class PDButton extends PDTerminalField
A button field represents an interactive control on the screen that the user can manipulate with the mouse.
  • Field Details

    • FLAG_RADIO

      static final int FLAG_RADIO
      A Ff flag. If set, the field is a set of radio buttons
      See Also:
    • FLAG_PUSHBUTTON

      static final int FLAG_PUSHBUTTON
      A Ff flag. If set, the field is a pushbutton.
      See Also:
    • FLAG_RADIOS_IN_UNISON

      static final int FLAG_RADIOS_IN_UNISON
      A Ff flag. If set, radio buttons individual fields, using the same value for the on state will turn on and off in unison.
      See Also:
  • Constructor Details

    • PDButton

      public PDButton(PDAcroForm acroForm)
      Parameters:
      acroForm - The acroform.
      See Also:
    • PDButton

      PDButton(PDAcroForm acroForm, COSDictionary field, PDNonTerminalField parent)
      Constructor.
      Parameters:
      acroForm - The form that this field is part of.
      field - the PDF object to represent as a field.
      parent - the parent node of the node
  • Method Details

    • isPushButton

      public boolean isPushButton()
      Determines if push button bit is set.
      Returns:
      true if type of button field is a push button.
    • setPushButton

      @Deprecated public void setPushButton(boolean pushbutton)
      Deprecated.
      use PDPushButton instead
      Set the push button bit.
      Parameters:
      pushbutton - if true the button field is treated as a push button field.
    • isRadioButton

      public boolean isRadioButton()
      Determines if radio button bit is set.
      Returns:
      true if type of button field is a radio button.
    • setRadioButton

      @Deprecated public void setRadioButton(boolean radiobutton)
      Deprecated.
      use PDRadioButton instead
      Set the radio button bit.
      Parameters:
      radiobutton - if true the button field is treated as a radio button field.
    • getValue

      public String getValue()
      Returns the selected value.

      Off is the default value which will also be returned if the value hasn't been set at all.

      Returns:
      A non-null string.
    • setValue

      public void setValue(String value) throws IOException
      Sets the selected option given its name. It also tries to update the visual appearance, unless PDAcroForm.getNeedAppearances() is true.
      Specified by:
      setValue in class PDField
      Parameters:
      value - Name of option to select
      Throws:
      IOException - if the value could not be set
      IllegalArgumentException - if the value is not a valid option.
    • setValue

      public void setValue(int index) throws IOException
      Set the selected option given its index, and try to update the visual appearance. NOTE: this method is only usable if there are export values and used for radio buttons with FLAG_RADIOS_IN_UNISON not set.
      Parameters:
      index - index of option to be selected
      Throws:
      IOException - if the value could not be set
      IllegalArgumentException - if the index provided is not a valid index.
    • getDefaultValue

      public String getDefaultValue()
      Returns the default value, if any.
      Returns:
      A non-null string.
    • setDefaultValue

      public void setDefaultValue(String value)
      Sets the default value.
      Parameters:
      value - Name of option to select
      Throws:
      IllegalArgumentException - if the value is not a valid option.
    • getValueAsString

      public String getValueAsString()
      Description copied from class: PDField
      Returns a string representation of the "V" entry, or an empty string.
      Specified by:
      getValueAsString in class PDField
      Returns:
      The list of widget annotations.
    • getExportValues

      public List<String> getExportValues()
      This will get the (optional) export values.

      The export values are defined in the field dictionaries /Opt key.

      The option values are used to define the export values for the field to

      • hold values in non-Latin writing systems as name objects, which represent the field value, are limited to PDFDocEncoding
      • allow radio buttons having the same export value to be handled independently
      Returns:
      List containing all possible export values. If there is no /Opt entry an empty list will be returned.
      See Also:
    • setExportValues

      public void setExportValues(List<String> values)
      This will set the export values.
      Parameters:
      values - List containing all possible export values. Supplying null or an empty list will remove the Opt entry.
      See Also:
    • constructAppearances

      void constructAppearances() throws IOException
      Description copied from class: PDTerminalField
      Constructs appearance streams and appearance dictionaries for all widget annotations. Subclasses should not call this method directly but via PDTerminalField.applyChange().
      Specified by:
      constructAppearances in class PDTerminalField
      Throws:
      IOException - if the appearance couldn't be generated
    • getOnValues

      public Set<String> getOnValues()
      Get the values to set individual buttons within a group to the on state.

      The On value could be an arbitrary string as long as it is within the limitations of a PDF name object. The Off value shall always be 'Off'. If not set or not part of the normal appearance keys 'Off' is the default

      Returns:
      the potential values setting the check box to the On state. If an empty Set is returned there is no appearance definition.
    • getOnValue

      private String getOnValue(int index)
    • getOnValueForWidget

      private String getOnValueForWidget(PDAnnotationWidget widget)
    • checkValue

      void checkValue(String value)
      Checks value.
      Parameters:
      value - Name of radio button to select
      Throws:
      IllegalArgumentException - if the value is not a valid option.
    • updateByValue

      private void updateByValue(String value) throws IOException
      Throws:
      IOException
    • updateByOption

      private void updateByOption(String value) throws IOException
      Throws:
      IOException