@@ -797,11 +797,7 @@ public static PdfFormField createRadioButton(PdfDocument doc, Rectangle rect, Pd
797
797
} else {
798
798
annot .setAppearanceState (new PdfName ("Off" ));
799
799
}
800
- if (pdfAConformanceLevel != null && "1" .equals (pdfAConformanceLevel .getPart ())) {
801
- radio .drawPdfA1RadioAppearance (rect .getWidth (), rect .getHeight (), value );
802
- } else {
803
- radio .drawRadioAppearance (rect .getWidth (), rect .getHeight (), value );
804
- }
800
+ radio .drawRadioAppearance (rect .getWidth (), rect .getHeight (), value );
805
801
806
802
radioGroup .addKid (radio );
807
803
return radio ;
@@ -922,27 +918,16 @@ public static PdfButtonFormField createCheckBox(PdfDocument doc, Rectangle rect,
922
918
PdfWidgetAnnotation annot = new PdfWidgetAnnotation (rect );
923
919
PdfButtonFormField check = new PdfButtonFormField (annot , doc );
924
920
check .pdfAConformanceLevel = pdfAConformanceLevel ;
925
- if (null != pdfAConformanceLevel ) {
926
- annot .setFlag (PdfAnnotation .PRINT );
927
- }
928
921
check .setCheckType (checkType );
929
922
check .setFieldName (name );
930
923
check .put (PdfName .V , new PdfName (value ));
931
924
annot .setAppearanceState (new PdfName (value ));
932
- String pdfAVersion = pdfAConformanceLevel != null ? pdfAConformanceLevel .getPart () : "" ;
933
- switch (pdfAVersion ) {
934
- case "1" :
935
- check .drawPdfA1CheckAppearance (rect .getWidth (), rect .getHeight (), "Off" .equals (value ) ? "Yes" : value , checkType );
936
- break ;
937
- case "2" :
938
- check .drawPdfA2CheckAppearance (rect .getWidth (), rect .getHeight (), "Off" .equals (value ) ? "Yes" : value , checkType );
939
- break ;
940
- case "3" :
941
- check .drawPdfA2CheckAppearance (rect .getWidth (), rect .getHeight (), "Off" .equals (value ) ? "Yes" : value , checkType );
942
- break ;
943
- default :
944
- check .drawCheckAppearance (rect .getWidth (), rect .getHeight (), "Off" .equals (value ) ? "Yes" : value );
945
- break ;
925
+
926
+ if (pdfAConformanceLevel != null ) {
927
+ check .drawPdfA2CheckAppearance (rect .getWidth (), rect .getHeight (), "Off" .equals (value ) ? "Yes" : value , checkType );
928
+ annot .setFlag (PdfAnnotation .PRINT );
929
+ } else {
930
+ check .drawCheckAppearance (rect .getWidth (), rect .getHeight (), "Off" .equals (value ) ? "Yes" : value );
946
931
}
947
932
948
933
return check ;
@@ -2125,11 +2110,7 @@ public boolean regenerateField() {
2125
2110
Rectangle rect = getRect (getPdfObject ());
2126
2111
value = getRadioButtonValue (value );
2127
2112
if (rect != null && !"" .equals (value )) {
2128
- if (pdfAConformanceLevel != null && "1" .equals (pdfAConformanceLevel .getPart ())) {
2129
- drawPdfA1RadioAppearance (rect .getWidth (), rect .getHeight (), value );
2130
- } else {
2131
- drawRadioAppearance (rect .getWidth (), rect .getHeight (), value );
2132
- }
2113
+ drawRadioAppearance (rect .getWidth (), rect .getHeight (), value );
2133
2114
}
2134
2115
} else if (getKids () != null ) {
2135
2116
for (PdfObject kid : getKids ()) {
@@ -2149,29 +2130,18 @@ public boolean regenerateField() {
2149
2130
}
2150
2131
}
2151
2132
} else {
2152
- String onStateName = value ;
2153
- if ("Off" .equals (onStateName )) {
2154
- onStateName = "Yes" ;
2155
- }
2156
2133
Rectangle rect = getRect (getPdfObject ());
2157
2134
setCheckType (checkType );
2158
2135
2159
- String pdfAVersion = pdfAConformanceLevel != null ? pdfAConformanceLevel .getPart () : "" ;
2160
- switch (pdfAVersion ) {
2161
- case "1" :
2162
- drawPdfA1CheckAppearance (rect .getWidth (), rect .getHeight (), value , checkType );
2163
- break ;
2164
- case "2" :
2165
- drawPdfA2CheckAppearance (rect .getWidth (), rect .getHeight (), onStateName , checkType );
2166
- break ;
2167
- case "3" :
2168
- drawPdfA2CheckAppearance (rect .getWidth (), rect .getHeight (), onStateName , checkType );
2169
- break ;
2170
- default :
2171
- drawCheckAppearance (rect .getWidth (), rect .getHeight (), onStateName );
2172
- break ;
2173
- }
2174
2136
PdfWidgetAnnotation widget = getWidgets ().get (0 );
2137
+
2138
+ if (pdfAConformanceLevel != null ) {
2139
+ drawPdfA2CheckAppearance (rect .getWidth (), rect .getHeight (), "Off" .equals (value ) ? "Yes" : value , checkType );
2140
+ widget .setFlag (PdfAnnotation .PRINT );
2141
+ } else {
2142
+ drawCheckAppearance (rect .getWidth (), rect .getHeight (), "Off" .equals (value ) ? "Yes" : value );
2143
+ }
2144
+
2175
2145
if (widget .getNormalAppearanceObject () != null && widget .getNormalAppearanceObject ().containsKey (new PdfName (value ))) {
2176
2146
widget .setAppearanceState (new PdfName (value ));
2177
2147
} else {
@@ -3075,7 +3045,9 @@ protected void drawRadioAppearance(float width, float height, String value) {
3075
3045
* @param width the width of the radio button to draw
3076
3046
* @param height the height of the radio button to draw
3077
3047
* @param value the value of the button
3048
+ * @deprecated Please, use {@link #drawRadioAppearance(float, float, String)} instead.
3078
3049
*/
3050
+ @ Deprecated
3079
3051
protected void drawPdfA1RadioAppearance (float width , float height , String value ) {
3080
3052
PdfStream stream = (PdfStream ) new PdfStream ().makeIndirect (getDocument ());
3081
3053
PdfCanvas canvas = new PdfCanvas (stream , new PdfResources (), getDocument ());
@@ -3120,54 +3092,65 @@ protected void drawRadioField(PdfCanvas canvas, float width, float height, boole
3120
3092
* @param onStateName the state of the form field that will be drawn
3121
3093
*/
3122
3094
protected void drawCheckAppearance (float width , float height , String onStateName ) {
3095
+ float fontSize = this .fontSize < 0 ? 0 : this .fontSize ;
3096
+ Rectangle rect = new Rectangle (0 , 0 , width , height );
3097
+
3123
3098
PdfStream streamOn = (PdfStream ) new PdfStream ().makeIndirect (getDocument ());
3124
3099
PdfCanvas canvasOn = new PdfCanvas (streamOn , new PdfResources (), getDocument ());
3125
- Rectangle rect = new Rectangle (0 , 0 , width , height );
3126
3100
PdfFormXObject xObjectOn = new PdfFormXObject (rect );
3127
- PdfFormXObject xObjectOff = new PdfFormXObject (rect );
3128
-
3129
- float fontSize = this .fontSize < 0 ? 0 : this .fontSize ;
3130
3101
drawBorder (canvasOn , xObjectOn , width , height );
3131
3102
drawCheckBox (canvasOn , width , height , fontSize , true );
3103
+ xObjectOn .getPdfObject ().getOutputStream ().writeBytes (streamOn .getBytes ());
3104
+ xObjectOn .getResources ().addFont (getDocument (), getFont ());
3105
+
3132
3106
3133
3107
PdfStream streamOff = (PdfStream ) new PdfStream ().makeIndirect (getDocument ());
3134
3108
PdfCanvas canvasOff = new PdfCanvas (streamOff , new PdfResources (), getDocument ());
3109
+ PdfFormXObject xObjectOff = new PdfFormXObject (rect );
3135
3110
drawBorder (canvasOff , xObjectOff , width , height );
3136
3111
drawCheckBox (canvasOff , width , height , fontSize , false );
3137
-
3138
- PdfWidgetAnnotation widget = getWidgets ().get (0 );
3139
-
3140
- xObjectOn .getPdfObject ().getOutputStream ().writeBytes (streamOn .getBytes ());
3141
- xObjectOn .getResources ().addFont (getDocument (), getFont ());
3142
- setDefaultAppearance (generateDefaultAppearanceString (font , fontSize , color , xObjectOn .getResources ()));
3143
-
3144
3112
xObjectOff .getPdfObject ().getOutputStream ().writeBytes (streamOff .getBytes ());
3145
3113
xObjectOff .getResources ().addFont (getDocument (), getFont ());
3146
3114
3115
+ setDefaultAppearance (generateDefaultAppearanceString (font , fontSize , color , xObjectOn .getResources ()));
3116
+
3147
3117
PdfDictionary normalAppearance = new PdfDictionary ();
3148
3118
normalAppearance .put (new PdfName (onStateName ), xObjectOn .getPdfObject ());
3149
3119
normalAppearance .put (new PdfName ("Off" ), xObjectOff .getPdfObject ());
3150
3120
3151
3121
PdfDictionary mk = new PdfDictionary ();
3152
3122
mk .put (PdfName .CA , new PdfString (text ));
3123
+
3124
+ PdfWidgetAnnotation widget = getWidgets ().get (0 );
3153
3125
widget .getPdfObject ().put (PdfName .MK , mk );
3154
3126
widget .setNormalAppearance (normalAppearance );
3155
3127
}
3156
3128
3157
- protected void drawPdfA1CheckAppearance ( float width , float height , String selectedValue , int checkType ) {
3158
- PdfStream stream = ( PdfStream ) new PdfStream (). makeIndirect ( getDocument ());
3159
- PdfCanvas canvas = new PdfCanvas ( stream , new PdfResources (), getDocument ()) ;
3129
+ //Actually it's just PdfA check appearance. According to corrigendum there is no difference between them
3130
+ protected void drawPdfA2CheckAppearance ( float width , float height , String onStateName , int checkType ) {
3131
+ this . checkType = checkType ;
3160
3132
Rectangle rect = new Rectangle (0 , 0 , width , height );
3161
- PdfFormXObject xObject = new PdfFormXObject (rect );
3162
3133
3163
- this .checkType = checkType ;
3164
- drawBorder (canvas , xObject , width , height );
3165
- drawPdfACheckBox (canvas , width , height , !"Off" .equals (selectedValue ));
3134
+ PdfStream streamOn = (PdfStream ) new PdfStream ().makeIndirect (getDocument ());
3135
+ PdfCanvas canvasOn = new PdfCanvas (streamOn , new PdfResources (), getDocument ());
3136
+ PdfFormXObject xObjectOn = new PdfFormXObject (rect );
3137
+ xObjectOn .getResources ();
3166
3138
3167
- xObject .getPdfObject ().getOutputStream ().writeBytes (stream .getBytes ());
3139
+ drawBorder (canvasOn , xObjectOn , width , height );
3140
+ drawPdfACheckBox (canvasOn , width , height , true );
3141
+ xObjectOn .getPdfObject ().getOutputStream ().writeBytes (streamOn .getBytes ());
3142
+
3143
+ PdfStream streamOff = (PdfStream ) new PdfStream ().makeIndirect (getDocument ());
3144
+ PdfCanvas canvasOff = new PdfCanvas (streamOff , new PdfResources (), getDocument ());
3145
+ PdfFormXObject xObjectOff = new PdfFormXObject (rect );
3146
+ xObjectOff .getResources ();
3147
+
3148
+ drawBorder (canvasOff , xObjectOff , width , height );
3149
+ xObjectOff .getPdfObject ().getOutputStream ().writeBytes (streamOff .getBytes ());
3168
3150
3169
3151
PdfDictionary normalAppearance = new PdfDictionary ();
3170
- normalAppearance .put (new PdfName (selectedValue ), xObject .getPdfObject ());
3152
+ normalAppearance .put (new PdfName (onStateName ), xObjectOn .getPdfObject ());
3153
+ normalAppearance .put (new PdfName ("Off" ), xObjectOff .getPdfObject ());
3171
3154
3172
3155
PdfDictionary mk = new PdfDictionary ();
3173
3156
mk .put (PdfName .CA , new PdfString (text ));
@@ -3177,33 +3160,29 @@ protected void drawPdfA1CheckAppearance(float width, float height, String select
3177
3160
widget .setNormalAppearance (normalAppearance );
3178
3161
}
3179
3162
3180
- protected void drawPdfA2CheckAppearance (float width , float height , String onStateName , int checkType ) {
3181
- PdfStream streamOn = (PdfStream ) new PdfStream ().makeIndirect (getDocument ());
3182
- PdfCanvas canvasOn = new PdfCanvas (streamOn , new PdfResources (), getDocument ());
3183
- PdfStream streamOff = (PdfStream ) new PdfStream ().makeIndirect (getDocument ());
3184
- PdfCanvas canvasOff = new PdfCanvas (streamOff , new PdfResources (), getDocument ());
3163
+ /**
3164
+ * @deprecated use {@link #drawPdfA2CheckAppearance(float, float, String, int)} instead.
3165
+ */
3166
+ @ Deprecated
3167
+ protected void drawPdfA1CheckAppearance (float width , float height , String selectedValue , int checkType ) {
3168
+ PdfStream stream = (PdfStream ) new PdfStream ().makeIndirect (getDocument ());
3169
+ PdfCanvas canvas = new PdfCanvas (stream , new PdfResources (), getDocument ());
3185
3170
Rectangle rect = new Rectangle (0 , 0 , width , height );
3186
- PdfFormXObject xObjectOn = new PdfFormXObject (rect );
3187
- PdfFormXObject xObjectOff = new PdfFormXObject (rect );
3171
+ PdfFormXObject xObject = new PdfFormXObject (rect );
3188
3172
3189
3173
this .checkType = checkType ;
3190
- drawBorder (canvasOn , xObjectOn , width , height );
3191
- drawPdfACheckBox (canvasOn , width , height , true );
3192
- drawBorder (canvasOff , xObjectOff , width , height );
3193
-
3194
- PdfWidgetAnnotation widget = getWidgets ().get (0 );
3174
+ drawBorder (canvas , xObject , width , height );
3175
+ drawPdfACheckBox (canvas , width , height , !"Off" .equals (selectedValue ));
3195
3176
3196
- xObjectOn .getPdfObject ().getOutputStream ().writeBytes (streamOn .getBytes ());
3197
- xObjectOff .getPdfObject ().getOutputStream ().writeBytes (streamOff .getBytes ());
3198
- xObjectOn .getResources ();
3199
- xObjectOff .getResources ();
3177
+ xObject .getPdfObject ().getOutputStream ().writeBytes (stream .getBytes ());
3200
3178
3201
3179
PdfDictionary normalAppearance = new PdfDictionary ();
3202
- normalAppearance .put (new PdfName (onStateName ), xObjectOn .getPdfObject ());
3203
- normalAppearance .put (new PdfName ("Off" ), xObjectOff .getPdfObject ());
3180
+ normalAppearance .put (new PdfName (selectedValue ), xObject .getPdfObject ());
3204
3181
3205
3182
PdfDictionary mk = new PdfDictionary ();
3206
3183
mk .put (PdfName .CA , new PdfString (text ));
3184
+
3185
+ PdfWidgetAnnotation widget = getWidgets ().get (0 );
3207
3186
widget .put (PdfName .MK , mk );
3208
3187
widget .setNormalAppearance (normalAppearance );
3209
3188
}
0 commit comments