com.lowagie.text.pdf

## Class PushbuttonField

- java.lang.Object
- - com.lowagie.text.pdf.BaseField
  - - com.lowagie.text.pdf.PushbuttonField

-     public class PushbuttonField
      extends BaseField

  Creates a pushbutton field. It supports all the text and icon alignments. The icon may be an image or a template.

  Example usage:

       Document document = new Document(PageSize.A4, 50, 50, 50, 50);
       PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("output.pdf"));
       document.open();
       PdfContentByte cb = writer.getDirectContent();
       Image img = Image.getInstance("image.png");
       PushbuttonField bt = new PushbuttonField(writer, new Rectangle(100, 100, 200, 200), "Button1");
       bt.setText("My Caption");
       bt.setFontSize(0);
       bt.setImage(img);
       bt.setLayout(PushbuttonField.LAYOUT_ICON_TOP_LABEL_BOTTOM);
       bt.setBackgroundColor(Color.cyan);
       bt.setBorderStyle(PdfBorderDictionary.STYLE_SOLID);
       bt.setBorderColor(Color.red);
       bt.setBorderWidth(3);
       PdfFormField ff = bt.getField();
       PdfAction ac = PdfAction.createSubmitForm("http://www.submit-site.com", null, 0);
       ff.setAction(ac);
       writer.addAnnotation(ff);
       document.close();

  Author:
    Paulo Soares (psoares@consiste.pt)

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private boolean` | `iconFitToBounds` Holds value of property iconFitToBounds.
    `private float` | `iconHorizontalAdjustment` Holds value of property iconHorizontalAdjustment.
    `private PRIndirectReference` | `iconReference` Holds value of property iconReference.
    `private float` | `iconVerticalAdjustment` Holds value of property iconVerticalAdjustment.
    `private Image` | `image` Holds value of property image.
    `private int` | `layout` Holds value of property layout.
    `static int` | `LAYOUT_ICON_LEFT_LABEL_RIGHT` A layout option
    `static int` | `LAYOUT_ICON_ONLY` A layout option
    `static int` | `LAYOUT_ICON_TOP_LABEL_BOTTOM` A layout option
    `static int` | `LAYOUT_LABEL_LEFT_ICON_RIGHT` A layout option
    `static int` | `LAYOUT_LABEL_ONLY` A layout option
    `static int` | `LAYOUT_LABEL_OVER_ICON` A layout option
    `static int` | `LAYOUT_LABEL_TOP_ICON_BOTTOM` A layout option
    `private boolean` | `proportionalIcon` Holds value of property proportionalIcon.
    `static int` | `SCALE_ICON_ALWAYS` An icon scaling option
    `static int` | `SCALE_ICON_IS_TOO_BIG` An icon scaling option
    `static int` | `SCALE_ICON_IS_TOO_SMALL` An icon scaling option
    `static int` | `SCALE_ICON_NEVER` An icon scaling option
    `private int` | `scaleIcon` Holds value of property scaleIcon.
    `private PdfTemplate` | `template` Holds value of property template.
    `private PdfTemplate` | `tp`

    - ### Fields inherited from class com.lowagie.text.pdf.BaseField

      `alignment, backgroundColor, BORDER_WIDTH_MEDIUM, BORDER_WIDTH_THICK, BORDER_WIDTH_THIN, borderColor, borderStyle, borderWidth, box, COMB, DO_NOT_SCROLL, DO_NOT_SPELL_CHECK, EDIT, fieldName, FILE_SELECTION, font, fontSize, HIDDEN, HIDDEN_BUT_PRINTABLE, maxCharacterLength, MULTILINE, MULTISELECT, options, PASSWORD, READ_ONLY, REQUIRED, rotation, text, textColor, visibility, VISIBLE, VISIBLE_BUT_DOES_NOT_PRINT, writer`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PushbuttonField(PdfWriter writer, Rectangle box, java.lang.String fieldName)` Creates a new instance of PushbuttonField

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `private float` | `calculateFontSize(float w, float h)`
    `PdfAppearance` | `getAppearance()` Gets the button appearance.
    `PdfFormField` | `getField()` Gets the pushbutton field.
    `float` | `getIconHorizontalAdjustment()` Getter for property iconHorizontalAdjustment.
    `PRIndirectReference` | `getIconReference()` Gets the reference to an existing icon.
    `float` | `getIconVerticalAdjustment()` Getter for property iconVerticalAdjustment.
    `Image` | `getImage()` Getter for property image.
    `int` | `getLayout()` Getter for property layout.
    `int` | `getScaleIcon()` Getter for property scaleIcon.
    `PdfTemplate` | `getTemplate()` Getter for property template.
    `boolean` | `isIconFitToBounds()` Getter for property iconFitToBounds.
    `boolean` | `isProportionalIcon()` Getter for property proportionalIcon.
    `void` | `setIconFitToBounds(boolean iconFitToBounds)` If `true` the icon will be scaled to fit fully within the bounds of the annotation, if `false` the border width will be taken into account.
    `void` | `setIconHorizontalAdjustment(float iconHorizontalAdjustment)` A number between 0 and 1 indicating the fraction of leftover space to allocate at the left of the icon.
    `void` | `setIconReference(PRIndirectReference iconReference)` Sets the reference to an existing icon.
    `void` | `setIconVerticalAdjustment(float iconVerticalAdjustment)` A number between 0 and 1 indicating the fraction of leftover space to allocate at the bottom of the icon.
    `void` | `setImage(Image image)` Sets the icon as an image.
    `void` | `setLayout(int layout)` Sets the icon and label layout.
    `void` | `setProportionalIcon(boolean proportionalIcon)` Sets the way the icon is scaled.
    `void` | `setScaleIcon(int scaleIcon)` Sets the way the icon will be scaled.
    `void` | `setTemplate(PdfTemplate template)` Sets the icon as a template.

    - ### Methods inherited from class com.lowagie.text.pdf.BaseField

      `breakLines, getAlignment, getBackgroundColor, getBorderAppearance, getBorderColor, getBorderStyle, getBorderWidth, getBox, getFieldName, getFont, getFontSize, getHardBreaks, getMaxCharacterLength, getOptions, getRealFont, getRotation, getText, getTextColor, getVisibility, getWriter, moveFields, setAlignment, setBackgroundColor, setBorderColor, setBorderStyle, setBorderWidth, setBox, setFieldName, setFont, setFontSize, setMaxCharacterLength, setOptions, setRotation, setRotationFromPage, setText, setTextColor, setVisibility, setWriter, trimRight`

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

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

- - ### Field Detail

    - #### LAYOUT_LABEL_ONLY

          public static final int LAYOUT_LABEL_ONLY

      A layout option
      See Also:
        Constant Field Values

    - #### LAYOUT_ICON_ONLY

          public static final int LAYOUT_ICON_ONLY

      A layout option
      See Also:
        Constant Field Values

    - #### LAYOUT_ICON_TOP_LABEL_BOTTOM

          public static final int LAYOUT_ICON_TOP_LABEL_BOTTOM

      A layout option
      See Also:
        Constant Field Values

    - #### LAYOUT_LABEL_TOP_ICON_BOTTOM

          public static final int LAYOUT_LABEL_TOP_ICON_BOTTOM

      A layout option
      See Also:
        Constant Field Values

    - #### LAYOUT_ICON_LEFT_LABEL_RIGHT

          public static final int LAYOUT_ICON_LEFT_LABEL_RIGHT

      A layout option
      See Also:
        Constant Field Values

    - #### LAYOUT_LABEL_LEFT_ICON_RIGHT

          public static final int LAYOUT_LABEL_LEFT_ICON_RIGHT

      A layout option
      See Also:
        Constant Field Values

    - #### LAYOUT_LABEL_OVER_ICON

          public static final int LAYOUT_LABEL_OVER_ICON

      A layout option
      See Also:
        Constant Field Values

    - #### SCALE_ICON_ALWAYS

          public static final int SCALE_ICON_ALWAYS

      An icon scaling option
      See Also:
        Constant Field Values

    - #### SCALE_ICON_NEVER

          public static final int SCALE_ICON_NEVER

      An icon scaling option
      See Also:
        Constant Field Values

    - #### SCALE_ICON_IS_TOO_BIG

          public static final int SCALE_ICON_IS_TOO_BIG

      An icon scaling option
      See Also:
        Constant Field Values

    - #### SCALE_ICON_IS_TOO_SMALL

          public static final int SCALE_ICON_IS_TOO_SMALL

      An icon scaling option
      See Also:
        Constant Field Values

    - #### layout

          private int layout

      Holds value of property layout.

    - #### image

          private Image image

      Holds value of property image.

    - #### template

          private PdfTemplate template

      Holds value of property template.

    - #### scaleIcon

          private int scaleIcon

      Holds value of property scaleIcon.

    - #### proportionalIcon

          private boolean proportionalIcon

      Holds value of property proportionalIcon.

    - #### iconVerticalAdjustment

          private float iconVerticalAdjustment

      Holds value of property iconVerticalAdjustment.

    - #### iconHorizontalAdjustment

          private float iconHorizontalAdjustment

      Holds value of property iconHorizontalAdjustment.

    - #### iconFitToBounds

          private boolean iconFitToBounds

      Holds value of property iconFitToBounds.

    - #### tp

          private PdfTemplate tp

    - #### iconReference

          private PRIndirectReference iconReference

      Holds value of property iconReference.

  - ### Constructor Detail

    - #### PushbuttonField

          public PushbuttonField(PdfWriter writer,
                         Rectangle box,
                         java.lang.String fieldName)

      Creates a new instance of PushbuttonField
      Parameters:
        `writer` - the document `PdfWriter`
        `box` - the field location and dimensions
        `fieldName` - the field name. If `null` only the widget keys will be included in the field allowing it to be used as a kid field.

  - ### Method Detail

    - #### getLayout

          public int getLayout()

      Getter for property layout.
      Returns:
        Value of property layout.

    - #### setLayout

          public void setLayout(int layout)

      Sets the icon and label layout. Possible values are `LAYOUT_LABEL_ONLY`, `LAYOUT_ICON_ONLY`, `LAYOUT_ICON_TOP_LABEL_BOTTOM`, `LAYOUT_LABEL_TOP_ICON_BOTTOM`, `LAYOUT_ICON_LEFT_LABEL_RIGHT`, `LAYOUT_LABEL_LEFT_ICON_RIGHT` and `LAYOUT_LABEL_OVER_ICON`. The default is `LAYOUT_LABEL_ONLY`.
      Parameters:
        `layout` - New value of property layout.

    - #### getImage

          public Image getImage()

      Getter for property image.
      Returns:
        Value of property image.

    - #### setImage

          public void setImage(Image image)

      Sets the icon as an image.
      Parameters:
        `image` - the image

    - #### getTemplate

          public PdfTemplate getTemplate()

      Getter for property template.
      Returns:
        Value of property template.

    - #### setTemplate

          public void setTemplate(PdfTemplate template)

      Sets the icon as a template.
      Parameters:
        `template` - the template

    - #### getScaleIcon

          public int getScaleIcon()

      Getter for property scaleIcon.
      Returns:
        Value of property scaleIcon.

    - #### setScaleIcon

          public void setScaleIcon(int scaleIcon)

      Sets the way the icon will be scaled. Possible values are `SCALE_ICON_ALWAYS`, `SCALE_ICON_NEVER`, `SCALE_ICON_IS_TOO_BIG` and `SCALE_ICON_IS_TOO_SMALL`. The default is `SCALE_ICON_ALWAYS`.
      Parameters:
        `scaleIcon` - the way the icon will be scaled

    - #### isProportionalIcon

          public boolean isProportionalIcon()

      Getter for property proportionalIcon.
      Returns:
        Value of property proportionalIcon.

    - #### setProportionalIcon

          public void setProportionalIcon(boolean proportionalIcon)

      Sets the way the icon is scaled. If `true` the icon is scaled proportionally, if `false` the scaling is done anamorphicaly.
      Parameters:
        `proportionalIcon` - the way the icon is scaled

    - #### getIconVerticalAdjustment

          public float getIconVerticalAdjustment()

      Getter for property iconVerticalAdjustment.
      Returns:
        Value of property iconVerticalAdjustment.

    - #### setIconVerticalAdjustment

          public void setIconVerticalAdjustment(float iconVerticalAdjustment)

      A number between 0 and 1 indicating the fraction of leftover space to allocate at the bottom of the icon. A value of 0 positions the icon at the bottom of the annotation rectangle. A value of 0.5 centers it within the rectangle. The default is 0.5.
      Parameters:
        `iconVerticalAdjustment` - a number between 0 and 1 indicating the fraction of leftover space to allocate at the bottom of the icon

    - #### getIconHorizontalAdjustment

          public float getIconHorizontalAdjustment()

      Getter for property iconHorizontalAdjustment.
      Returns:
        Value of property iconHorizontalAdjustment.

    - #### setIconHorizontalAdjustment

          public void setIconHorizontalAdjustment(float iconHorizontalAdjustment)

      A number between 0 and 1 indicating the fraction of leftover space to allocate at the left of the icon. A value of 0 positions the icon at the left of the annotation rectangle. A value of 0.5 centers it within the rectangle. The default is 0.5.
      Parameters:
        `iconHorizontalAdjustment` - a number between 0 and 1 indicating the fraction of leftover space to allocate at the left of the icon

    - #### calculateFontSize

          private float calculateFontSize(float w,
                                float h)
                                   throws java.io.IOException,
                                          DocumentException

      Throws:
        `java.io.IOException`
        `DocumentException`

    - #### getAppearance

          public PdfAppearance getAppearance()
                                      throws java.io.IOException,
                                             DocumentException

      Gets the button appearance.
      Returns:
        the button appearance
      Throws:
        `java.io.IOException` - on error
        `DocumentException` - on error

    - #### getField

          public PdfFormField getField()
                                throws java.io.IOException,
                                       DocumentException

      Gets the pushbutton field.
      Returns:
        the pushbutton field
      Throws:
        `java.io.IOException` - on error
        `DocumentException` - on error

    - #### isIconFitToBounds

          public boolean isIconFitToBounds()

      Getter for property iconFitToBounds.
      Returns:
        Value of property iconFitToBounds.

    - #### setIconFitToBounds

          public void setIconFitToBounds(boolean iconFitToBounds)

      If `true` the icon will be scaled to fit fully within the bounds of the annotation, if `false` the border width will be taken into account. The default is `false`.
      Parameters:
        `iconFitToBounds` - if `true` the icon will be scaled to fit fully within the bounds of the annotation, if `false` the border width will be taken into account

    - #### getIconReference

          public PRIndirectReference getIconReference()

      Gets the reference to an existing icon.
      Returns:
        the reference to an existing icon.

    - #### setIconReference

          public void setIconReference(PRIndirectReference iconReference)

      Sets the reference to an existing icon.
      Parameters:
        `iconReference` - the reference to an existing icon