瀏覽代碼

PDFTool(Android) - 1.更新SDK 2.修复内容编辑未保存bug

liuxiaolong 1 年之前
父節點
當前提交
41a8e8cca6
共有 23 個文件被更改,包括 90 次插入37 次删除
  1. 1 1
      Annotations/src/main/AndroidManifest.xml
  2. 二進制
      ComPDFKit_Repo/compdfkit/ComPDFKit.aar
  3. 1 0
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfview/CPDFViewCtrl.java
  4. 11 0
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/forms/pdfproperties/pdfsign/SignatureWidgetImpl.java
  5. 27 6
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/encryption/CDocumentEncryptionDialog.java
  6. 1 1
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/signature/pdfproperties/pdfsign/CDigitalSignatureWidgetImpl.java
  7. 15 5
      ComPDFKit_Tools/src/main/res/layout/tools_display_settings_dialog_fragment.xml
  8. 3 2
      ComPDFKit_Tools/src/main/res/values-zh-rCN/tools_strings.xml
  9. 3 2
      ComPDFKit_Tools/src/main/res/values/tools_strings.xml
  10. 1 1
      ContentEditor/src/main/AndroidManifest.xml
  11. 1 1
      DigitalSignature/src/main/AndroidManifest.xml
  12. 1 1
      DocsEditor/src/main/AndroidManifest.xml
  13. 1 1
      Forms/src/main/AndroidManifest.xml
  14. 1 1
      PDFViewer/src/main/AndroidManifest.xml
  15. 二進制
      PDFViewer/src/main/assets/owner_4321.pdf
  16. 二進制
      PDFViewer/src/main/assets/user_1234_owner_4321.pdf
  17. 二進制
      PDFViewer/src/main/assets/user_pwd_1234.pdf
  18. 16 10
      PDFViewer/src/main/java/com/compdfkit/pdfviewer/MainActivity.java
  19. 3 1
      PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/datas/FunDatas.java
  20. 1 0
      PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/samples/DocumentEncryptionSamplesImpl.java
  21. 1 2
      Samples/src/main/AndroidManifest.xml
  22. 1 1
      Samples_kotlin/src/main/AndroidManifest.xml
  23. 1 1
      Viewer/src/main/AndroidManifest.xml

文件差異過大導致無法顯示
+ 1 - 1
Annotations/src/main/AndroidManifest.xml


二進制
ComPDFKit_Repo/compdfkit/ComPDFKit.aar


+ 1 - 0
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfview/CPDFViewCtrl.java

@@ -368,6 +368,7 @@ public class CPDFViewCtrl extends ConstraintLayout implements IReaderViewCallbac
                 }
                 return;
             }
+            exitEditMode();
             if (document.hasChanges()) {
                 try {
                     boolean success = document.save();

+ 11 - 0
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/forms/pdfproperties/pdfsign/SignatureWidgetImpl.java

@@ -31,6 +31,7 @@ import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.CStyleType;
 import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.CStyleUIParams;
 import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.manager.CStyleManager;
 import com.compdfkit.tools.common.views.pdfview.CPDFViewCtrl;
+import com.compdfkit.tools.common.views.pdfview.CPreviewMode;
 import com.compdfkit.tools.signature.CertificateDigitalDatas;
 import com.compdfkit.tools.signature.importcert.create.CPDFSelectDigitalSignatureDialog;
 import com.compdfkit.tools.signature.importcert.create.CSelectSignTypeDialog;
@@ -58,6 +59,12 @@ public class SignatureWidgetImpl extends CPDFSignatureWidgetImpl {
     @Override
     public void onSignatureWidgetFocused(CPDFSignatureWidget cpdfSignatureWidget) {
         if (!cpdfSignatureWidget.isSigned()) {
+
+            if (getCurrentMode() != CPreviewMode.Signature) {
+                fillElectronicSignature();
+                return;
+            }
+
             // unsigned
             // select signature type
             CSelectSignTypeDialog signTypeDialog = CSelectSignTypeDialog.newInstance();
@@ -203,4 +210,8 @@ public class SignatureWidgetImpl extends CPDFSignatureWidgetImpl {
         }
     }
 
+    protected CPreviewMode getCurrentMode(){
+        return CPreviewMode.Viewer;
+    }
+
 }

+ 27 - 6
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/encryption/CDocumentEncryptionDialog.java

@@ -35,6 +35,7 @@ import com.compdfkit.core.document.CPDFDocumentPermissionInfo;
 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.CToastUtil;
 import com.compdfkit.tools.common.utils.activitycontracts.CMultiplePermissionResultLauncher;
@@ -197,7 +198,6 @@ public class CDocumentEncryptionDialog extends CBasicBottomSheetDialogFragment i
             }
         });
         initPermissionInfo();
-
     }
 
     @Override
@@ -271,12 +271,33 @@ public class CDocumentEncryptionDialog extends CBasicBottomSheetDialogFragment i
             dismiss();
             return;
         }
-        if (document.getPermissions() == CPDFDocument.PDFDocumentPermissions.PDFDocumentPermissionsOwner) {
-            swOwnerPassword.setChecked(true);
-            etOwnerPassword.setEnabled(true);
-            swUserPassword.setChecked(true);
-            etUserPassword.setEnabled(true);
+        if (document.isEncrypted()){
+            String password = document.getPassword();
+            boolean isOwnerPassword = document.checkOwnerPassword(password);
+            if (isOwnerPassword){
+                etOwnerPassword.setText(password);
+                swOwnerPassword.setChecked(true);
+                etOwnerPassword.setEnabled(true);
+                swUserPassword.setChecked(true);
+                etUserPassword.setEnabled(true);
+            }else {
+                etUserPassword.setText(password);
+                swUserPassword.setChecked(true);
+                etUserPassword.setEnabled(true);
+            }
+        }
+        CPDFDocument tempDocument = new CPDFDocument(getContext());
+        CPDFDocument.PDFDocumentError error;
+        if (!TextUtils.isEmpty(document.getAbsolutePath())){
+            error = tempDocument.open(document.getAbsolutePath());
+        }else {
+            error = tempDocument.open(document.getUri());
+        }
+        if (error == CPDFDocument.PDFDocumentError.PDFDocumentErrorSuccess  && tempDocument.isEncrypted()){
+            swUserPassword.setChecked(false);
+            etUserPassword.setEnabled(false);
         }
+        tempDocument.close();
     }
 
     private void setTextViewEnable(TextView textView, boolean enable) {

+ 1 - 1
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/signature/pdfproperties/pdfsign/CDigitalSignatureWidgetImpl.java

@@ -38,7 +38,7 @@ public class CDigitalSignatureWidgetImpl extends CPDFSignatureWidgetImpl {
     public void onSignatureWidgetFocused(CPDFSignatureWidget cpdfSignatureWidget) {
 
         CPDFSignature signature = readerView.getPDFDocument().getPdfSignature(cpdfSignatureWidget);
-        if (signature.isDigitalSigned()) {
+        if (signature != null && signature.isDigitalSigned()) {
             CertDigitalSignInfoDialog signInfoDialog = CertDigitalSignInfoDialog.newInstance();
             signInfoDialog.setDocument(readerView.getPDFDocument());
             signInfoDialog.setPDFSignature(signature);

+ 15 - 5
ComPDFKit_Tools/src/main/res/layout/tools_display_settings_dialog_fragment.xml

@@ -26,14 +26,14 @@
 
 
             <androidx.appcompat.widget.AppCompatTextView
-                android:id="@+id/tv_reader_mode"
+                android:id="@+id/tv_scroll"
                 android:layout_width="match_parent"
                 android:layout_height="28dp"
                 android:background="@color/tools_reader_setting_head_bg_color"
                 android:gravity="center_vertical"
                 android:paddingStart="16dp"
                 android:paddingEnd="16dp"
-                android:text="@string/tools_display_mode"
+                android:text="@string/tools_scroll"
                 android:textColor="@color/tools_text_color_primary"
                 android:textSize="12sp" />
 
@@ -60,10 +60,18 @@
 
             </RadioGroup>
 
-            <View
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/tv_reader_mode"
                 android:layout_width="match_parent"
-                android:layout_height="20dp"
-                android:background="@color/tools_reader_setting_head_bg_color" />
+                android:layout_height="28dp"
+                android:background="@color/tools_reader_setting_head_bg_color"
+                android:gravity="center_vertical"
+                android:paddingStart="16dp"
+                android:paddingEnd="16dp"
+                android:text="@string/tools_display_mode"
+                android:textColor="@color/tools_text_color_primary"
+                android:textSize="12sp" />
+
 
             <RadioGroup
                 android:id="@+id/radio_group_reader_mode"
@@ -113,6 +121,7 @@
                     android:drawableStart="@drawable/tools_ic_continuous"
                     android:drawablePadding="16dp"
                     android:text="@string/tools_continuous_scroll"
+                    android:gravity="center_vertical"
                     android:textColor="@color/tools_text_color_primary"
                     app:layout_constraintBottom_toBottomOf="parent"
                     app:layout_constraintStart_toStartOf="parent"
@@ -143,6 +152,7 @@
                     android:drawableStart="@drawable/tools_ic_crop"
                     android:drawablePadding="16dp"
                     android:text="@string/tools_crop"
+                    android:gravity="center_vertical"
                     android:textColor="@color/tools_text_color_primary"
                     app:layout_constraintBottom_toBottomOf="parent"
                     app:layout_constraintStart_toStartOf="parent"

+ 3 - 2
ComPDFKit_Tools/src/main/res/values-zh-rCN/tools_strings.xml

@@ -2,14 +2,15 @@
     <string name="tools_document_info">文档信息</string>
     <string name="tools_view_setting">预览设置</string>
     <string name="tools_share">分享</string>
-    <string name="tools_open_document">打开文</string>
+    <string name="tools_open_document">打开文</string>
 
     <string name="tools_display_mode">显示模式</string>
+    <string name="tools_scroll">翻页</string>
     <string name="tools_vertical_scrolling">垂直</string>
     <string name="tools_horizontal_scrolling">水平</string>
     <string name="tools_single_page">单页</string>
     <string name="tools_two_page">双页</string>
-    <string name="tools_book_mode">书本模式</string>
+    <string name="tools_book_mode">封面模式</string>
     <string name="tools_continuous_scroll">连续滚动</string>
     <string name="tools_crop">裁剪模式</string>
     <string name="tools_themes">主题</string>

+ 3 - 2
ComPDFKit_Tools/src/main/res/values/tools_strings.xml

@@ -5,12 +5,13 @@
     <string name="tools_open_document">Open…</string>
 
     <string name="tools_display_mode">Display Mode</string>
+    <string name="tools_scroll">Scroll</string>
     <string name="tools_vertical_scrolling">Vertical Scrolling</string>
     <string name="tools_horizontal_scrolling">Horizontal Scrolling</string>
     <string name="tools_single_page">Single Page</string>
     <string name="tools_two_page">Two Page</string>
-    <string name="tools_book_mode">Book Mode</string>
-    <string name="tools_continuous_scroll">Continuous Scroll</string>
+    <string name="tools_book_mode">Cover Mode</string>
+    <string name="tools_continuous_scroll">Continuous Scrolling</string>
     <string name="tools_crop">Crop</string>
     <string name="tools_themes">Themes</string>
     <string name="tools_light_mode">Light</string>

文件差異過大導致無法顯示
+ 1 - 1
ContentEditor/src/main/AndroidManifest.xml


文件差異過大導致無法顯示
+ 1 - 1
DigitalSignature/src/main/AndroidManifest.xml


文件差異過大導致無法顯示
+ 1 - 1
DocsEditor/src/main/AndroidManifest.xml


文件差異過大導致無法顯示
+ 1 - 1
Forms/src/main/AndroidManifest.xml


文件差異過大導致無法顯示
+ 1 - 1
PDFViewer/src/main/AndroidManifest.xml


二進制
PDFViewer/src/main/assets/owner_4321.pdf


二進制
PDFViewer/src/main/assets/user_1234_owner_4321.pdf


二進制
PDFViewer/src/main/assets/user_pwd_1234.pdf


+ 16 - 10
PDFViewer/src/main/java/com/compdfkit/pdfviewer/MainActivity.java

@@ -33,6 +33,7 @@ import com.compdfkit.pdfviewer.databinding.PdfSampleActivityBinding;
 import com.compdfkit.tools.common.basic.activity.CBasicPDFActivity;
 import com.compdfkit.tools.common.contextmenu.CPDFContextMenuHelper;
 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.CToastUtil;
 import com.compdfkit.tools.common.utils.activitycontracts.CSelectPDFDocumentResultContract;
@@ -61,9 +62,11 @@ import com.compdfkit.tools.signature.bean.CPDFDocumentSignInfo;
 import com.compdfkit.tools.signature.info.signlist.CPDFCertDigitalSignListDialog;
 import com.compdfkit.tools.viewer.pdfsearch.CSearchResultDialogFragment;
 import com.compdfkit.ui.contextmenu.IContextMenuShowListener;
+import com.compdfkit.ui.proxy.CPDFBaseAnnotImpl;
 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.proxy.form.CPDFSignatureWidgetImpl;
 import com.compdfkit.ui.reader.CPDFPageView;
 import com.compdfkit.ui.reader.CPDFReaderView;
 
@@ -119,9 +122,9 @@ public class MainActivity extends CBasicPDFActivity {
         binding = PdfSampleActivityBinding.inflate(getLayoutInflater());
         setContentView(binding.getRoot());
         screenManager.bind(binding);
-        parseConfiguration();
         //Extract PDF files from the Android assets folder
         initPDFView();
+        parseConfiguration();
         initToolBarView();
         initSearchBar();
         initAnnotToolbar();
@@ -212,14 +215,6 @@ public class MainActivity extends CBasicPDFActivity {
                 requestStoragePermissions();
             }
         } else {
-            if (mode == CPreviewMode.Signature){
-                binding.pdfView.getCPdfReaderView().getAnnotImplRegistry()
-                        .registImpl(CPDFSignatureWidget.class, SignatureWidgetImpl.class);
-            }else {
-                binding.pdfView.getCPdfReaderView().getAnnotImplRegistry()
-                        .registImpl(CPDFSignatureWidget.class, CustomSignatureWidgetImpl.class);
-            }
-
             if (editManager != null && editManager.isEditMode()) {
                 editManager.endEdit();
             }
@@ -685,7 +680,7 @@ public class MainActivity extends CBasicPDFActivity {
         super.registerFormHelper(pdfView);
         pdfView.getCPdfReaderView().getAnnotImplRegistry()
                 // Register the CustomSignatureWidgetImpl.class to implement a custom dropdown options popup.
-                .registImpl(CPDFSignatureWidget.class, SignatureWidgetImpl.class);
+                .registImpl(CPDFSignatureWidget.class, CSignatureWidgetImpl.class);
     }
 
     @Override
@@ -696,4 +691,15 @@ public class MainActivity extends CBasicPDFActivity {
             super.onBackPressed();
         }
     }
+
+    public static class CSignatureWidgetImpl extends SignatureWidgetImpl{
+        @Override
+        protected CPreviewMode getCurrentMode() {
+            if (readerView.getContext() instanceof MainActivity){
+               return  ((MainActivity)readerView.getContext()).binding.pdfToolBar.getMode();
+            }else {
+                return CPreviewMode.Viewer;
+            }
+        }
+    }
 }

+ 3 - 1
PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/datas/FunDatas.java

@@ -68,7 +68,9 @@ public class FunDatas {
                 list.add(HomeFunBean.assetsFile(context, "PDF32000_2008.pdf", context.getString(R.string.tools_compdfkit_sample_file_content_editor)));
                 break;
             case Security:
-                list.add(HomeFunBean.assetsFile(context, "PDF32000_2008.pdf", context.getString(R.string.tools_compdfkit_sample_file_security)));
+                list.add(HomeFunBean.assetsFile(context, "user_pwd_1234.pdf", "user_pwd_1234.pdf"));
+                list.add(HomeFunBean.assetsFile(context, "user_1234_owner_4321.pdf", "user_1234_owner_4321.pdf"));
+                list.add(HomeFunBean.assetsFile(context, "owner_4321.pdf", "owner_4321.pdf"));
                 break;
             case Watermark:
                 list.add(HomeFunBean.assetsFile(context, "PDF32000_2008.pdf", context.getString(R.string.tools_compdfkit_sample_file_watermark)));

+ 1 - 0
PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/samples/DocumentEncryptionSamplesImpl.java

@@ -17,6 +17,7 @@ import androidx.fragment.app.Fragment;
 import com.compdfkit.core.document.CPDFDocument;
 import com.compdfkit.pdfviewer.R;
 import com.compdfkit.pdfviewer.home.HomeFunBean;
+import com.compdfkit.tools.common.utils.CLog;
 import com.compdfkit.tools.common.utils.CToastUtil;
 import com.compdfkit.tools.common.utils.dialog.CAlertDialog;
 import com.compdfkit.tools.common.views.CVerifyPasswordDialogFragment;

文件差異過大導致無法顯示
+ 1 - 2
Samples/src/main/AndroidManifest.xml


文件差異過大導致無法顯示
+ 1 - 1
Samples_kotlin/src/main/AndroidManifest.xml


文件差異過大導致無法顯示
+ 1 - 1
Viewer/src/main/AndroidManifest.xml