Преглед изворни кода

PDFTool(Android) - v2.0.0 p0 bug修复

liuxiaolong пре 1 година
родитељ
комит
2a338d44ec
28 измењених фајлова са 241 додато и 651 уклоњено
  1. BIN
      ComPDFKit_Repo/compdfkit-ui/ComPDFKit-UI.aar
  2. BIN
      ComPDFKit_Repo/compdfkit/ComPDFKit.aar
  3. 7 47
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/annotation/pdfproperties/pdffreetext/CFreeTextStyleFragment.java
  4. 1 1
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/annotation/pdfproperties/pdfsignature/CAddSignatureActivity.java
  5. 26 52
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/font/CFontSpinnerAdapter1.java
  6. 24 66
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/font/CFontStyleSpinnerAdapter.java
  7. 34 94
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/font/CPDFFontView.java
  8. 40 0
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/font/bean/CFontStyleItemBean.java
  9. 8 0
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/pdfstyle/CAnnotStyle.java
  10. 5 2
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/pdfstyle/manager/provider/CEditSelectionsProvider.java
  11. 0 3
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/pdfstyle/manager/provider/CGlobalStyleProvider.java
  12. 12 18
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/pdfstyle/manager/provider/CStyleProvider.java
  13. 5 41
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/preview/CAnnotFreeTextPreviewView.java
  14. 1 8
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/preview/CBasicAnnotPreviewView.java
  15. 2 21
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/preview/CStylePreviewView.java
  16. 15 54
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/contenteditor/pdfproperties/CEditTextProperFragment.java
  17. 7 0
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/forms/pdfformbar/CFormToolbar.java
  18. 4 23
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/forms/pdfproperties/pdflistbox/CListBoxStyleFragment.java
  19. 4 23
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/forms/pdfproperties/pdfpushbutton/CPushButtonStyleFragment.java
  20. 3 19
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/forms/pdfproperties/pdftextfield/CTextFieldStyleFragment.java
  21. 5 0
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/CWatermarkEditDialog.java
  22. 4 35
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/CWatermarkPageFragment.java
  23. 4 24
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/pdfproperties/CWatermarkTextStyleFragment.java
  24. 7 10
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/view/CWatermarkPageView.java
  25. 19 109
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/view/CWatermarkView.java
  26. 0 1
      ComPDFKit_Tools/src/main/res/layout/tools_cpdf_font_view.xml
  27. 2 0
      ComPDFKit_Tools/src/main/res/layout/tools_spinner_list_item.xml
  28. 2 0
      PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/HomeFunFragment.java

BIN
ComPDFKit_Repo/compdfkit-ui/ComPDFKit-UI.aar


BIN
ComPDFKit_Repo/compdfkit/ComPDFKit.aar


+ 7 - 47
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/annotation/pdfproperties/pdffreetext/CFreeTextStyleFragment.java

@@ -89,20 +89,10 @@ public class CFreeTextStyleFragment extends CBasicPropertiesFragment implements
             previewView.setTextColor(annotStyle.getTextColor());
             previewView.setTextAlignment(annotStyle.getAlignment());
             previewView.setTextColorOpacity(annotStyle.getTextColorOpacity());
-            previewView.setFontBold(annotStyle.isFontBold());
-            previewView.setFontItalic(annotStyle.isFontItalic());
-            previewView.setFontType(annotStyle.getFontType());
-
-            CLog.e("字体", "fontType:" + annotStyle.getFontType().name() + ", externFont: " + annotStyle.getExternFontName() + ", bold:" + annotStyle.isFontBold() + ", italic:" + annotStyle.isFontItalic());
-            if (!TextUtils.isEmpty(annotStyle.getExternFontName())) {
-                fontView.initFont(annotStyle.getExternFontName(), annotStyle.isFontBold(), annotStyle.isFontItalic());
-            } else {
-                fontView.initFont(annotStyle.getFontType().name(), annotStyle.isFontBold(), annotStyle.isFontItalic());
-            }
-
+            previewView.setFontPsName(annotStyle.getExternFontName());
+            fontView.initFont(annotStyle.getExternFontName());
             colorListView.setSelectColor(annotStyle.getTextColor());
             opacitySliderBar.setProgress(annotStyle.getTextColorOpacity());
-
             switch (annotStyle.getAlignment()) {
                 case LEFT:
                     selectAlignmentView(ivAlignmentLeft);
@@ -136,22 +126,11 @@ public class CFreeTextStyleFragment extends CBasicPropertiesFragment implements
         viewModel.addStyleChangeListener(this);
 
         fontView.setFontChangeListener(new CPDFFontView.CFontChangeListener() {
-            @Override
-            public void font(CPDFTextAttribute.FontNameHelper.FontType fontType, String outFontName) {
-                if (viewModel != null) {
-                    if (!TextUtils.isEmpty(outFontName)) {
-                        viewModel.getStyle().setExternFontName(outFontName);
-                    }else {
-                        viewModel.getStyle().setFontType(fontType);
-                    }
-                }
-            }
 
             @Override
-            public void fontStyle(boolean bold, boolean italic) {
-                if (viewModel != null){
-                    viewModel.getStyle().setFontBold(bold);
-                    viewModel.getStyle().setFontItalic(italic);
+            public void font(String psName) {
+                if (viewModel != null) {
+                    viewModel.getStyle().setExternFontName(psName);
                 }
             }
         });
@@ -221,31 +200,12 @@ public class CFreeTextStyleFragment extends CBasicPropertiesFragment implements
         }
     }
 
-    @Override
-    public void onChangeFontType(CPDFTextAttribute.FontNameHelper.FontType fontType) {
-        if (previewView != null) {
-            previewView.setFontType(fontType);
-        }
-    }
 
-    @Override
-    public void onChangeAnnotExternFontType(String fontName) {
-        if (previewView != null) {
-            previewView.setExternFontType(fontName);
-        }
-    }
 
     @Override
-    public void onChangeFontBold(boolean bold) {
-        if (previewView != null) {
-            previewView.setFontBold(bold);
-        }
-    }
-
-    @Override
-    public void onChangeFontItalic(boolean italic) {
+    public void onChangeAnnotExternFontType(String fontName) {
         if (previewView != null) {
-            previewView.setFontItalic(italic);
+            previewView.setFontPsName(fontName);
         }
     }
 

+ 1 - 1
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/annotation/pdfproperties/pdfsignature/CAddSignatureActivity.java

@@ -203,7 +203,7 @@ public class CAddSignatureActivity extends AppCompatActivity implements View.OnC
             ivNone.setVisibility(showNoneType ? View.VISIBLE : View.GONE);
         }
         hideTypeface = getIntent().getBooleanExtra(EXTRA_HIDE_TYPEFACE, false);
-        fontView.initFont(CPDFTextAttribute.FontNameHelper.FontType.Helvetica.name(), false,false);
+        fontView.initFont("Nimbus Sans");
     }
 
     private void switchTab(int selectPosition) {

+ 26 - 52
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/font/CFontSpinnerAdapter1.java

@@ -23,6 +23,7 @@ import com.compdfkit.core.annotation.CPDFTextAttribute;
 import com.compdfkit.core.font.CPDFFont;
 import com.compdfkit.core.font.CPDFFontName;
 import com.compdfkit.tools.R;
+import com.compdfkit.tools.common.views.pdfproperties.font.bean.CFontStyleItemBean;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -30,37 +31,23 @@ import java.util.List;
 
 public class CFontSpinnerAdapter1 extends BaseAdapter {
 
-    private List<CPDFTextAttribute.FontNameHelper.FontType> list;
-
-    private List<CPDFFontName> outFontList;
+    private List<CPDFFontName> list;
 
     private Context mContext;
 
     public CFontSpinnerAdapter1(@NonNull Context context) {
-        ArrayList<CPDFTextAttribute.FontNameHelper.FontType> tempList = new ArrayList<>();
-        tempList.add(CPDFTextAttribute.FontNameHelper.FontType.Helvetica);
-        tempList.add(CPDFTextAttribute.FontNameHelper.FontType.Courier);
-        tempList.add(CPDFTextAttribute.FontNameHelper.FontType.Times_Roman);
-        list = tempList;
-        outFontList= CPDFFont.getOutFontName();
+        list = CPDFFont.getOutFontName();
         mContext = context;
     }
 
     @Override
     public int getCount() {
-        return list.size() + (outFontList == null ? 0 : outFontList.size());
+        return list.size();
     }
 
     @Override
-    public Object getItem(int position) {
-        if (position < list.size()) {
-            return list.get(position);
-        } else {
-            if (outFontList != null) {
-                return outFontList.get(position - list.size());
-            }
-            return null;
-        }
+    public CPDFFontName getItem(int position) {
+        return list.get(position);
     }
 
     @Override
@@ -72,52 +59,39 @@ public class CFontSpinnerAdapter1 extends BaseAdapter {
     public View getView(int position, View convertView, ViewGroup parent) {
         LayoutInflater inflater = LayoutInflater.from(mContext);
         convertView = inflater.inflate(R.layout.tools_spinner_list_item, null);
-        if (convertView != null){
+        if (convertView != null) {
             AppCompatTextView textView = convertView.findViewById(R.id.tv_menu_title);
-            if (position < list.size()){
-                CPDFTextAttribute.FontNameHelper.FontType fontType = (CPDFTextAttribute.FontNameHelper.FontType) getItem(position);
-                String fontName = CPDFTextAttribute.FontNameHelper.obtainFontName(fontType, false, false);
-                Typeface typeface = CPDFTextAttribute.FontNameHelper.getInnerTypeface(textView.getContext(), fontName);
-                if (fontType == CPDFTextAttribute.FontNameHelper.FontType.Unknown){
-                    textView.setTypeface(Typeface.DEFAULT);
-                    textView.setText(CPDFTextAttribute.FontNameHelper.FontType.Unknown.name());
-                } else {
-                    textView.setTypeface(typeface);
-                    textView.setText(fontName);
-                }
-            }else {
-                CPDFFontName outFontName = (CPDFFontName) getItem(position);
-                String outFont = CPDFTextAttribute.FontNameHelper.obtainOutFontName(outFontName.getFamilyName(), false,false);
-                Typeface typeface = CPDFTextAttribute.FontNameHelper.getTypeface(mContext, outFont);
-                textView.setTypeface(typeface);
-                textView.setText(outFontName.getFamilyName());
-            }
+            CPDFFontName cpdfFontName = list.get(position);
+            String familyName = cpdfFontName.getFamilyName();
+            String outFont = CPDFTextAttribute.FontNameHelper.obtainOutFontName(familyName, false, false);
+            Typeface typeface = CPDFTextAttribute.FontNameHelper.getTypeface(mContext, outFont);
+            textView.setTypeface(typeface);
+            textView.setText(familyName);
+
         }
         return convertView;
     }
 
-    public int getPosition(String fontName){
+    public int getPosition(String familyName) {
         for (int i = 0; i < list.size(); i++) {
-            CPDFTextAttribute.FontNameHelper.FontType fontType = list.get(i);
-            if (fontType.name().equals(fontName)){
+            CPDFFontName fontName = list.get(i);
+            if (fontName.getFamilyName().equals(familyName)) {
                 return i;
             }
         }
-        for (int i = 0; i < outFontList.size(); i++) {
-            CPDFFontName name = outFontList.get(i);
-            if (name.getFamilyName().equals(fontName)) {
-                return list.size() + i;
-            }
-        }
         return 0;
     }
 
-    public CPDFFontName getCPDFFontName(String familyName){
-        for (CPDFFontName cpdfFontName : outFontList) {
-            if (cpdfFontName.getFamilyName().equals(familyName)) {
-                return cpdfFontName;
+    public List<CFontStyleItemBean> getFontStyleList(CPDFFontName cpdfFontName) {
+        List<CFontStyleItemBean> styleItemBeans = new ArrayList<>();
+        for (String styleName : cpdfFontName.getStyleName()) {
+            String psName = CPDFTextAttribute.FontNameHelper.obtainOutFontName(cpdfFontName.getFamilyName(), styleName);
+            if (styleName.equals("Regular")) {
+                styleItemBeans.add(0, new CFontStyleItemBean(styleName, psName));
+            } else {
+                styleItemBeans.add(new CFontStyleItemBean(styleName, psName));
             }
         }
-        return null;
+        return styleItemBeans;
     }
 }

+ 24 - 66
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/font/CFontStyleSpinnerAdapter.java

@@ -12,6 +12,7 @@ import androidx.appcompat.widget.AppCompatTextView;
 import com.compdfkit.core.annotation.CPDFTextAttribute;
 import com.compdfkit.core.font.CPDFFontName;
 import com.compdfkit.tools.R;
+import com.compdfkit.tools.common.views.pdfproperties.font.bean.CFontStyleItemBean;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -25,17 +26,7 @@ import java.util.List;
  */
 public class CFontStyleSpinnerAdapter extends BaseAdapter {
 
-    enum FontStyle {
-        Normal,
-
-        Bold,
-
-        Italic,
-
-        Bold_Italic
-    }
-
-    private List<FontStyle> list;
+    private List<CFontStyleItemBean> list;
 
     private Context mContext;
 
@@ -50,7 +41,7 @@ public class CFontStyleSpinnerAdapter extends BaseAdapter {
     }
 
     @Override
-    public FontStyle getItem(int position) {
+    public CFontStyleItemBean getItem(int position) {
         return list.get(position);
     }
 
@@ -65,68 +56,35 @@ public class CFontStyleSpinnerAdapter extends BaseAdapter {
         convertView = inflater.inflate(R.layout.tools_spinner_list_item, null);
         if (convertView != null) {
             AppCompatTextView textView = convertView.findViewById(R.id.tv_menu_title);
-            switch (list.get(position)){
-                case Normal:
-                    textView.setText(R.string.tools_font_style_normal);
-                    break;
-                case Bold:
-                    textView.setText(R.string.tools_font_style_bold);
-
-                    break;
-                case Italic:
-                    textView.setText(R.string.tools_font_style_italic);
-
-                    break;
-                case Bold_Italic:
-                    textView.setText(R.string.tools_font_style_bold_italic);
-                    break;
-            }
-
+            textView.setText(list.get(position).getStyleName());
         }
         return convertView;
     }
 
-    public void updateFontStyle(CPDFTextAttribute.FontNameHelper.FontType fontType){
-        list.clear();
-        list.addAll(Arrays.asList(FontStyle.values()));
+    public void resetFontStyles(List<CFontStyleItemBean> list){
+        this.list.clear();
+        this.list.addAll(list);
         notifyDataSetChanged();
     }
 
-    public void updateFontStyle(CPDFFontName outFamilyName){
-       list.clear();
-       list.add(FontStyle.Normal);
-       if (outFamilyName.isSupportBold()){
-           list.add(FontStyle.Bold);
-       }
-
-       if (outFamilyName.isSupportItalic()){
-           list.add(FontStyle.Italic);
-       }
-       if (outFamilyName.isSupportBold() && outFamilyName.isSupportItalic()){
-           list.add(FontStyle.Bold_Italic);
-       }
-       notifyDataSetChanged();
-    }
-
     public int getIndex(boolean isBold, boolean isItalic){
-        FontStyle style = FontStyle.Normal;
-        if (isBold){
-            style = FontStyle.Bold;
-        }
-        if (isItalic){
-            if (isBold){
-                style = FontStyle.Bold_Italic;
-            }else {
-                style = FontStyle.Italic;
-            }
-        }
-
-        for (int i = 0; i < list.size(); i++) {
-            FontStyle item = list.get(i);
-            if (item == style){
-                return i;
-            }
-        }
+//        if (isBold){
+//            style = FontStyle.Bold;
+//        }
+//        if (isItalic){
+//            if (isBold){
+//                style = FontStyle.Bold_Italic;
+//            }else {
+//                style = FontStyle.Italic;
+//            }
+//        }
+//
+//        for (int i = 0; i < list.size(); i++) {
+//            FontStyle item = list.get(i);
+//            if (item == style){
+//                return i;
+//            }
+//        }
         return 0;
     }
 

+ 34 - 94
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/font/CPDFFontView.java

@@ -11,6 +11,7 @@ package com.compdfkit.tools.common.views.pdfproperties.font;
 
 import android.content.Context;
 import android.graphics.Typeface;
+import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.view.View;
 import android.widget.AdapterView;
@@ -23,9 +24,9 @@ import com.compdfkit.core.annotation.CPDFTextAttribute;
 import com.compdfkit.core.font.CPDFFont;
 import com.compdfkit.core.font.CPDFFontName;
 import com.compdfkit.tools.R;
-import com.compdfkit.tools.common.utils.CLog;
+import com.compdfkit.tools.common.views.pdfproperties.font.bean.CFontStyleItemBean;
 
-import java.util.ArrayList;
+import java.util.List;
 
 
 public class CPDFFontView extends LinearLayout {
@@ -38,10 +39,6 @@ public class CPDFFontView extends LinearLayout {
 
     private CFontStyleSpinnerAdapter fontStyleSpinnerAdapter;
 
-    private boolean fontIsBold = false;
-
-    private boolean fontIsItalic = false;
-
     private CFontChangeListener fontChangeListener;
 
     private CFontTypefaceListener typefaceListener;
@@ -66,68 +63,47 @@ public class CPDFFontView extends LinearLayout {
         if (!isInEditMode()) {
             fontAdapter = new CFontSpinnerAdapter1(context);
             fontSpinner.setAdapter(fontAdapter);
-
-
             fontStyleSpinnerAdapter = new CFontStyleSpinnerAdapter(context);
             fontStyleSpinner.setAdapter(fontStyleSpinnerAdapter);
-
         }
     }
 
     private int fontCheck = 0;
     private int fontStyleCheck = 0;
 
-    public void initFont(String fontName, boolean isBold, boolean isItalic) {
+    public void initFont(String psName) {
         fontCheck = 0;
         fontStyleCheck = 0;
-        fontSpinner.setSelection(fontAdapter.getPosition(fontName));
-        switch (fontName) {
-            case "Courier":
-            case "Helvetica":
-            case "Times_Roman":
-                fontStyleSpinnerAdapter.updateFontStyle(CPDFTextAttribute.FontNameHelper.FontType.valueOf(fontName));
-                break;
-            default:
-                CPDFFontName cpdfFontName = fontAdapter.getCPDFFontName(fontName);
-                if (cpdfFontName != null) {
-                    fontStyleSpinnerAdapter.updateFontStyle(cpdfFontName);
-                } else {
-                    fontStyleSpinnerAdapter.updateFontStyle(CPDFTextAttribute.FontNameHelper.FontType.Helvetica);
-                }
+        String familyName = CPDFFont.getFamilyName(psName);
+        if (TextUtils.isEmpty(familyName)) {
+            familyName = psName;
+        }
+        int index = fontAdapter.getPosition(familyName);
+        fontSpinner.setSelection(index);
+        CPDFFontName item = fontAdapter.getItem(index);
+        List<CFontStyleItemBean> styleItemBeans = fontAdapter.getFontStyleList(item);
+        fontStyleSpinnerAdapter.resetFontStyles(styleItemBeans);
+        int styleIndex = 0;
+        for (int i = 0; i < styleItemBeans.size(); i++) {
+            if (styleItemBeans.get(i).getPsName().equals(psName)) {
+                styleIndex = i;
                 break;
+            }
         }
-        int fontStyleIndex = fontStyleSpinnerAdapter.getIndex(isBold, isItalic);
-        fontStyleSpinner.setSelection(fontStyleIndex);
-        updateStyle(fontStyleSpinnerAdapter.getItem(fontStyleIndex));
+        fontStyleSpinner.setSelection(styleIndex);
 
         fontSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
             @Override
             public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                 if (++fontCheck > 1) {
-
-                    Object fontObj = fontAdapter.getItem(position);
-                    if (fontObj instanceof CPDFTextAttribute.FontNameHelper.FontType) {
-                        if (fontChangeListener != null) {
-                            fontChangeListener.font((CPDFTextAttribute.FontNameHelper.FontType) fontObj, null);
-                        }
-                        fontStyleSpinnerAdapter.updateFontStyle((CPDFTextAttribute.FontNameHelper.FontType) fontObj);
-                        resetFontStyle();
-                    } else if (fontObj instanceof CPDFFontName) {
-                        CPDFFontName cpdfFontName = (CPDFFontName) fontObj;
-                        if (fontChangeListener != null) {
-                            fontChangeListener.font(null, cpdfFontName.getFamilyName());
-                        }
-                        ArrayList<String> psNames = cpdfFontName.getPsName();
-                        CLog.e("字体", cpdfFontName.getFamilyName() + " styleName: " + cpdfFontName.getStyleName());
-                        CLog.e("字体", "psName----- >");
-                        for (String psName : psNames) {
-                            CLog.e("字体", psName);
-                        }
-                        CLog.e("字体", "psName----- <");
-                        fontStyleSpinnerAdapter.updateFontStyle(((CPDFFontName) fontObj));
-                        resetFontStyle();
+                    CPDFFontName cpdfFontName = fontAdapter.getItem(position);
+                    List<CFontStyleItemBean> list = fontAdapter.getFontStyleList(cpdfFontName);
+                    if (fontChangeListener != null) {
+                        fontChangeListener.font(list.get(0).getPsName());
                     }
-                    changeTypefaceListener();
+                    fontStyleSpinnerAdapter.resetFontStyles(list);
+                    resetFontStyle();
+                    changeTypefaceListener(list.get(0).getPsName());
                 }
             }
 
@@ -137,17 +113,15 @@ public class CPDFFontView extends LinearLayout {
             }
         });
 
-
         fontStyleSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
             @Override
             public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-                if (++fontStyleCheck > 1){
-                    CFontStyleSpinnerAdapter.FontStyle fontStyle = fontStyleSpinnerAdapter.getItem(position);
-                    updateStyle(fontStyle);
+                if (++fontStyleCheck > 1) {
+                    CFontStyleItemBean item = fontStyleSpinnerAdapter.getItem(position);
                     if (fontChangeListener != null) {
-                        fontChangeListener.fontStyle(fontIsBold, fontIsItalic);
+                        fontChangeListener.font(item.getPsName());
                     }
-                    changeTypefaceListener();
+                    changeTypefaceListener(item.getPsName());
                 }
             }
 
@@ -156,50 +130,19 @@ public class CPDFFontView extends LinearLayout {
 
             }
         });
-
     }
 
-    private void changeTypefaceListener() {
+    private void changeTypefaceListener(String psName) {
         if (typefaceListener != null) {
-            Object font = fontSpinner.getSelectedItem();
-            if (font instanceof CPDFTextAttribute.FontNameHelper.FontType) {
-                String fontTypeName = CPDFTextAttribute.FontNameHelper.obtainFontName((CPDFTextAttribute.FontNameHelper.FontType) font, fontIsBold, fontIsItalic);
-                Typeface typeface = CPDFTextAttribute.FontNameHelper.getTypeface(getContext(), fontTypeName);
-                typefaceListener.typeface(typeface);
-            } else if (font instanceof CPDFFontName) {
-                String psName = CPDFFont.getPsName(((CPDFFontName) font).getFamilyName(), fontIsBold, fontIsItalic);
-                Typeface typeface = CPDFTextAttribute.FontNameHelper.getOutTypeface(getContext(), psName);
-                typefaceListener.typeface(typeface);
-            }
+            Typeface typeface = CPDFTextAttribute.FontNameHelper.getTypeface(getContext(), psName);
+            typefaceListener.typeface(typeface);
         }
     }
 
     private void resetFontStyle() {
-        fontIsBold = false;
-        fontIsItalic = false;
         fontStyleSpinner.setSelection(0);
     }
 
-    private void updateStyle(CFontStyleSpinnerAdapter.FontStyle fontStyle) {
-        switch (fontStyle) {
-            case Bold:
-                fontIsBold = true;
-                fontIsItalic = false;
-                break;
-            case Italic:
-                fontIsBold = false;
-                fontIsItalic = true;
-                break;
-            case Bold_Italic:
-                fontIsBold = true;
-                fontIsItalic = true;
-                break;
-            default:
-                fontIsBold = false;
-                fontIsItalic = false;
-                break;
-        }
-    }
 
     public void setFontChangeListener(CFontChangeListener fontChangeListener) {
         this.fontChangeListener = fontChangeListener;
@@ -210,10 +153,7 @@ public class CPDFFontView extends LinearLayout {
     }
 
     public interface CFontChangeListener {
-        void font(CPDFTextAttribute.FontNameHelper.FontType fontType, String outFontName);
-
-
-        void fontStyle(boolean bold, boolean italic);
+        void font(String psName);
     }
 
 

+ 40 - 0
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/font/bean/CFontStyleItemBean.java

@@ -0,0 +1,40 @@
+/**
+ * Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+ *
+ * THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+ * AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+ * UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+ * This notice may not be removed from this file.
+ */
+package com.compdfkit.tools.common.views.pdfproperties.font.bean;
+
+
+import java.io.Serializable;
+
+public class CFontStyleItemBean implements Serializable {
+
+    private String styleName;
+
+    private String psName;
+
+    public CFontStyleItemBean(String styleName, String psName){
+        this.styleName = styleName;
+        this.psName = psName;
+    }
+
+    public String getStyleName() {
+        return styleName;
+    }
+
+    public void setStyleName(String styleName) {
+        this.styleName = styleName;
+    }
+
+    public String getPsName() {
+        return psName;
+    }
+
+    public void setPsName(String psName) {
+        this.psName = psName;
+    }
+}

+ 8 - 0
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/pdfstyle/CAnnotStyle.java

@@ -250,6 +250,14 @@ public class CAnnotStyle implements Serializable {
         updateFontBold(this.fontBold, update);
     }
 
+    public void setBold(boolean isBold){
+        this.fontBold = isBold;
+    }
+
+    public void setItalic(boolean isItalic){
+        this.fontItalic = isItalic;
+    }
+
     public boolean isFontItalic() {
         return fontItalic;
     }

+ 5 - 2
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/pdfstyle/manager/provider/CEditSelectionsProvider.java

@@ -75,7 +75,12 @@ public class CEditSelectionsProvider implements CStyleProvider {
                         textSelections.setAlign(CPDFEditTextArea.PDFEditAlignType.PDFEditAlignRight);
                     }
                 } else if (type == CAnnotStyle.EditUpdatePropertyType.FontType) {
+                    CLog.e("字体", "内容编辑Provider:Font:" + getAnnotStyleFontName(style) + ", isBold:"+ style.isFontBold() +", isItalic:" + style.isFontItalic());
                     textSelections.setFontName(getAnnotStyleFontName(style));
+                    textSelections.setBold(style.isFontBold());
+                    textSelections.setItalic(style.isFontItalic());
+                    CLog.e("字体", "内容编辑Provider after:Font:" + textSelections.getFontName() + ", isBold:"+ textSelections.isBold() +", isItalic:" + textSelections.isItalic());
+
                 } else {
                     textSelections.setColor(style.getTextColor());
                     textSelections.setTransparancy(style.getTextColorOpacity());
@@ -169,8 +174,6 @@ public class CEditSelectionsProvider implements CStyleProvider {
             style.setFontColor(textSelections.getColor());
             int fontsize = (int) textSelections.getFontSize();
             style.setFontSize(fontsize > 0 ? fontsize : 25);
-            String psName = CPDFTextAttribute.FontNameHelper.obtainOutFontName(textSelections.getFontName(), textSelections.isBold(), textSelections.isItalic());
-            CLog.e("字体", "fontName: "+textSelections.getFontName() +"文字编辑-psName:" + psName);
             updateAnnotStyleFont(style, textSelections.getFontName());
         } else if (style.getType() == CStyleType.EDIT_IMAGE) {
             CPDFEditArea editArea = pageView.getCurrentEditArea();

+ 0 - 3
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/pdfstyle/manager/provider/CGlobalStyleProvider.java

@@ -501,10 +501,7 @@ public class CGlobalStyleProvider extends CBasicOnStyleChangeListener implements
                 style.setTextColorOpacity(freetextAttr.getAlpha());
                 CPDFTextAttribute textAttribute = freetextAttr.getTextAttribute();
                 style.setFontColor(textAttribute.getColor());
-                style.setFontBold(CPDFTextAttribute.FontNameHelper.isBold(textAttribute.getFontName()));
-                style.setFontItalic(CPDFTextAttribute.FontNameHelper.isItalic(textAttribute.getFontName()));
                 style.setFontSize((int) textAttribute.getFontSize());
-
                 updateAnnotStyleFont(style, textAttribute.getFontName());
                 break;
             case FORM_TEXT_FIELD:

+ 12 - 18
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/pdfstyle/manager/provider/CStyleProvider.java

@@ -29,28 +29,22 @@ public interface CStyleProvider {
     public CAnnotStyle getStyle(CStyleType type);
 
 
+
+
     default public String getAnnotStyleFontName(CAnnotStyle annotStyle){
-        String fontName;
-        if (!TextUtils.isEmpty(annotStyle.getExternFontName())){
-            fontName = CPDFTextAttribute.FontNameHelper.obtainOutFontName(annotStyle.getExternFontName(), annotStyle.isFontBold(), annotStyle.isFontItalic());
-        } else {
-            fontName = CPDFTextAttribute.FontNameHelper.obtainFontName(annotStyle.getFontType(), annotStyle.isFontBold(), annotStyle.isFontItalic());
-        }
-        CLog.e("字体", "更新字体:" + fontName);
-
-        return fontName;
+//        String fontName;
+//        if (!TextUtils.isEmpty(annotStyle.getExternFontName())){
+//            fontName = CPDFTextAttribute.FontNameHelper.obtainOutFontName(annotStyle.getExternFontName(), annotStyle.isFontBold(), annotStyle.isFontItalic());
+//        } else {
+//            fontName = CPDFTextAttribute.FontNameHelper.obtainFontName(annotStyle.getFontType(), annotStyle.isFontBold(), annotStyle.isFontItalic());
+//        }
+//        CLog.e("字体", "更新字体fontName:" + fontName);
+        CLog.e("字体", "更新字体:" + annotStyle.getExternFontName());
+        return annotStyle.getExternFontName();
     }
 
     default public void updateAnnotStyleFont(CAnnotStyle annotStyle, String attrFontName){
-        String familyName = CPDFFont.getFamilyName(attrFontName);
         CLog.e("字体", "获取到字体:" + attrFontName);
-
-        if (!TextUtils.isEmpty(familyName)) {
-            annotStyle.setFontType(CPDFTextAttribute.FontNameHelper.FontType.Unknown);
-            annotStyle.setExternFontName(familyName);
-        }else {
-            annotStyle.setFontType(CPDFTextAttribute.FontNameHelper.getFontType(attrFontName));
-            annotStyle.setExternFontName("");
-        }
+        annotStyle.setExternFontName(attrFontName);
     }
 }

+ 5 - 41
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/preview/CAnnotFreeTextPreviewView.java

@@ -31,17 +31,11 @@ import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.CAnnotStyle;
 
 public class CAnnotFreeTextPreviewView extends CBasicAnnotPreviewView {
 
-    private boolean isItalic;
-
-    private boolean isBold;
-
     private int textColorOpacity = 255;
 
     private AppCompatTextView textView;
 
-    private CPDFTextAttribute.FontNameHelper.FontType fontType = CPDFTextAttribute.FontNameHelper.FontType.Helvetica;
-
-    private String externFamilyName = "";
+    private String fontPsName;
 
     public CAnnotFreeTextPreviewView(@NonNull Context context) {
         this(context, null);
@@ -57,7 +51,7 @@ public class CAnnotFreeTextPreviewView extends CBasicAnnotPreviewView {
 
     @Override
     protected void bindView() {
-        fontType = CPDFTextAttribute.FontNameHelper.FontType.Helvetica;
+        fontPsName = CPDFTextAttribute.FontNameHelper.FontType.Helvetica.name();
         textView = new AppCompatTextView(getContext());
         textView.setTextSize(24);
         textView.setText(R.string.tools_sample);
@@ -85,29 +79,7 @@ public class CAnnotFreeTextPreviewView extends CBasicAnnotPreviewView {
     }
 
     private Typeface getTypeFace(){
-        Typeface typeface = null;
-        if (TextUtils.isEmpty(externFamilyName)) {
-            String fontName = CPDFTextAttribute.FontNameHelper.obtainFontName(fontType, isBold, isItalic);
-             typeface = CPDFTextAttribute.FontNameHelper.getInnerTypeface(getContext(), fontName);
-        } else {
-            String psName  = CPDFFont.getPsName(externFamilyName, isBold, isItalic);
-            typeface = CPDFTextAttribute.FontNameHelper.getOutTypeface(getContext(), psName);
-        }
-        return typeface;
-    }
-
-    @Override
-    public void setFontBold(boolean bold) {
-        super.setFontBold(bold);
-        this.isBold = bold;
-        textView.setTypeface(getTypeFace());
-    }
-
-    @Override
-    public void setFontItalic(boolean italic) {
-        super.setFontItalic(italic);
-        this.isItalic = italic;
-        textView.setTypeface(getTypeFace());
+        return CPDFTextAttribute.FontNameHelper.getTypeface(getContext(), fontPsName);
     }
 
     @Override
@@ -137,16 +109,8 @@ public class CAnnotFreeTextPreviewView extends CBasicAnnotPreviewView {
     }
 
     @Override
-    public void setFontType(CPDFTextAttribute.FontNameHelper.FontType fontType) {
-        super.setFontType(fontType);
-        this.fontType = fontType;
-        externFamilyName = "";
-        textView.setTypeface(getTypeFace());
-    }
-
-    @Override
-    public void setExternFontType(String familyName){
-        externFamilyName = familyName;
+    public void setFontPsName(String fontPsName) {
+        this.fontPsName = fontPsName;
         textView.setTypeface(getTypeFace());
     }
 }

+ 1 - 8
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/preview/CBasicAnnotPreviewView.java

@@ -74,17 +74,10 @@ abstract class CBasicAnnotPreviewView extends FrameLayout {
 
     public void setTextColorOpacity(int textColorOpacity){}
 
-    public void setFontBold(boolean bold){}
-
-    public void setFontItalic(boolean italic){}
-
     public void setTextAlignment(CAnnotStyle.Alignment alignment){}
 
     public void setFontSize(int fontSize){}
 
-    public void setFontType(CPDFTextAttribute.FontNameHelper.FontType fontType){}
-
-
     public void setMirror(CAnnotStyle.Mirror mirror){
 
     }
@@ -93,5 +86,5 @@ abstract class CBasicAnnotPreviewView extends FrameLayout {
 
     }
 
-    public void setExternFontType(String familyName){}
+    public void setFontPsName(String fontPsName){}
 }

+ 2 - 21
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/preview/CStylePreviewView.java

@@ -122,18 +122,6 @@ public class CStylePreviewView extends FrameLayout {
         }
     }
 
-    public void setFontBold(boolean bold){
-        if (previewView != null) {
-            previewView.setFontBold(bold);
-        }
-    }
-
-    public void setFontItalic(boolean italic){
-        if (previewView != null) {
-            previewView.setFontItalic(italic);
-        }
-    }
-
     public void setTextAlignment(CAnnotStyle.Alignment alignment){
         if (previewView != null) {
             previewView.setTextAlignment(alignment);
@@ -146,12 +134,6 @@ public class CStylePreviewView extends FrameLayout {
         }
     }
 
-    public void setFontType(CPDFTextAttribute.FontNameHelper.FontType fontType){
-        if (previewView != null) {
-            previewView.setFontType(fontType);
-        }
-    }
-
     public void setMirror(CAnnotStyle.Mirror mirror){
         if (previewView != null) {
             previewView.setMirror(mirror);
@@ -164,9 +146,9 @@ public class CStylePreviewView extends FrameLayout {
         }
     }
 
-    public void setExternFontType(String familyName) {
+    public void setFontPsName(String fontPsName) {
         if (previewView != null) {
-            previewView.setExternFontType(familyName);
+            previewView.setFontPsName(fontPsName);
         }
     }
 
@@ -273,5 +255,4 @@ public class CStylePreviewView extends FrameLayout {
                 return CStyleType.UNKNOWN;
         }
     }
-
 }

+ 15 - 54
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/contenteditor/pdfproperties/CEditTextProperFragment.java

@@ -12,7 +12,9 @@ import androidx.annotation.Nullable;
 import androidx.appcompat.widget.AppCompatImageView;
 
 import com.compdfkit.core.annotation.CPDFTextAttribute;
+import com.compdfkit.core.font.CPDFFont;
 import com.compdfkit.tools.R;
+import com.compdfkit.tools.common.utils.CLog;
 import com.compdfkit.tools.common.utils.view.colorpicker.CColorPickerFragment;
 import com.compdfkit.tools.common.utils.view.colorpicker.widget.ColorPickerView;
 import com.compdfkit.tools.common.utils.view.sliderbar.CSliderBar;
@@ -93,16 +95,10 @@ public class CEditTextProperFragment extends CBasicPropertiesFragment
             previewView.setTextColor(annotStyle.getTextColor());
             previewView.setTextAlignment(annotStyle.getAlignment());
             previewView.setTextColorOpacity(annotStyle.getTextColorOpacity());
-            previewView.setFontBold(annotStyle.isFontBold());
-            previewView.setFontItalic(annotStyle.isFontItalic());
-            previewView.setFontType(annotStyle.getFontType());
             previewView.setFontSize(annotStyle.getFontSize());
+            previewView.setFontPsName(annotStyle.getExternFontName());
 
-            if (!TextUtils.isEmpty(annotStyle.getExternFontName())) {
-                fontView.initFont(annotStyle.getExternFontName(), annotStyle.isFontBold(), annotStyle.isFontItalic());
-            } else {
-                fontView.initFont(annotStyle.getFontType().name(), annotStyle.isFontBold(), annotStyle.isFontItalic());
-            }
+            fontView.initFont(annotStyle.getExternFontName());
 
             colorListView.setSelectColor(annotStyle.getTextColor());
             opacitySliderBar.setProgress(annotStyle.getTextColorOpacity());
@@ -151,31 +147,17 @@ public class CEditTextProperFragment extends CBasicPropertiesFragment
             }
         });
         viewModel.addStyleChangeListener(this);
-        fontView.setFontChangeListener(new CPDFFontView.CFontChangeListener() {
-            @Override
-            public void font(CPDFTextAttribute.FontNameHelper.FontType fontType, String outFontName) {
-                if (viewModel != null) {
-                    setUpdatePropertyType(CAnnotStyle.EditUpdatePropertyType.FontType);
-                    if (!TextUtils.isEmpty(outFontName)) {
-                        viewModel.getStyle().setExternFontName(outFontName);
-                    } else {
-                        viewModel.getStyle().setFontType(fontType);
-                    }
-                    setUpdatePropertyType(CAnnotStyle.EditUpdatePropertyType.All);
-                }
-            }
-
-            @Override
-            public void fontStyle(boolean bold, boolean italic) {
-                if (viewModel != null) {
-                    setUpdatePropertyType(CAnnotStyle.EditUpdatePropertyType.Bold);
-                    viewModel.getStyle().setFontBold(bold);
-                    setUpdatePropertyType(CAnnotStyle.EditUpdatePropertyType.All);
-                    setUpdatePropertyType(CAnnotStyle.EditUpdatePropertyType.Italic);
-                    viewModel.getStyle().setFontItalic(italic);
-                    setUpdatePropertyType(CAnnotStyle.EditUpdatePropertyType.All);
-                }
+        fontView.setFontChangeListener(psName -> {
+            if (viewModel != null) {
+                boolean isBold = CPDFTextAttribute.FontNameHelper.isBold(psName);
+                boolean isItalic = CPDFTextAttribute.FontNameHelper.isItalic(psName);
+                CLog.e("字体", "内容编辑:Font:" + psName + ", isBold:"+ isBold +", isItalic:" + isItalic);
+                setUpdatePropertyType(CAnnotStyle.EditUpdatePropertyType.FontType);
+                viewModel.getStyle().setBold(isBold);
+                viewModel.getStyle().setItalic(isItalic);
+                viewModel.getStyle().setExternFontName(psName);
             }
+            setUpdatePropertyType(CAnnotStyle.EditUpdatePropertyType.All);
         });
     }
 
@@ -248,31 +230,10 @@ public class CEditTextProperFragment extends CBasicPropertiesFragment
         }
     }
 
-    @Override
-    public void onChangeFontType(CPDFTextAttribute.FontNameHelper.FontType fontType) {
-        if (previewView != null) {
-            previewView.setFontType(fontType);
-        }
-    }
-
     @Override
     public void onChangeAnnotExternFontType(String fontName) {
         if (previewView != null) {
-            previewView.setExternFontType(fontName);
-        }
-    }
-
-    @Override
-    public void onChangeFontBold(boolean bold) {
-        if (previewView != null) {
-            previewView.setFontBold(bold);
-        }
-    }
-
-    @Override
-    public void onChangeFontItalic(boolean italic) {
-        if (previewView != null) {
-            previewView.setFontItalic(italic);
+            previewView.setFontPsName(fontName);
         }
     }
 

+ 7 - 0
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/forms/pdfformbar/CFormToolbar.java

@@ -107,6 +107,13 @@ public class CFormToolbar extends FrameLayout {
     public void reset(){
         toolListAdapter.selectByType(CPDFWidget.WidgetType.Widget_Unknown);
         rvFormList.scrollToPosition(0);
+        CPDFUndoManager undoManager = pdfView.getCPdfReaderView().getUndoManager();
+        if (ivRedo != null) {
+            ivRedo.setEnabled(undoManager.canRedo());
+        }
+        if (ivUndo != null) {
+            ivUndo.setEnabled(undoManager.canRedo());
+        }
     }
 
     public void setFragmentManager(FragmentManager fragmentManager) {

+ 4 - 23
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/forms/pdfproperties/pdflistbox/CListBoxStyleFragment.java

@@ -70,11 +70,7 @@ public class CListBoxStyleFragment extends CBasicPropertiesFragment implements V
         super.onViewCreated(view, savedInstanceState);
         CAnnotStyle annotStyle = viewModel.getStyle();
         if (annotStyle != null) {
-            if (!TextUtils.isEmpty(annotStyle.getExternFontName())) {
-                fontView.initFont(annotStyle.getExternFontName(), annotStyle.isFontBold(), annotStyle.isFontItalic());
-            } else {
-                fontView.initFont(annotStyle.getFontType().name(), annotStyle.isFontBold(), annotStyle.isFontItalic());
-            }
+            fontView.initFont(annotStyle.getExternFontName());
             textFieldsView.setText(annotStyle.getFormFieldName());
             borderColorListView.setSelectColor(annotStyle.getLineColor());
             backgroundColorListView.setSelectColor(annotStyle.getFillColor());
@@ -141,24 +137,9 @@ public class CListBoxStyleFragment extends CBasicPropertiesFragment implements V
                 }
             }
         });
-        fontView.setFontChangeListener(new CPDFFontView.CFontChangeListener() {
-            @Override
-            public void font(CPDFTextAttribute.FontNameHelper.FontType fontType, String outFontName) {
-                if (viewModel != null) {
-                    if (!TextUtils.isEmpty(outFontName)) {
-                        viewModel.getStyle().setExternFontName(outFontName);
-                    }else {
-                        viewModel.getStyle().setFontType(fontType);
-                    }
-                }
-            }
-
-            @Override
-            public void fontStyle(boolean bold, boolean italic) {
-                if (viewModel != null){
-                    viewModel.getStyle().setFontBold(bold);
-                    viewModel.getStyle().setFontItalic(italic);
-                }
+        fontView.setFontChangeListener(psName -> {
+            if (viewModel != null) {
+                viewModel.getStyle().setExternFontName(psName);
             }
         });
         textFieldsView.setTextChangedListener((s, start, before, count) -> {

+ 4 - 23
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/forms/pdfproperties/pdfpushbutton/CPushButtonStyleFragment.java

@@ -76,11 +76,7 @@ public class CPushButtonStyleFragment extends CBasicPropertiesFragment implement
         super.onViewCreated(view, savedInstanceState);
         CAnnotStyle annotStyle = viewModel.getStyle();
         if (annotStyle != null) {
-            if (!TextUtils.isEmpty(annotStyle.getExternFontName())) {
-                fontView.initFont(annotStyle.getExternFontName(), annotStyle.isFontBold(), annotStyle.isFontItalic());
-            } else {
-                fontView.initFont(annotStyle.getFontType().name(), annotStyle.isFontBold(), annotStyle.isFontItalic());
-            }
+            fontView.initFont(annotStyle.getExternFontName());
             textFieldsView.setText(annotStyle.getFormFieldName());
             borderColorListView.setSelectColor(annotStyle.getLineColor());
             backgroundColorListView.setSelectColor(annotStyle.getFillColor());
@@ -148,24 +144,9 @@ public class CPushButtonStyleFragment extends CBasicPropertiesFragment implement
                 }
             }
         });
-        fontView.setFontChangeListener(new CPDFFontView.CFontChangeListener() {
-            @Override
-            public void font(CPDFTextAttribute.FontNameHelper.FontType fontType, String outFontName) {
-                if (viewModel != null) {
-                    if (!TextUtils.isEmpty(outFontName)) {
-                        viewModel.getStyle().setExternFontName(outFontName);
-                    }else {
-                        viewModel.getStyle().setFontType(fontType);
-                    }
-                }
-            }
-
-            @Override
-            public void fontStyle(boolean bold, boolean italic) {
-                if (viewModel != null){
-                    viewModel.getStyle().setFontBold(bold);
-                    viewModel.getStyle().setFontItalic(italic);
-                }
+        fontView.setFontChangeListener(psName -> {
+            if (viewModel != null) {
+                viewModel.getStyle().setExternFontName(psName);
             }
         });
         textFieldsView.setTextChangedListener((s, start, before, count) -> {

+ 3 - 19
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/forms/pdfproperties/pdftextfield/CTextFieldStyleFragment.java

@@ -104,11 +104,7 @@ public class CTextFieldStyleFragment extends CBasicPropertiesFragment implements
         super.onViewCreated(view, savedInstanceState);
         CAnnotStyle annotStyle = viewModel.getStyle();
         if (annotStyle != null) {
-            if (!TextUtils.isEmpty(annotStyle.getExternFontName())) {
-                fontView.initFont(annotStyle.getExternFontName(), annotStyle.isFontBold(), annotStyle.isFontItalic());
-            } else {
-                fontView.initFont(annotStyle.getFontType().name(), annotStyle.isFontBold(), annotStyle.isFontItalic());
-            }
+            fontView.initFont(annotStyle.getExternFontName());
             textFieldsView.setText(annotStyle.getFormFieldName());
             borderColorListView.setSelectColor(annotStyle.getLineColor());
             backgroundColorListView.setSelectColor(annotStyle.getFillColor());
@@ -193,21 +189,9 @@ public class CTextFieldStyleFragment extends CBasicPropertiesFragment implements
         });
         fontView.setFontChangeListener(new CPDFFontView.CFontChangeListener() {
             @Override
-            public void font(CPDFTextAttribute.FontNameHelper.FontType fontType, String outFontName) {
+            public void font(String psName) {
                 if (viewModel != null) {
-                    if (!TextUtils.isEmpty(outFontName)) {
-                        viewModel.getStyle().setExternFontName(outFontName);
-                    }else {
-                        viewModel.getStyle().setFontType(fontType);
-                    }
-                }
-            }
-
-            @Override
-            public void fontStyle(boolean bold, boolean italic) {
-                if (viewModel != null){
-                    viewModel.getStyle().setFontBold(bold);
-                    viewModel.getStyle().setFontItalic(italic);
+                    viewModel.getStyle().setExternFontName(psName);
                 }
             }
         });

+ 5 - 0
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/CWatermarkEditDialog.java

@@ -28,6 +28,7 @@ import com.compdfkit.core.document.CPDFDocument;
 import com.compdfkit.tools.R;
 import com.compdfkit.tools.common.basic.fragment.CBasicBottomSheetDialogFragment;
 import com.compdfkit.tools.common.utils.CFileUtils;
+import com.compdfkit.tools.common.utils.CLog;
 import com.compdfkit.tools.common.utils.CPermissionUtil;
 import com.compdfkit.tools.common.utils.activitycontracts.CMultiplePermissionResultLauncher;
 import com.compdfkit.tools.common.utils.threadpools.SimpleBackgroundTask;
@@ -230,11 +231,15 @@ public class CWatermarkEditDialog extends CBasicBottomSheetDialogFragment implem
                     @Override
                     protected String onRun() {
                         try {
+                            long time = System.currentTimeMillis();
                             boolean success = ((CWatermarkPageFragment) fragment).applyWatermark();
+                            CLog.e("水印", "生成水印耗时:" +(System.currentTimeMillis() - time));
+                            long time2 =System.currentTimeMillis();
                             if (!success) {
                                 return null;
                             }
                             boolean result = document.saveAs(pdfFile.getAbsolutePath(), false);
+                            CLog.e("水印", "水印文件保存耗时:" +(System.currentTimeMillis() - time2));
                             return result ? pdfFile.getAbsolutePath() : null;
                         } catch (Exception e) {
 

+ 4 - 35
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/CWatermarkPageFragment.java

@@ -22,7 +22,6 @@ import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.fragment.app.Fragment;
 
-import com.compdfkit.core.annotation.CPDFTextAttribute;
 import com.compdfkit.core.document.CPDFDocument;
 import com.compdfkit.core.watermark.CPDFWatermark;
 import com.compdfkit.tools.R;
@@ -154,10 +153,7 @@ public class CWatermarkPageFragment extends Fragment {
         annotStyle.setFontColor(watermarkPageView.watermarkView.getTextColor());
         annotStyle.setFontSize(watermarkPageView.watermarkView.getTextSize());
         annotStyle.setTextColorOpacity(watermarkPageView.watermarkView.getWatermarkAlpha());
-        annotStyle.setFontType(watermarkPageView.watermarkView.getFontType());
-        annotStyle.setExternFontName(watermarkPageView.watermarkView.getOutFamilyName());
-        annotStyle.setFontBold(watermarkPageView.watermarkView.isBold());
-        annotStyle.setFontItalic(watermarkPageView.watermarkView.isItalic());
+        annotStyle.setExternFontName(watermarkPageView.watermarkView.getFontPsName());
         annotStyle.setChecked(watermarkPageView.isTile());
         Map<String, Object> extraMap = new HashMap<>();
         extraMap.put("pageRange", watermarkPageView.getPageRange().name());
@@ -180,36 +176,9 @@ public class CWatermarkPageFragment extends Fragment {
             }
 
             @Override
-            public void onChangeFontType(CPDFTextAttribute.FontNameHelper.FontType fontType) {
-                super.onChangeFontType(fontType);
-                watermarkPageView.watermarkView.setTypeface(
-                        fontType,
-                        watermarkPageView.watermarkView.isBold(),
-                        watermarkPageView.watermarkView.isItalic());
-                watermarkPageView.updateTileWatermark();
-            }
-
-            @Override
-            public void onChangeAnnotExternFontType(String fontName) {
-                super.onChangeAnnotExternFontType(fontName);
-                watermarkPageView.watermarkView.setTypeface(
-                        fontName,
-                        watermarkPageView.watermarkView.isBold(),
-                        watermarkPageView.watermarkView.isItalic());
-                watermarkPageView.updateTileWatermark();
-            }
-
-            @Override
-            public void onChangeFontBold(boolean bold) {
-                super.onChangeFontBold(bold);
-                watermarkPageView.watermarkView.setBold(bold);
-                watermarkPageView.updateTileWatermark();
-            }
-
-            @Override
-            public void onChangeFontItalic(boolean italic) {
-                super.onChangeFontItalic(italic);
-                watermarkPageView.watermarkView.setItalic(italic);
+            public void onChangeAnnotExternFontType(String fontPsName) {
+                super.onChangeAnnotExternFontType(fontPsName);
+                watermarkPageView.watermarkView.setTypeface(fontPsName);
                 watermarkPageView.updateTileWatermark();
             }
 

+ 4 - 24
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/pdfproperties/CWatermarkTextStyleFragment.java

@@ -79,12 +79,7 @@ public class CWatermarkTextStyleFragment extends CBasicPropertiesFragment implem
         super.onViewCreated(view, savedInstanceState);
         CAnnotStyle annotStyle = viewModel.getStyle();
         if (annotStyle != null) {
-            if (!TextUtils.isEmpty(annotStyle.getExternFontName())) {
-                fontView.initFont(annotStyle.getExternFontName(), annotStyle.isFontBold(), annotStyle.isFontItalic());
-            } else {
-                fontView.initFont(annotStyle.getFontType().name(), annotStyle.isFontBold(), annotStyle.isFontItalic());
-            }
-
+            fontView.initFont(annotStyle.getExternFontName());
             Map<String, Object> extraMap = annotStyle.getCustomExtraMap();
             CPageRange pageRange = CPageRange.AllPages;
             if (extraMap.containsKey("pageRange")){
@@ -142,24 +137,9 @@ public class CWatermarkTextStyleFragment extends CBasicPropertiesFragment implem
         });
         viewModel.addStyleChangeListener(this);
 
-        fontView.setFontChangeListener(new CPDFFontView.CFontChangeListener() {
-            @Override
-            public void font(CPDFTextAttribute.FontNameHelper.FontType fontType, String outFontName) {
-                if (viewModel != null) {
-                    if (!TextUtils.isEmpty(outFontName)) {
-                        viewModel.getStyle().setExternFontName(outFontName);
-                    } else {
-                        viewModel.getStyle().setFontType(fontType);
-                    }
-                }
-            }
-
-            @Override
-            public void fontStyle(boolean bold, boolean italic) {
-                if (viewModel != null) {
-                    viewModel.getStyle().setFontBold(bold);
-                    viewModel.getStyle().setFontItalic(italic);
-                }
+        fontView.setFontChangeListener(psName -> {
+            if (viewModel != null) {
+                viewModel.getStyle().setExternFontName(psName);
             }
         });
 

+ 7 - 10
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/view/CWatermarkPageView.java

@@ -1,6 +1,6 @@
 /**
  * Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
- *
+ * <p>
  * THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
  * AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
  * UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
@@ -308,10 +308,10 @@ public class CWatermarkPageView extends FrameLayout {
         watermarkView.setDegree(0F);
     }
 
-    public void updateCenterPoint(){
+    public void updateCenterPoint() {
         PointF centerPointF = new PointF(currentPageWidth / 2, currentPageHeight / 2);
         watermarkView.resetLocation(centerPointF);
-        watermarkView.postDelayed(()->{
+        watermarkView.postDelayed(() -> {
             updateTileWatermark();
             invalidate();
         }, 100);
@@ -336,11 +336,7 @@ public class CWatermarkPageView extends FrameLayout {
         }
         if (watermark.getType() == CPDFWatermark.Type.WATERMARK_TYPE_TEXT) {
             watermarkView.initTextWaterMark(watermark.getText(), watermark.getTextRGBColor(), watermark.getFontSize(), (int) (watermark.getOpacity() * 255F));
-
-            CPDFTextAttribute.FontNameHelper.FontType fontType = CPDFTextAttribute.FontNameHelper.getFontType(watermark.getFontName());
-            boolean isBold = CPDFTextAttribute.FontNameHelper.isBold(watermark.getFontName());
-            boolean isItalic = CPDFTextAttribute.FontNameHelper.isItalic(watermark.getFontName());
-            watermarkView.setTypeface(fontType, isBold, isItalic);
+            watermarkView.setTypeface(watermark.getFontName());
         } else {
             watermarkView.setImageBitmap(watermark.getImage());
             watermarkView.setWatermarkAlpha((int) (watermark.getOpacity() * 255F));
@@ -370,7 +366,7 @@ public class CWatermarkPageView extends FrameLayout {
         } else {
             watermark = document.createWatermark(CPDFWatermark.Type.WATERMARK_TYPE_IMG);
         }
-        if (watermark == null){
+        if (watermark == null) {
             return false;
         }
         return modifyWatermark(watermark);
@@ -387,7 +383,8 @@ public class CWatermarkPageView extends FrameLayout {
             }
             watermark.setScale(watermarkView.getScale() * whScale);
         }
-        watermark.setFontName(watermarkView.getFontName());
+        watermark.setFontName(watermarkView.getFontPsName());
+
         watermark.setText(watermarkView.getText());
         watermark.setTextRGBColor(watermarkView.getTextColor());
         watermark.setFontSize(watermarkView.getTextSize() * whScale);

+ 19 - 109
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/view/CWatermarkView.java

@@ -310,13 +310,8 @@ public class CWatermarkView extends View {
 
     private Typeface typeface = Typeface.DEFAULT;
 
-    private CPDFTextAttribute.FontNameHelper.FontType fontType = CPDFTextAttribute.FontNameHelper.FontType.Helvetica;
 
-    private String outFamilyName;
-
-    private boolean isBold = false;
-
-    private boolean isItalic = false;
+    private String fontPsName = CPDFTextAttribute.FontNameHelper.FontType.Helvetica.name();
 
     private int textColor = Color.BLACK;
 
@@ -374,6 +369,10 @@ public class CWatermarkView extends View {
 
         mDrawPaint.setAntiAlias(true);
 
+        fontPsName = CPDFTextAttribute.FontNameHelper.obtainFontName(
+                CPDFTextAttribute.FontNameHelper.FontType.Helvetica, false, false
+        );
+
     }
 
     /**
@@ -466,16 +465,16 @@ public class CWatermarkView extends View {
         transformDraw();
     }
 
-    public void resetLocation(PointF center){
+    public void resetLocation(PointF center) {
         offsetX = 0;
         offsetY = 0;
-        if (editType == EditType.Image){
-            if (mBitmap != null){
+        if (editType == EditType.Image) {
+            if (mBitmap != null) {
                 setCenter(center);
                 calculateDrawToCenterDistance();
                 transformDraw();
             }
-        }else {
+        } else {
             setCenter(center);
             calculateBaseLine();
             calculateDrawToCenterDistance();
@@ -511,107 +510,18 @@ public class CWatermarkView extends View {
         return watermarkAlpha;
     }
 
-    /**
-     * Get text watermark font is bold
-     *
-     * @return
-     */
-    public boolean isBold() {
-        return isBold;
-    }
-
-    /**
-     * get text watermark font is italic
-     *
-     * @return
-     */
-    public boolean isItalic() {
-        return isItalic;
-    }
-
-    /**
-     * set text watermark font is bold
-     *
-     * @param bold
-     */
-    public void setBold(boolean bold) {
-        if (!TextUtils.isEmpty(outFamilyName)){
-            setTypeface(outFamilyName, bold, isItalic());
-        }else {
-            setTypeface(getFontType(), bold, isItalic());
-        }
-    }
-
-    /**
-     * set text watermark font is italic
-     *
-     * @param italic
-     */
-    public void setItalic(boolean italic) {
-        if (!TextUtils.isEmpty(outFamilyName)){
-            setTypeface(outFamilyName, isBold(), italic);
-        }else {
-            setTypeface(getFontType(), isBold(), italic);
-        }
-    }
-
-    /**
-     * Set text watermark font typeface
-     *
-     * @param fontType font type
-     * @param isBold   set font is bold
-     * @param isItalic set font is italic
-     * @see com.compdfkit.core.annotation.CPDFTextAttribute.FontNameHelper.FontType#Helvetica
-     * @see com.compdfkit.core.annotation.CPDFTextAttribute.FontNameHelper.FontType#Times_Roman
-     * @see com.compdfkit.core.annotation.CPDFTextAttribute.FontNameHelper.FontType#Courier
-     */
-    public void setTypeface(CPDFTextAttribute.FontNameHelper.FontType fontType, boolean isBold, boolean isItalic) {
-        String fontName = CPDFTextAttribute.FontNameHelper.obtainFontName(fontType, isBold, isItalic);
-        Typeface typeface = CPDFTextAttribute.FontNameHelper.getInnerTypeface(getContext(), fontName);
+    public void setTypeface(String fontPsName) {
+        Typeface typeface = CPDFTextAttribute.FontNameHelper.getTypeface(getContext(), fontPsName);
         this.typeface = typeface;
-        this.fontType = fontType;
-        this.isBold = isBold;
-        this.outFamilyName = "";
-        this.isItalic = isItalic;
+        this.fontPsName = fontPsName;
         txtPaint.setTypeface(this.typeface);
         calculateBaseLine();
         calculateDrawToCenterDistance();
         transformDraw();
     }
 
-    public void setTypeface(String outFamilyName, boolean isBold, boolean isItalic) {
-        String psName = CPDFTextAttribute.FontNameHelper.obtainOutFontName(outFamilyName, isBold, isItalic);
-        Typeface typeface = CPDFTextAttribute.FontNameHelper.getOutTypeface(getContext(), psName);
-        this.typeface = typeface;
-        this.fontType = CPDFTextAttribute.FontNameHelper.FontType.Unknown;
-        this.outFamilyName = outFamilyName;
-        this.isBold = isBold;
-        this.isItalic = isItalic;
-        txtPaint.setTypeface(this.typeface);
-        calculateBaseLine();
-        calculateDrawToCenterDistance();
-        transformDraw();
-    }
-
-
-    public CPDFTextAttribute.FontNameHelper.FontType getFontType() {
-        return fontType;
-    }
-
-    public String getOutFamilyName() {
-        return outFamilyName;
-    }
-
-    public String getFontName(){
-        if (!TextUtils.isEmpty(outFamilyName)){
-            return CPDFTextAttribute.FontNameHelper.obtainOutFontName(
-                    outFamilyName, isBold(), isItalic()
-            );
-        }else {
-            return CPDFTextAttribute.FontNameHelper.obtainFontName(
-                    fontType, isBold(), isItalic()
-            );
-        }
+    public String getFontPsName() {
+        return fontPsName;
     }
 
     /**
@@ -737,7 +647,7 @@ public class CWatermarkView extends View {
         return isEditable;
     }
 
-    public Bitmap getBitmap(){
+    public Bitmap getBitmap() {
         boolean isEdit = isEditable;
         setEditable(false);
         buildDrawingCache();
@@ -771,7 +681,7 @@ public class CWatermarkView extends View {
         return editType;
     }
 
-    public void setWatermarkType(EditType editType){
+    public void setWatermarkType(EditType editType) {
         this.editType = editType;
     }
 
@@ -783,7 +693,7 @@ public class CWatermarkView extends View {
         this.enableDrag = enableDrag;
     }
 
-    public int getControlDrawableWidth(){
+    public int getControlDrawableWidth() {
         return mControlDrawableWidth;
     }
 
@@ -791,8 +701,8 @@ public class CWatermarkView extends View {
         return framePadding;
     }
 
-    public int getWatermarkPadding(){
-        return (int) ((mControlDrawableWidth / 2F) + framePadding + (frameWidth  /2));
+    public int getWatermarkPadding() {
+        return (int) ((mControlDrawableWidth / 2F) + framePadding + (frameWidth / 2));
     }
 
     /**

+ 0 - 1
ComPDFKit_Tools/src/main/res/layout/tools_cpdf_font_view.xml

@@ -24,7 +24,6 @@
         android:layout_marginStart="16dp"
         android:spinnerMode="dropdown"
         android:popupElevation="4dp"
-        android:padding="0dp"
         android:dropDownSelector="@color/tools_color_primary"
         android:popupBackground="@drawable/tools_common_window_bg"
         app:layout_constraintBottom_toBottomOf="@id/tv_font_type"

+ 2 - 0
ComPDFKit_Tools/src/main/res/layout/tools_spinner_list_item.xml

@@ -18,6 +18,8 @@
         app:autoSizeTextType="uniform"
         app:autoSizeMaxTextSize="14sp"
         app:autoSizeMinTextSize="9sp"
+        android:maxLines="2"
+        android:ellipsize="end"
         />
 
 </LinearLayout>

+ 2 - 0
PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/HomeFunFragment.java

@@ -19,10 +19,12 @@ import androidx.annotation.Nullable;
 import androidx.fragment.app.Fragment;
 import androidx.recyclerview.widget.LinearLayoutManager;
 
+import com.compdfkit.core.annotation.CPDFTextAttribute;
 import com.compdfkit.pdfviewer.R;
 import com.compdfkit.pdfviewer.databinding.FragmentHomeBinding;
 import com.compdfkit.pdfviewer.home.datas.FunDatas;
 import com.compdfkit.tools.common.pdf.CPDFDocumentActivity;
+import com.compdfkit.tools.common.utils.CLog;
 import com.compdfkit.tools.common.views.pdfview.CPreviewMode;
 import com.compdfkit.ui.utils.CPDFCommomUtils;