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
`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
`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