Class PdfFormAnnotation

    • Field Detail

      • VISIBLE_BUT_DOES_NOT_PRINT

        public static final int VISIBLE_BUT_DOES_NOT_PRINT
        See Also:
        Constant Field Values
      • OFF_STATE_VALUE

        public static final java.lang.String OFF_STATE_VALUE
        Value which represents "off" state of form field.
        See Also:
        Constant Field Values
      • ON_STATE_VALUE

        public static final java.lang.String ON_STATE_VALUE
        Value which represents "on" state of form field.
        See Also:
        Constant Field Values
      • LOGGER

        private static final org.slf4j.Logger LOGGER
      • LINE_ENDINGS_REGEXP

        private static final java.lang.String LINE_ENDINGS_REGEXP
        See Also:
        Constant Field Values
      • borderWidth

        protected float borderWidth
      • backgroundColor

        protected Color backgroundColor
      • borderColor

        protected Color borderColor
      • formFieldElement

        private IFormField formFieldElement
    • Constructor Detail

      • PdfFormAnnotation

        protected PdfFormAnnotation​(PdfDictionary pdfObject)
        Creates a form field annotation as a wrapper object around a PdfDictionary. This PdfDictionary must be an indirect object.
        Parameters:
        pdfObject - the dictionary to be wrapped, must have an indirect reference.
    • Method Detail

      • getDefaultAppearance

        public PdfString getDefaultAppearance()
        Gets default appearance string containing a sequence of valid page-content graphics or text state operators that define such properties as the field's text size and color.
        Specified by:
        getDefaultAppearance in class AbstractPdfFormField
        Returns:
        the default appearance graphics, as a PdfString.
      • regenerateField

        public boolean regenerateField()
        This method regenerates appearance stream of the field. Use it if you changed any field parameters and didn't use setValue method which generates appearance by itself.
        Specified by:
        regenerateField in class AbstractPdfFormField
        Returns:
        whether or not the regeneration was successful.
      • getAppearanceStates

        public java.lang.String[] getAppearanceStates()
        Gets the appearance state names.
        Specified by:
        getAppearanceStates in class AbstractPdfFormField
        Returns:
        an array of Strings containing the names of the appearance states.
      • setBackgroundColor

        public PdfFormAnnotation setBackgroundColor​(Color backgroundColor)
        Basic setter for the backgroundColor property. Regenerates the field appearance after setting the new value.
        Parameters:
        backgroundColor - The new color to be set or null if no background needed.
        Returns:
        The edited PdfFormAnnotation.
      • setCaption

        public PdfFormAnnotation setCaption​(java.lang.String caption)
        Basic setter for the push button caption. Regenerates the field appearance after setting the new caption.
        Parameters:
        caption - button caption to be set.
        Returns:
        The edited PdfFormAnnotation.
      • setCaption

        public PdfFormAnnotation setCaption​(java.lang.String caption,
                                            boolean regenerateField)
        Basic setter for the push button caption. Regenerates the field appearance after setting the new caption if corresponding parameter is specified.
        Parameters:
        caption - button caption to be set.
        regenerateField - true if field should be regenerated, false otherwise.
        Returns:
        The edited PdfFormAnnotation.
      • getRotation

        public int getRotation()
        Get rotation property specified in this form annotation.
        Returns:
        int value which represents field's rotation
      • setRotation

        public PdfFormAnnotation setRotation​(int degRotation)
        Basic setter for the degRotation property. Regenerates the field appearance after setting the new value.
        Parameters:
        degRotation - The new degRotation to be set
        Returns:
        The edited PdfFormAnnotation.
      • setVisibility

        public PdfFormAnnotation setVisibility​(int visibility)
        Set the visibility flags of the form field annotation. Options are: HIDDEN, HIDDEN_BUT_PRINTABLE, VISIBLE, VISIBLE_BUT_DOES_NOT_PRINT.
        Parameters:
        visibility - visibility option.
        Returns:
        The edited PdfFormAnnotation.
      • getBorderWidth

        public float getBorderWidth()
        Gets the border width for the field.
        Returns:
        the current border width.
      • setBorderWidth

        public PdfFormAnnotation setBorderWidth​(float borderWidth)
        Sets the border width for the field.
        Parameters:
        borderWidth - The new border width.
        Returns:
        The edited PdfFormAnnotation.
      • getBorder

        public Border getBorder()
        Get border object specified in the widget annotation dictionary.
        Returns:
        Border specified in the widget annotation dictionary
      • setPage

        public PdfFormAnnotation setPage​(int pageNum)
        Specifies on which page the form field's widget must be shown.
        Parameters:
        pageNum - the page number.
        Returns:
        The edited PdfFormAnnotation.
      • setFormFieldElement

        public PdfFormAnnotation setFormFieldElement​(IFormField element)
        This method sets the model element associated with the current annotation and can be useful to take into account when drawing those properties that the annotation does not have. Note that annotation properties will take precedence, so such properties cannot be overridden by using this method (e.g. background, text color, etc.).

        Also note that the model element won't be used for annotations for choice form field.

        Parameters:
        element - model element to set
        Returns:
        this PdfFormAnnotation
      • setAppearance

        public PdfFormAnnotation setAppearance​(PdfName appearanceType,
                                               java.lang.String appearanceState,
                                               PdfStream appearanceStream)
        Sets an appearance for (the widgets related to) the form field.
        Parameters:
        appearanceType - the type of appearance stream to be added
        • PdfName.N: normal appearance
        • PdfName.R: rollover appearance
        • PdfName.D: down appearance
        appearanceState - the state of the form field that needs to be true for the appearance to be used. Differentiates between several streams of the same type.
        appearanceStream - the appearance instructions, as a PdfStream.
        Returns:
        The edited PdfFormAnnotation.
      • setCheckBoxAppearanceOnStateName

        public PdfFormAnnotation setCheckBoxAppearanceOnStateName​(java.lang.String onStateName)
        Sets on state name for the checkbox annotation normal appearance and regenerates widget.
        Parameters:
        onStateName - the new appearance name representing on state.
        Returns:
        The edited PdfFormAnnotation.
      • setAlternativeDescription

        public PdfFormAnnotation setAlternativeDescription​(java.lang.String alternativeDescription)
        Changes the alternative description of the annotation to the specified value.
        Parameters:
        alternativeDescription - string to be used as alternative description.
        Returns:
        The edited PdfFormAnnotation.
      • getAlternativeDescription

        public PdfString getAlternativeDescription()
        Gets the current alternative description.
        Returns:
        the current alternative description.
      • getRect

        protected Rectangle getRect​(PdfDictionary field)
        Gets a Rectangle that matches the current size and position of this form field.
        Parameters:
        field - current form field.
        Returns:
        a Rectangle that matches the current size and position of this form field annotation.
      • drawBorder

        protected void drawBorder​(PdfCanvas canvas,
                                  PdfFormXObject xObject,
                                  float width,
                                  float height)
        Draws a border using the borderWidth and borderColor of the form field.
        Parameters:
        canvas - The PdfCanvas on which to draw
        xObject - The PdfFormXObject
        width - The width of the rectangle to draw
        height - The height of the rectangle to draw
      • drawPushButtonFieldAndSaveAppearance

        protected void drawPushButtonFieldAndSaveAppearance()
        Draws the appearance of a push button and saves it into an appearance stream.
      • drawSignatureFormFieldAndSaveAppearance

        protected void drawSignatureFormFieldAndSaveAppearance()
        Draws the appearance of a signature field and saves it into an appearance stream.
      • drawRadioButtonAndSaveAppearance

        protected void drawRadioButtonAndSaveAppearance​(java.lang.String value)
        Draws the appearance of a radio button with a specified value and saves it into an appearance stream.
        Parameters:
        value - the value of the radio button.
      • drawListFormFieldAndSaveAppearance

        protected void drawListFormFieldAndSaveAppearance()
        Draws the appearance of a list box form field and saves it into an appearance stream.
      • drawTextFormFieldAndSaveAppearance

        protected void drawTextFormFieldAndSaveAppearance()
        Draws the appearance of a text form field and saves it into an appearance stream.
      • drawComboBoxAndSaveAppearance

        protected void drawComboBoxAndSaveAppearance()
        Draws the appearance of a Combo box form field and saves it into an appearance stream.
      • prepareComboBoxFieldWithCorrectOptionsAndValues

        private void prepareComboBoxFieldWithCorrectOptionsAndValues​(ComboBoxField comboBoxField)
      • drawCheckBoxAndSaveAppearance

        protected void drawCheckBoxAndSaveAppearance​(java.lang.String onStateName)
        Draw a checkbox and save its appearance.
        Parameters:
        onStateName - the name of the appearance state for the checked state
      • setMetaInfoToCanvas

        static void setMetaInfoToCanvas​(Canvas canvas)
      • regenerateWidget

        boolean regenerateWidget()
      • fontRequiredForRegeneration

        private boolean fontRequiredForRegeneration()
      • createInputButton

        void createInputButton()
      • createSigField

        void createSigField()
      • getFontSize

        float getFontSize​(PdfArray bBox,
                          java.lang.String value)
      • isCombTextFormField

        private boolean isCombTextFormField()
      • getRadioButtonValue

        private java.lang.String getRadioButtonValue()
      • getCheckBoxValue

        private java.lang.String getCheckBoxValue()
      • reconstructCheckBoxType

        private void reconstructCheckBoxType()
      • createCheckBox

        private void createCheckBox()
      • setModelElementProperties

        private void setModelElementProperties​(Rectangle rectangle)
      • getRotationMatrix

        private static PdfArray getRotationMatrix​(int rotation,
                                                  float height,
                                                  float width)
      • appearancePropToColor

        private static Color appearancePropToColor​(PdfDictionary appearanceCharacteristics,
                                                   PdfName property)
      • appearancePropToCaption

        private static java.lang.String appearancePropToCaption​(PdfDictionary appearanceCharacteristics)
      • isCheckBox

        private boolean isCheckBox()
      • isFieldInvisible

        private static boolean isFieldInvisible​(Rectangle rect)
        Gets the visibility status of the signature.
        Returns:
        the visibility status of the signature
      • createTopLayer

        private PdfFormXObject createTopLayer​(float width,
                                              float height)
        Signature appearance is assembled with the top-level and second-level XObjects and the standard layers. The AP dictionary’s N attribute references a top-level XObject. This top-level XObject is necessary to properly resize signature appearances when these appearances are referred to by more than one signature field. The top-level XObject performs a Do on the second-level XObjects (n0 and n2 painted in sequence). The matrix may change if the signature is resized.
        Parameters:
        width - the width of the annotation rectangle.
        height - the height of the annotation rectangle.
        Returns:
        top layer xObject (/FRM).
        See Also:
        Adobe Pdf Digital Signature Appearances
      • createN0Layer

        private PdfFormXObject createN0Layer​(float width,
                                             float height)
        The background layer that is present when creating the signature field. This layer renders the background and border of the annotation. The Matrix of this XObject is unity and the BBox is that of the original annotation.

        In the default itext implementation n0 layer is either a blank xObject or normal appearance of the existed field (in case signature field was created but not signed) when reuseAppearance property is true, but user can modify n0 layer manually.

        Parameters:
        width - the width of the annotation rectangle.
        height - the height of the annotation rectangle.
        Returns:
        n0 layer xObject.
      • createN2Layer

        private PdfFormXObject createN2Layer​(float width,
                                             float height)
        The signature appearance layer that contains information about the signature, e.g. the line art for the handwritten signature, the text giving the signer’s name, date, reason, location and so on. The content of this layer can be dynamically created when the signature is created, but thereafter it remains static. Specifically, it remains static when the validity state is changed. All appearance handlers that render text honor the font type and color defaults that were set for the signature annotation. So, this layer is the main layer where signature appearance should be drawn in the current itext implementation.
        Parameters:
        width - the width of the annotation rectangle.
        height - the height of the annotation rectangle.
        Returns:
        n2 layer xObject.
      • applyRotation

        private Rectangle applyRotation​(int fieldRotation,
                                        Rectangle rectangle)
      • updateParentFontSize

        private void updateParentFontSize​(float fontSize)