Browse Source

ReactNative - 修正安卓端注释、表单数据排序,修正表单数据返回为空问题

liuxiaolong 1 week ago
parent
commit
f0c362531a
21 changed files with 111 additions and 170 deletions
  1. 38 25
      android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/RCPDFAnnotFactory.java
  2. 2 1
      android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/RCPDFAnnotation.java
  3. 8 28
      android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/RCPDFBaseAnnotation.java
  4. 0 4
      android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/RCPDFCircleAnnotation.java
  5. 0 4
      android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/RCPDFInkAnnotation.java
  6. 9 5
      android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/RCPDFLineAnnotation.java
  7. 0 11
      android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/RCPDFMarkupAnnotation.java
  8. 0 4
      android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/RCPDFNoteAnnotation.java
  9. 0 5
      android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/RCPDFSquareAnnotation.java
  10. 8 29
      android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/forms/RCPDFBaseWidget.java
  11. 3 6
      android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/forms/RCPDFCheckBoxWidget.java
  12. 3 7
      android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/forms/RCPDFComboBoxWidget.java
  13. 3 6
      android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/forms/RCPDFListBoxWidget.java
  14. 3 6
      android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/forms/RCPDFPushbuttonWidget.java
  15. 4 6
      android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/forms/RCPDFRadioButtonWidget.java
  16. 4 6
      android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/forms/RCPDFSignatureFieldsWidget.java
  17. 4 5
      android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/forms/RCPDFTextFieldWidget.java
  18. 3 1
      android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/forms/RCPDFWidget.java
  19. 8 2
      example/ios/CompdfkitPdfExample.xcodeproj/project.pbxproj
  20. 4 2
      src/annotation/form/CPDFTextWidget.tsx
  21. 7 7
      src/annotation/form/CPDFWidgetFactory.tsx

+ 38 - 25
android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/RCPDFAnnotFactory.java

@@ -1,6 +1,8 @@
 package com.compdfkitpdf.reactnative.util.annotation;
 
+import com.compdfkit.core.annotation.CPDFAnnotation;
 import com.compdfkit.core.annotation.CPDFAnnotation.Type;
+import com.compdfkit.core.annotation.form.CPDFWidget;
 import com.compdfkit.core.annotation.form.CPDFWidget.WidgetType;
 import com.compdfkit.core.page.CPDFPage;
 import com.compdfkitpdf.reactnative.util.annotation.forms.RCPDFCheckBoxWidget;
@@ -13,33 +15,38 @@ import com.compdfkitpdf.reactnative.util.annotation.forms.RCPDFSignatureFieldsWi
 import com.compdfkitpdf.reactnative.util.annotation.forms.RCPDFTextFieldWidget;
 import com.facebook.react.bridge.Arguments;
 import com.facebook.react.bridge.WritableArray;
+import com.facebook.react.bridge.WritableMap;
 import java.util.HashMap;
+import java.util.List;
 
 public class RCPDFAnnotFactory {
 
   private CPDFPage cpdfPage;
 
+  private List<CPDFAnnotation> cachedAnnotations;
+
   HashMap<Type, RCPDFAnnotation> annotImpls = new HashMap<>();
   HashMap<WidgetType, RCPDFWidget> widgetsImpls = new HashMap<>();
 
   public RCPDFAnnotFactory(CPDFPage cpdfPage) {
     this.cpdfPage = cpdfPage;
+    cachedAnnotations = cpdfPage.getAnnotations();
     annotImpls = createAnnotationImpl();
     widgetsImpls = getWidgetsImpl();
   }
 
   private HashMap<Type, RCPDFAnnotation> createAnnotationImpl(){
     HashMap<Type, RCPDFAnnotation> map = new HashMap<>();
-    RCPDFMarkupAnnotation markupAnnotation = new RCPDFMarkupAnnotation(cpdfPage);
-    map.put(Type.TEXT, new RCPDFNoteAnnotation(cpdfPage));
+    RCPDFMarkupAnnotation markupAnnotation = new RCPDFMarkupAnnotation();
+    map.put(Type.TEXT, new RCPDFNoteAnnotation());
     map.put(Type.HIGHLIGHT, markupAnnotation);
     map.put(Type.UNDERLINE, markupAnnotation);
     map.put(Type.SQUIGGLY, markupAnnotation);
     map.put(Type.STRIKEOUT, markupAnnotation);
-    map.put(Type.INK, new RCPDFInkAnnotation(cpdfPage));
+    map.put(Type.INK, new RCPDFInkAnnotation());
     map.put(Type.CIRCLE, markupAnnotation);
     map.put(Type.SQUARE, markupAnnotation);
-    map.put(Type.LINE, markupAnnotation);
+    map.put(Type.LINE, new RCPDFLineAnnotation());
     map.put(Type.STAMP, markupAnnotation);
     map.put(Type.FREETEXT, markupAnnotation);
     map.put(Type.SOUND, markupAnnotation);
@@ -48,26 +55,27 @@ public class RCPDFAnnotFactory {
 
   private HashMap<WidgetType, RCPDFWidget> getWidgetsImpl(){
     HashMap<WidgetType, RCPDFWidget> map = new HashMap<>();
-    map.put(WidgetType.Widget_TextField, new RCPDFTextFieldWidget(cpdfPage));
-    map.put(WidgetType.Widget_ListBox, new RCPDFListBoxWidget(cpdfPage));
-    map.put(WidgetType.Widget_ComboBox,  new RCPDFComboBoxWidget(cpdfPage));
-    map.put(WidgetType.Widget_RadioButton,  new RCPDFRadioButtonWidget(cpdfPage));
-    map.put(WidgetType.Widget_CheckBox,  new RCPDFCheckBoxWidget(cpdfPage));
-    map.put(WidgetType.Widget_SignatureFields,  new RCPDFSignatureFieldsWidget(cpdfPage));
-    map.put(WidgetType.Widget_PushButton,  new RCPDFPushbuttonWidget(cpdfPage));
+    map.put(WidgetType.Widget_TextField, new RCPDFTextFieldWidget());
+    map.put(WidgetType.Widget_ListBox, new RCPDFListBoxWidget());
+    map.put(WidgetType.Widget_ComboBox,  new RCPDFComboBoxWidget());
+    map.put(WidgetType.Widget_RadioButton,  new RCPDFRadioButtonWidget());
+    map.put(WidgetType.Widget_CheckBox,  new RCPDFCheckBoxWidget());
+    map.put(WidgetType.Widget_SignatureFields,  new RCPDFSignatureFieldsWidget());
+    map.put(WidgetType.Widget_PushButton,  new RCPDFPushbuttonWidget());
     return map;
   }
 
   public WritableArray getAnnotations(){
+    if (cachedAnnotations == null || !cpdfPage.isValid()){
+      return null;
+    }
     WritableArray array = Arguments.createArray();
-    for (Type type : annotImpls.keySet()) {
-      RCPDFAnnotation rcpdfAnnotation = annotImpls.get(type);
+    for (CPDFAnnotation annotation : cachedAnnotations) {
+      RCPDFAnnotation rcpdfAnnotation = annotImpls.get(annotation.getType());
       if (rcpdfAnnotation != null){
-        WritableArray writableArray = rcpdfAnnotation.getAnnotation(type);
-        if (writableArray != null && writableArray.size() > 0){
-          for (int i = 0; i < writableArray.size(); i++) {
-            array.pushMap(writableArray.getMap(i));
-          }
+        WritableMap map = rcpdfAnnotation.getAnnotation(annotation);
+        if (map != null){
+          array.pushMap(map);
         }
       }
     }
@@ -76,15 +84,20 @@ public class RCPDFAnnotFactory {
 
 
   public WritableArray getWidgets(){
+    if (cachedAnnotations == null || !cpdfPage.isValid()){
+      return null;
+    }
     WritableArray array = Arguments.createArray();
-    for (WidgetType widgetType : widgetsImpls.keySet()) {
-      RCPDFWidget rcpdfWidget = widgetsImpls.get(widgetType);
+    for (CPDFAnnotation annotation : cachedAnnotations) {
+      if (annotation.getType() != Type.WIDGET){
+        continue;
+      }
+      CPDFWidget widget = (CPDFWidget) annotation;
+      RCPDFWidget rcpdfWidget = widgetsImpls.get(widget.getWidgetType());
       if (rcpdfWidget != null){
-        WritableArray writableArray = rcpdfWidget.getWidget(widgetType);
-        if (writableArray != null && writableArray.size() > 0){
-          for (int i = 0; i < writableArray.size(); i++) {
-            array.pushMap(writableArray.getMap(i));
-          }
+        WritableMap writableMap = rcpdfWidget.getWidget(annotation);
+        if (writableMap != null){
+          array.pushMap(writableMap);
         }
       }
     }

+ 2 - 1
android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/RCPDFAnnotation.java

@@ -12,9 +12,10 @@ package com.compdfkitpdf.reactnative.util.annotation;
 
 import com.compdfkit.core.annotation.CPDFAnnotation;
 import com.facebook.react.bridge.WritableArray;
+import com.facebook.react.bridge.WritableMap;
 
 public interface RCPDFAnnotation {
 
-  public WritableArray getAnnotation(CPDFAnnotation.Type type);
+  public WritableMap getAnnotation(CPDFAnnotation annotation);
 
 }

+ 8 - 28
android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/RCPDFBaseAnnotation.java

@@ -12,35 +12,15 @@ import java.util.List;
 
 public abstract class RCPDFBaseAnnotation implements RCPDFAnnotation{
 
-  protected CPDFPage page;
-
-  private List<CPDFAnnotation> cachedAnnotations;
-
-  public RCPDFBaseAnnotation(CPDFPage page) {
-    this.page = page;
-    cachedAnnotations = page.getAnnotations();
-
-  }
-
-
   @Override
-  public WritableArray getAnnotation(Type type) {
-    if (cachedAnnotations == null || !page.isValid()){
-      return null;
-    }
-    WritableArray array = Arguments.createArray();
-    for (CPDFAnnotation annotation : cachedAnnotations) {
-      if (annotation.getType() == type) {
-        WritableMap map = Arguments.createMap();
-        map.putString("type", type.name().toLowerCase());
-        map.putInt("page", annotation.pdfPage.getPageNum());
-        map.putString("title", annotation.getTitle());
-        map.putString("content", annotation.getContent());
-        covert(annotation, map);
-        array.pushMap(map);
-      }
-    }
-    return array;
+  public WritableMap getAnnotation(CPDFAnnotation annotation) {
+    WritableMap map = Arguments.createMap();
+    map.putString("type", annotation.getType().name().toLowerCase());
+    map.putInt("page", annotation.pdfPage.getPageNum());
+    map.putString("title", annotation.getTitle());
+    map.putString("content", annotation.getContent());
+    covert(annotation, map);
+    return map;
   }
 
   public abstract void covert(CPDFAnnotation annotation, WritableMap map);

+ 0 - 4
android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/RCPDFCircleAnnotation.java

@@ -8,10 +8,6 @@ import com.facebook.react.bridge.WritableMap;
 public class RCPDFCircleAnnotation extends RCPDFBaseAnnotation{
 
 
-  public RCPDFCircleAnnotation(CPDFPage page) {
-    super(page);
-  }
-
   @Override
   public void covert(CPDFAnnotation annotation, WritableMap map) {
   }

+ 0 - 4
android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/RCPDFInkAnnotation.java

@@ -14,10 +14,6 @@ import java.util.List;
 public class RCPDFInkAnnotation extends RCPDFBaseAnnotation{
 
 
-  public RCPDFInkAnnotation(CPDFPage page) {
-    super(page);
-  }
-
   @Override
   public void covert(CPDFAnnotation annotation, WritableMap map) {
 

+ 9 - 5
android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/RCPDFLineAnnotation.java

@@ -2,17 +2,21 @@ package com.compdfkitpdf.reactnative.util.annotation;
 
 
 import com.compdfkit.core.annotation.CPDFAnnotation;
+import com.compdfkit.core.annotation.CPDFLineAnnotation;
+import com.compdfkit.core.annotation.CPDFLineAnnotation.LineType;
 import com.compdfkit.core.page.CPDFPage;
 import com.facebook.react.bridge.WritableMap;
 
-public class RCPDFLineAnnotation extends RCPDFBaseAnnotation{
+public class RCPDFLineAnnotation extends RCPDFBaseAnnotation {
 
 
-  public RCPDFLineAnnotation(CPDFPage page) {
-    super(page);
-  }
-
   @Override
   public void covert(CPDFAnnotation annotation, WritableMap map) {
+    CPDFLineAnnotation lineAnnotation = (CPDFLineAnnotation) annotation;
+    if (lineAnnotation.getLineHeadType() == LineType.LINETYPE_NONE && lineAnnotation.getLineTailType() == LineType.LINETYPE_NONE){
+      map.putString("type", "line");
+    }else {
+      map.putString("type", "arrow");
+    }
   }
 }

+ 0 - 11
android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/RCPDFMarkupAnnotation.java

@@ -1,23 +1,12 @@
 package com.compdfkitpdf.reactnative.util.annotation;
 
 
-import android.icu.text.CaseMap.Lower;
 import com.compdfkit.core.annotation.CPDFAnnotation;
-import com.compdfkit.core.annotation.CPDFAnnotation.Type;
 import com.compdfkit.core.annotation.CPDFMarkupAnnotation;
-import com.compdfkit.core.page.CPDFPage;
-import com.facebook.react.bridge.Arguments;
-import com.facebook.react.bridge.WritableArray;
 import com.facebook.react.bridge.WritableMap;
-import java.util.List;
 
 public class RCPDFMarkupAnnotation extends RCPDFBaseAnnotation{
 
-
-  public RCPDFMarkupAnnotation(CPDFPage page) {
-    super(page);
-  }
-
   @Override
   public void covert(CPDFAnnotation annotation, WritableMap map) {
     if (annotation instanceof CPDFMarkupAnnotation){

+ 0 - 4
android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/RCPDFNoteAnnotation.java

@@ -14,10 +14,6 @@ import java.util.List;
 public class RCPDFNoteAnnotation extends RCPDFBaseAnnotation{
 
 
-  public RCPDFNoteAnnotation(CPDFPage page) {
-    super(page);
-  }
-
   @Override
   public void covert(CPDFAnnotation annotation, WritableMap map) {
     map.putString("type", "note");

+ 0 - 5
android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/RCPDFSquareAnnotation.java

@@ -7,11 +7,6 @@ import com.facebook.react.bridge.WritableMap;
 
 public class RCPDFSquareAnnotation extends RCPDFBaseAnnotation{
 
-
-  public RCPDFSquareAnnotation(CPDFPage page) {
-    super(page);
-  }
-
   @Override
   public void covert(CPDFAnnotation annotation, WritableMap map) {
   }

+ 8 - 29
android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/forms/RCPDFBaseWidget.java

@@ -22,37 +22,16 @@ import java.util.List;
 
 public abstract class RCPDFBaseWidget implements RCPDFWidget {
 
-  protected CPDFPage page;
-
-  private List<CPDFAnnotation> cachedAnnotations;
-
-  public RCPDFBaseWidget(CPDFPage page) {
-    this.page = page;
-    cachedAnnotations = page.getAnnotations();
-  }
 
   @Override
-  public WritableArray getWidget(WidgetType widgetType) {
-    if (cachedAnnotations == null || !page.isValid()) {
-      return null;
-    }
-    WritableArray array = Arguments.createArray();
-    for (CPDFAnnotation annotation : cachedAnnotations) {
-      if (annotation.getType() != Type.WIDGET) {
-        continue;
-      }
-      CPDFWidget widget = (CPDFWidget) annotation;
-      if (widget.getWidgetType() != widgetType) {
-        continue;
-      }
-      WritableMap map = Arguments.createMap();
-      map.putInt("page", widget.pdfPage.getPageNum());
-      map.putString("title", widget.getTitle());
-      covert(annotation, map);
-      array.pushMap(map);
-    }
-    return array;
+  public WritableMap getWidget(CPDFAnnotation annotation) {
+    WritableMap map = Arguments.createMap();
+    CPDFWidget widget = (CPDFWidget) annotation;
+    map.putInt("page", widget.pdfPage.getPageNum());
+    map.putString("title", widget.getTitle());
+    covert(widget, map);
+    return  map;
   }
 
-  public abstract void covert(CPDFAnnotation annotation, WritableMap map);
+  public abstract void covert(CPDFWidget widget, WritableMap map);
 }

+ 3 - 6
android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/forms/RCPDFCheckBoxWidget.java

@@ -2,19 +2,16 @@ package com.compdfkitpdf.reactnative.util.annotation.forms;
 
 import com.compdfkit.core.annotation.CPDFAnnotation;
 import com.compdfkit.core.annotation.form.CPDFCheckboxWidget;
+import com.compdfkit.core.annotation.form.CPDFWidget;
 import com.compdfkit.core.page.CPDFPage;
 import com.facebook.react.bridge.WritableMap;
 
 
 public class RCPDFCheckBoxWidget extends RCPDFBaseWidget {
 
-  public RCPDFCheckBoxWidget(CPDFPage page) {
-    super(page);
-  }
-
   @Override
-  public void covert(CPDFAnnotation annotation, WritableMap map) {
-    CPDFCheckboxWidget checkboxWidget = (CPDFCheckboxWidget) annotation;
+  public void covert(CPDFWidget widget, WritableMap map) {
+    CPDFCheckboxWidget checkboxWidget = (CPDFCheckboxWidget) widget;
     map.putString("type", "checkBox");
     map.putBoolean("isChecked", checkboxWidget.isChecked());
   }

+ 3 - 7
android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/forms/RCPDFComboBoxWidget.java

@@ -2,20 +2,16 @@ package com.compdfkitpdf.reactnative.util.annotation.forms;
 
 import com.compdfkit.core.annotation.CPDFAnnotation;
 import com.compdfkit.core.annotation.form.CPDFComboboxWidget;
+import com.compdfkit.core.annotation.form.CPDFWidget;
 import com.compdfkit.core.annotation.form.CPDFWidgetItem;
 import com.compdfkit.core.page.CPDFPage;
 import com.facebook.react.bridge.WritableMap;
 
 
 public class RCPDFComboBoxWidget extends RCPDFBaseWidget {
-
-  public RCPDFComboBoxWidget(CPDFPage page) {
-    super(page);
-  }
-
   @Override
-  public void covert(CPDFAnnotation annotation, WritableMap map) {
-    CPDFComboboxWidget comboBoxWidget = (CPDFComboboxWidget) annotation;
+  public void covert(CPDFWidget widget, WritableMap map) {
+    CPDFComboboxWidget comboBoxWidget = (CPDFComboboxWidget) widget;
     map.putString("type", "comboBox");
   }
 }

+ 3 - 6
android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/forms/RCPDFListBoxWidget.java

@@ -2,6 +2,7 @@ package com.compdfkitpdf.reactnative.util.annotation.forms;
 
 import com.compdfkit.core.annotation.CPDFAnnotation;
 import com.compdfkit.core.annotation.form.CPDFListboxWidget;
+import com.compdfkit.core.annotation.form.CPDFWidget;
 import com.compdfkit.core.annotation.form.CPDFWidgetItem;
 import com.compdfkit.core.page.CPDFPage;
 import com.facebook.react.bridge.WritableMap;
@@ -9,13 +10,9 @@ import com.facebook.react.bridge.WritableMap;
 
 public class RCPDFListBoxWidget extends RCPDFBaseWidget {
 
-  public RCPDFListBoxWidget(CPDFPage page) {
-    super(page);
-  }
-
   @Override
-  public void covert(CPDFAnnotation annotation, WritableMap map) {
-    CPDFListboxWidget listboxWidget = (CPDFListboxWidget) annotation;
+  public void covert(CPDFWidget widget, WritableMap map) {
+    CPDFListboxWidget listboxWidget = (CPDFListboxWidget) widget;
     map.putString("type", "listBox");
   }
 }

+ 3 - 6
android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/forms/RCPDFPushbuttonWidget.java

@@ -3,19 +3,16 @@ package com.compdfkitpdf.reactnative.util.annotation.forms;
 import com.compdfkit.core.annotation.CPDFAnnotation;
 import com.compdfkit.core.annotation.form.CPDFCheckboxWidget;
 import com.compdfkit.core.annotation.form.CPDFPushbuttonWidget;
+import com.compdfkit.core.annotation.form.CPDFWidget;
 import com.compdfkit.core.page.CPDFPage;
 import com.facebook.react.bridge.WritableMap;
 
 
 public class RCPDFPushbuttonWidget extends RCPDFBaseWidget {
 
-  public RCPDFPushbuttonWidget(CPDFPage page) {
-    super(page);
-  }
-
   @Override
-  public void covert(CPDFAnnotation annotation, WritableMap map) {
-    CPDFPushbuttonWidget pushbuttonWidget = (CPDFPushbuttonWidget) annotation;
+  public void covert(CPDFWidget widget, WritableMap map) {
+    CPDFPushbuttonWidget pushbuttonWidget = (CPDFPushbuttonWidget) widget;
     map.putString("type", "pushButton");
   }
 }

+ 4 - 6
android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/forms/RCPDFRadioButtonWidget.java

@@ -2,19 +2,17 @@ package com.compdfkitpdf.reactnative.util.annotation.forms;
 
 import com.compdfkit.core.annotation.CPDFAnnotation;
 import com.compdfkit.core.annotation.form.CPDFRadiobuttonWidget;
+import com.compdfkit.core.annotation.form.CPDFSignatureWidget;
+import com.compdfkit.core.annotation.form.CPDFWidget;
 import com.compdfkit.core.page.CPDFPage;
 import com.facebook.react.bridge.WritableMap;
 
 
 public class RCPDFRadioButtonWidget extends RCPDFBaseWidget {
 
-  public RCPDFRadioButtonWidget(CPDFPage page) {
-    super(page);
-  }
-
   @Override
-  public void covert(CPDFAnnotation annotation, WritableMap map) {
-    CPDFRadiobuttonWidget radiobuttonWidget = (CPDFRadiobuttonWidget) annotation;
+  public void covert(CPDFWidget widget, WritableMap map) {
+    CPDFRadiobuttonWidget radiobuttonWidget = (CPDFRadiobuttonWidget) widget;
     map.putString("type", "radioButton");
     map.putBoolean("isChecked", radiobuttonWidget.isChecked());
   }

+ 4 - 6
android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/forms/RCPDFSignatureFieldsWidget.java

@@ -2,19 +2,17 @@ package com.compdfkitpdf.reactnative.util.annotation.forms;
 
 import com.compdfkit.core.annotation.CPDFAnnotation;
 import com.compdfkit.core.annotation.form.CPDFSignatureWidget;
+import com.compdfkit.core.annotation.form.CPDFTextWidget;
+import com.compdfkit.core.annotation.form.CPDFWidget;
 import com.compdfkit.core.page.CPDFPage;
 import com.facebook.react.bridge.WritableMap;
 
 
 public class RCPDFSignatureFieldsWidget extends RCPDFBaseWidget {
 
-  public RCPDFSignatureFieldsWidget(CPDFPage page) {
-    super(page);
-  }
-
   @Override
-  public void covert(CPDFAnnotation annotation, WritableMap map) {
-    CPDFSignatureWidget signatureWidget = (CPDFSignatureWidget) annotation;
+  public void covert(CPDFWidget widget, WritableMap map) {
+    CPDFSignatureWidget signatureWidget = (CPDFSignatureWidget) widget;
     map.putString("type", "signaturesFields");
   }
 }

+ 4 - 5
android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/forms/RCPDFTextFieldWidget.java

@@ -2,20 +2,19 @@ package com.compdfkitpdf.reactnative.util.annotation.forms;
 
 import com.compdfkit.core.annotation.CPDFAnnotation;
 import com.compdfkit.core.annotation.form.CPDFTextWidget;
+import com.compdfkit.core.annotation.form.CPDFWidget;
 import com.compdfkit.core.page.CPDFPage;
 import com.facebook.react.bridge.WritableMap;
 
 
 public class RCPDFTextFieldWidget extends RCPDFBaseWidget {
 
-  public RCPDFTextFieldWidget(CPDFPage page) {
-    super(page);
-  }
 
   @Override
-  public void covert(CPDFAnnotation annotation, WritableMap map) {
-    CPDFTextWidget textWidget = (CPDFTextWidget) annotation;
+  public void covert(CPDFWidget widget, WritableMap map) {
+    CPDFTextWidget textWidget = (CPDFTextWidget) widget;
     map.putString("type", "textField");
     map.putString("text", textWidget.getText());
   }
+
 }

+ 3 - 1
android/src/main/java/com/compdfkitpdf/reactnative/util/annotation/forms/RCPDFWidget.java

@@ -8,13 +8,15 @@
  */
 package com.compdfkitpdf.reactnative.util.annotation.forms;
 
+import com.compdfkit.core.annotation.CPDFAnnotation;
 import com.compdfkit.core.annotation.form.CPDFWidget.WidgetType;
 import com.facebook.react.bridge.WritableArray;
+import com.facebook.react.bridge.WritableMap;
 
 
 public interface RCPDFWidget {
 
 
-  public WritableArray getWidget(WidgetType widgetType);
+  public WritableMap getWidget(CPDFAnnotation annotation);
 
 }

+ 8 - 2
example/ios/CompdfkitPdfExample.xcodeproj/project.pbxproj

@@ -639,7 +639,10 @@
 					"-DFOLLY_CFG_NO_COROUTINES=1",
 					"-DFOLLY_HAVE_CLOCK_GETTIME=1",
 				);
-				OTHER_LDFLAGS = "$(inherited)  ";
+				OTHER_LDFLAGS = (
+					"$(inherited)",
+					" ",
+				);
 				REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
 				SDKROOT = iphoneos;
 				USE_HERMES = true;
@@ -712,7 +715,10 @@
 					"-DFOLLY_CFG_NO_COROUTINES=1",
 					"-DFOLLY_HAVE_CLOCK_GETTIME=1",
 				);
-				OTHER_LDFLAGS = "$(inherited)  ";
+				OTHER_LDFLAGS = (
+					"$(inherited)",
+					" ",
+				);
 				REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
 				SDKROOT = iphoneos;
 				USE_HERMES = true;

+ 4 - 2
src/annotation/form/CPDFTextWidget.tsx

@@ -12,7 +12,7 @@ import { CPDFWidget } from "./CPDFWidget";
 /**
  * Class representing a text field form widget, storing basic information about the text field form.
  * It includes general form attributes as well as the text content of the text field.
- * 
+ *
  * @class CPDFTextWidget
  * @memberof CPDFTextWidget
  * @property {string} [text] - The text content of the text field.
@@ -29,4 +29,6 @@ export class CPDFTextWidget extends CPDFWidget {
         this.text = params.text ?? '';
     }
 
-}
+
+
+}

+ 7 - 7
src/annotation/form/CPDFWidgetFactory.tsx

@@ -19,13 +19,13 @@ import { CPDFWidget } from "./CPDFWidget";
 export class CPDFWidgetFactory {
     
     private static widgetMap = new Map<CPDFWidgetType, (json: any) => CPDFWidget>([
-        [CPDFWidgetType.TEXT_FIELD, CPDFTextWidget.fromJson],
-        [CPDFWidgetType.SIGNATURES_FIELDS, CPDFSignatureWidget.fromJson],
-        [CPDFWidgetType.RADIO_BUTTON, CPDFRadiobuttonWidget.fromJson],
-        [CPDFWidgetType.PUSH_BUTTON, CPDFPushbuttonWidget.fromJson],
-        [CPDFWidgetType.LISTBOX, CPDFListboxWidget.fromJson],
-        [CPDFWidgetType.COMBOBOX, CPDFComboboxWidget.fromJson],
-        [CPDFWidgetType.CHECKBOX, CPDFCheckboxWidget.fromJson]
+        [CPDFWidgetType.TEXT_FIELD, CPDFTextWidget.fromJson.bind(CPDFTextWidget)],
+        [CPDFWidgetType.SIGNATURES_FIELDS, CPDFSignatureWidget.fromJson.bind(CPDFSignatureWidget)],
+        [CPDFWidgetType.RADIO_BUTTON, CPDFRadiobuttonWidget.fromJson.bind(CPDFRadiobuttonWidget)],
+        [CPDFWidgetType.PUSH_BUTTON, CPDFPushbuttonWidget.fromJson.bind(CPDFPushbuttonWidget)],
+        [CPDFWidgetType.LISTBOX, CPDFListboxWidget.fromJson.bind(CPDFListboxWidget)],
+        [CPDFWidgetType.COMBOBOX, CPDFComboboxWidget.fromJson.bind(CPDFComboboxWidget)],
+        [CPDFWidgetType.CHECKBOX, CPDFCheckboxWidget.fromJson.bind(CPDFCheckboxWidget)]
     ]);
 
     static create(json: any): CPDFWidget {