Просмотр исходного кода

PDFTool(Android) - v2.0.3 release

liuxiaolong 8 месяцев назад
Родитель
Сommit
b9a4adc662

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


+ 47 - 6
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/contextmenu/impl/CScreenShotContextMenuView.java

@@ -10,16 +10,27 @@
 package com.compdfkit.tools.common.contextmenu.impl;
 
 
+import android.content.Context;
+import android.graphics.Bitmap;
 import android.graphics.RectF;
 import android.view.LayoutInflater;
 import android.view.View;
 
 
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+
+import com.bumptech.glide.Glide;
+import com.compdfkit.core.edit.CPDFEditManager;
+import com.compdfkit.core.edit.CPDFEditPage;
+import com.compdfkit.core.page.CPDFPage;
 import com.compdfkit.tools.R;
 import com.compdfkit.tools.common.contextmenu.CPDFContextMenuHelper;
 import com.compdfkit.tools.common.contextmenu.interfaces.ContextMenuScreenShotProvider;
 import com.compdfkit.tools.common.contextmenu.provider.ContextMenuView;
+import com.compdfkit.tools.common.pdf.CPDFDocumentFragment;
 import com.compdfkit.tools.common.utils.CFileUtils;
+import com.compdfkit.tools.common.utils.CLog;
 import com.compdfkit.tools.common.utils.date.CDateUtil;
 import com.compdfkit.tools.common.utils.image.CImageUtil;
 import com.compdfkit.ui.reader.CPDFPageView;
@@ -34,19 +45,49 @@ public class CScreenShotContextMenuView implements ContextMenuScreenShotProvider
     public View getScreenShotContentView(CPDFContextMenuHelper helper, CPDFPageView pageView, LayoutInflater inflater, RectF rectF) {
         ContextMenuView menuView = new ContextMenuView(pageView.getContext());
         menuView.addItem(R.string.tools_exit, v -> {
-            pageView.clearScreenShotRect();
-            helper.getReaderView().setTouchMode(CPDFReaderView.TouchMode.BROWSE);
-            helper.dismissContextMenu();
+            exitScreenShot(helper, pageView);
         });
         menuView.addItem(R.string.tools_share, v -> {
+            Bitmap bitmap = pageView.getScreenshotBitmap();
+            if (bitmap == null){
+                exitScreenShot(helper, pageView);
+                return;
+            }
             String fileName = "screenshot_"+ CDateUtil.getDataTime(CDateUtil.NORMAL_DATE_FORMAT)+".png";
             String screenShotFilePath = CImageUtil.saveBitmap(pageView.getContext(), fileName, pageView.getScreenshotBitmap());
             CFileUtils.shareFile(menuView.getContext(), pageView.getContext().getString(R.string.tools_share), "image/*", new File(screenShotFilePath));
-            helper.getReaderView().setTouchMode(CPDFReaderView.TouchMode.BROWSE);
-            pageView.clearScreenShotRect();
-            helper.dismissContextMenu();
+            exitScreenShot(helper, pageView);
         });
         return menuView;
     }
 
+    private void exitScreenShot(CPDFContextMenuHelper helper, CPDFPageView pageView){
+        pageView.clearScreenShotRect();
+        CPDFReaderView readerView = helper.getReaderView();
+        CPDFReaderView.ViewMode viewMode = readerView.getViewMode();
+        if(viewMode == CPDFReaderView.ViewMode.PDFEDIT){
+            readerView.setTouchMode(CPDFReaderView.TouchMode.EDIT);
+            CPDFEditManager editManager = readerView.getEditManager();
+            if (editManager != null && !editManager.isEditMode()) {
+                editManager.enable();
+                editManager.beginEdit(CPDFEditPage.LoadTextImage);
+            }
+        }else {
+            readerView.setTouchMode(CPDFReaderView.TouchMode.BROWSE);
+        }
+        helper.dismissContextMenu();
+        Context context = readerView.getContext();
+
+        if (context instanceof FragmentActivity){
+            FragmentActivity fragmentActivity = (FragmentActivity) context;
+            Fragment fragment = fragmentActivity.getSupportFragmentManager()
+                    .findFragmentByTag("documentFragment");
+            if (fragment != null && fragment instanceof  CPDFDocumentFragment){
+                CPDFDocumentFragment documentFragment = (CPDFDocumentFragment) fragment;
+                // Exit full screen mode
+                documentFragment.screenManager.fillScreenChange();
+            }
+        }
+    }
+
 }

+ 24 - 12
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/pdf/CPDFDocumentFragment.java

@@ -88,6 +88,7 @@ import com.compdfkit.ui.contextmenu.IContextMenuShowListener;
 import com.compdfkit.ui.proxy.form.CPDFComboboxWidgetImpl;
 import com.compdfkit.ui.proxy.form.CPDFListboxWidgetImpl;
 import com.compdfkit.ui.proxy.form.CPDFPushbuttonWidgetImpl;
+import com.compdfkit.ui.reader.CPDFPageView;
 import com.compdfkit.ui.reader.CPDFReaderView;
 
 import java.io.File;
@@ -105,7 +106,7 @@ public class CPDFDocumentFragment extends CBasicPDFFragment {
 
     public static final String EXTRA_CONFIGURATION = "extra_configuration";
 
-    protected CSampleScreenManager screenManager = new CSampleScreenManager();
+    public CSampleScreenManager screenManager = new CSampleScreenManager();
 
     protected CPDFConfiguration cpdfConfiguration;
 
@@ -307,8 +308,9 @@ public class CPDFDocumentFragment extends CBasicPDFFragment {
         if (pdfView.getCPdfReaderView() == null) {
             return;
         }
-        pdfView.getCPdfReaderView().removeAllAnnotFocus();
-        IContextMenuShowListener contextMenuShowListener = pdfView.getCPdfReaderView().getContextMenuShowListener();
+        CPDFReaderView readerView = pdfView.getCPdfReaderView();
+        readerView.removeAllAnnotFocus();
+        IContextMenuShowListener contextMenuShowListener = readerView.getContextMenuShowListener();
         if (contextMenuShowListener != null) {
             contextMenuShowListener.dismissContextMenu();
         }
@@ -318,17 +320,20 @@ public class CPDFDocumentFragment extends CBasicPDFFragment {
         signatureToolBar.reset();
         resetContextMenu(pdfView, mode);
         SignatureWidgetImpl.previewMode = mode;
-        CPDFEditManager editManager = pdfView.getCPdfReaderView().getEditManager();
+        CPDFEditManager editManager = readerView.getEditManager();
         if (mode == CPreviewMode.Edit) {
-            pdfView.getCPdfReaderView().setViewMode(CPDFReaderView.ViewMode.PDFEDIT);
+            readerView.setViewMode(CPDFReaderView.ViewMode.PDFEDIT);
             if (editManager != null && !editManager.isEditMode()) {
                 editManager.enable();
                 editManager.beginEdit(CPDFEditPage.LoadTextImage);
             }
         } else {
-            if (editManager != null && editManager.isEditMode()) {
-                editManager.endEdit();
+
+            if (readerView.getTouchMode() == CPDFReaderView.TouchMode.SCREENSHOT
+            && readerView.getViewMode() == CPDFReaderView.ViewMode.PDFEDIT){
+                readerView.setTouchMode(CPDFReaderView.TouchMode.EDIT);
             }
+            pdfView.exitEditMode();
             switch (mode) {
                 case Viewer:
                 case Signature:
@@ -472,6 +477,7 @@ public class CPDFDocumentFragment extends CBasicPDFFragment {
             if (curEditMode > CPDFEditPage.LoadNone) {
                 CPDFEditManager editManager = pdfView.getCPdfReaderView().getEditManager();
                 if (!editManager.isEditMode()) {
+                    editManager.enable();
                     editManager.beginEdit(curEditMode);
                 }
             }
@@ -644,12 +650,18 @@ public class CPDFDocumentFragment extends CBasicPDFFragment {
                     case Snip:
                         menuWindow.addItem(R.drawable.tools_ic_snap, R.string.tools_snap, v -> {
                             CPDFReaderView readerView = pdfView.getCPdfReaderView();
+                            readerView.removeAllAnnotFocus();
+                            if (readerView.getContextMenuShowListener() != null) {
+                                readerView.getContextMenuShowListener().dismissContextMenu();
+                            }
+                            for (int i = 0; i < readerView.getChildCount(); i++) {
+                                CPDFPageView view = (CPDFPageView) readerView.getChildAt(i);
+                                view.clearScreenShotRect();
+                            }
+                            // enter fill screen mode
+                            screenManager.fillScreenChange();
+                            // enter screenshot mode , Please select the screenshot area in the reader view
                             readerView.setTouchMode(CPDFReaderView.TouchMode.SCREENSHOT);
-//                            readerView.setScreenShotLisener((cpdfPageView, bitmap) -> {
-//                                Log.e("ComPDFKit", "截屏:bitmap:(" + bitmap.getWidth() + " * " + bitmap.getHeight() + ")");
-//                                readerView.setTouchMode(CPDFReaderView.TouchMode.BROWSE);
-////                                CImageUtil.saveBitmap(getContext(), bitmap);
-//                            });
                         });
                         break;
                     default: