Ver Fonte

PDFTool(Android) - 修复独立模块崩溃问题

liuxiaolong há 8 meses atrás
pai
commit
ab11b37b7e
42 ficheiros alterados com 285 adições e 117 exclusões
  1. BIN
      Annotations/src/main/assets/ComPDFKit_Annotations_Sample_File.pdf
  2. BIN
      Annotations/src/main/assets/PDF32000_2008.pdf
  3. 15 1
      Annotations/src/main/java/com/compdfkit/annotations/PDFAnnotationSampleActivity.java
  4. 1 6
      Annotations/src/main/res/values-night/annotation_themes.xml
  5. 1 7
      Annotations/src/main/res/values/annotation_themes.xml
  6. 3 1
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/contextmenu/CPDFContextMenuHelper.java
  7. 10 2
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfview/CPDFViewCtrl.java
  8. BIN
      ContentEditor/src/main/assets/ComPDFKit_Sample_File_Android.pdf
  9. BIN
      ContentEditor/src/main/assets/PDF32000_2008.pdf
  10. 14 1
      ContentEditor/src/main/java/com/compdfkit/contenteditor/PDFEditSampleActivity.java
  11. 1 4
      ContentEditor/src/main/res/values-night/edit_themes.xml
  12. 1 5
      ContentEditor/src/main/res/values/edit_themes.xml
  13. 12 0
      DigitalSignature/src/main/java/com/compdfkit/digitalsignature/PDFSignaturesSampleActivity.java
  14. 1 5
      DigitalSignature/src/main/res/values-night/themes.xml
  15. 1 6
      DigitalSignature/src/main/res/values/themes.xml
  16. BIN
      DocsEditor/src/main/assets/ComPDFKit_Annotations_Sample_File.pdf
  17. BIN
      DocsEditor/src/main/assets/PDF32000_2008.pdf
  18. 1 1
      DocsEditor/src/main/java/com/compdfkit/docseditor/MainActivity.java
  19. 1 12
      DocsEditor/src/main/res/values-night/themes.xml
  20. 3 17
      DocsEditor/src/main/res/values/themes.xml
  21. BIN
      Forms/src/main/assets/ComPDFKit_Forms_Sample_File.pdf
  22. BIN
      Forms/src/main/assets/Form_Widgets_Test.pdf
  23. 13 1
      Forms/src/main/java/com/compdfkit/forms/PDFFormSampleActivity.java
  24. 1 4
      Forms/src/main/res/values-night/themes.xml
  25. 1 6
      Forms/src/main/res/values/themes.xml
  26. 31 12
      Samples/src/main/java/com/compdfkit/samples/samples/AnnotationReplyTest.java
  27. 0 3
      Samples/src/main/res/layout/activity_sample_list.xml
  28. 5 2
      Samples/src/main/res/layout/fragment_sample_detail.xml
  29. 12 1
      Samples/src/main/res/values-night/themes.xml
  30. 12 2
      Samples/src/main/res/values/themes.xml
  31. 2 0
      Samples_kotlin/src/main/java/com/compdfkit/samples/SampleApplication.kt
  32. 98 0
      Samples_kotlin/src/main/java/com/compdfkit/samples/samples/AnnotationReplyTest.kt
  33. 5 2
      Samples_kotlin/src/main/res/layout/fragment_sample_detail.xml
  34. 10 1
      Samples_kotlin/src/main/res/values-night/themes.xml
  35. 3 0
      Samples_kotlin/src/main/res/values/strings.xml
  36. 11 2
      Samples_kotlin/src/main/res/values/themes.xml
  37. BIN
      Viewer/src/main/assets/ComPDFKit_Sample_File_Android.pdf
  38. BIN
      Viewer/src/main/assets/PDF32000_2008.pdf
  39. 13 1
      Viewer/src/main/java/com/compdfkit/viewer/PDFViewerSampleActivity.java
  40. 1 5
      Viewer/src/main/res/values-night/themes.xml
  41. 1 6
      Viewer/src/main/res/values/themes.xml
  42. 1 1
      compdfkit-tools-mavencentral.gradle

BIN
Annotations/src/main/assets/ComPDFKit_Annotations_Sample_File.pdf


BIN
Annotations/src/main/assets/PDF32000_2008.pdf


+ 15 - 1
Annotations/src/main/java/com/compdfkit/annotations/PDFAnnotationSampleActivity.java

@@ -10,7 +10,10 @@ import androidx.activity.result.ActivityResultLauncher;
 import com.compdfkit.annotations.databinding.AnnotationPdfSampleActivityBinding;
 import com.compdfkit.core.annotation.CPDFAnnotation;
 import com.compdfkit.tools.common.basic.activity.CBasicPDFActivity;
+import com.compdfkit.tools.common.pdf.CPDFApplyConfigUtil;
+import com.compdfkit.tools.common.pdf.CPDFConfigurationUtils;
 import com.compdfkit.tools.common.pdf.config.AnnotationsConfig;
+import com.compdfkit.tools.common.pdf.config.CPDFConfiguration;
 import com.compdfkit.tools.common.utils.CFileUtils;
 import com.compdfkit.tools.common.utils.CPermissionUtil;
 import com.compdfkit.tools.common.utils.activitycontracts.CSelectPDFDocumentResultContract;
@@ -34,12 +37,14 @@ public class PDFAnnotationSampleActivity extends CBasicPDFActivity {
     /**
      * assets folder pdf file
      */
-    public static final String QUICK_START_GUIDE = "PDF32000_2008.pdf";
+    public static final String QUICK_START_GUIDE = "ComPDFKit_Annotations_Sample_File.pdf";
 
     private AnnotationPdfSampleActivityBinding binding;
 
     CAnnotSampleScreenManager screenManager = new CAnnotSampleScreenManager();
 
+    private CPDFConfiguration cpdfConfiguration;
+
     private ActivityResultLauncher<Void> selectDocumentLauncher = registerForActivityResult(new CSelectPDFDocumentResultContract(), uri -> {
         if (uri != null) {
             CFileUtils.takeUriPermission(this, uri);
@@ -63,6 +68,8 @@ public class PDFAnnotationSampleActivity extends CBasicPDFActivity {
     }
 
     private void initPDFView() {
+        parseConfiguration();
+        binding.pdfView.setCPDFConfiguration(cpdfConfiguration);
         binding.pdfView.setViewMode(CPDFReaderView.ViewMode.ANNOT);
         CExtractAssetFileTask.extract(this, QUICK_START_GUIDE, QUICK_START_GUIDE, (filePath) ->
                 binding.pdfView.openPDF(filePath));
@@ -253,6 +260,13 @@ public class PDFAnnotationSampleActivity extends CBasicPDFActivity {
         alertDialog.show(getSupportFragmentManager(), "alertDialog");
     }
 
+
+    private void parseConfiguration() {
+        if (cpdfConfiguration == null) {
+            cpdfConfiguration = CPDFConfigurationUtils.normalConfig(this, "tools_default_configuration.json");
+        }
+    }
+
     @Override
     public void onBackPressed() {
         if (binding.pdfView != null) {

+ 1 - 6
Annotations/src/main/res/values-night/annotation_themes.xml

@@ -1,10 +1,5 @@
 <resources>
     <!-- Base application theme. -->
-    <style name="Annotation_Basic_Theme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
-        <item name="android:statusBarColor">@color/tools_color_primary</item>
-        <item name="android:colorAccent">@color/tools_color_accent</item>
-        <item name="android:colorPrimary">@color/tools_color_accent</item>
-        <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
-
+    <style name="Annotation_Basic_Theme" parent="ComPDFKit.Theme.Dark">
     </style>
 </resources>

+ 1 - 7
Annotations/src/main/res/values/annotation_themes.xml

@@ -1,12 +1,6 @@
 <resources xmlns:tools="http://schemas.android.com/tools">
     <!-- Base application theme. -->
-    <style name="Annotation_Basic_Theme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
-        <item name="android:statusBarColor">@color/tools_color_primary</item>
-        <item name="android:windowLightStatusBar" tools:targetApi="m">true</item>
-        <item name="android:colorAccent">@color/tools_color_accent</item>
-        <item name="android:colorPrimary">@color/tools_color_accent</item>
-        <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
-
+    <style name="Annotation_Basic_Theme" parent="ComPDFKit.Theme.Light">
     </style>
 
 </resources>

+ 3 - 1
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/contextmenu/CPDFContextMenuHelper.java

@@ -89,7 +89,9 @@ public class CPDFContextMenuHelper extends CPDFContextMenuShowHelper {
 
     public CPDFContextMenuHelper(CPDFViewCtrl pdfView, ContextMenuProviderParams params) {
         super(pdfView.getCPdfReaderView());
-        annotationAuthor = pdfView.getCPDFConfiguration().globalConfig.annotationAuthor;
+        if (pdfView.getCPDFConfiguration() != null && pdfView.getCPDFConfiguration().globalConfig != null){
+            annotationAuthor = pdfView.getCPDFConfiguration().globalConfig.annotationAuthor;
+        }
         this.helperParams = params;
     }
 

+ 10 - 2
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfview/CPDFViewCtrl.java

@@ -391,7 +391,11 @@ public class CPDFViewCtrl extends ConstraintLayout implements IReaderViewCallbac
             exitEditMode();
             if (document.hasChanges()) {
                 try {
-                    boolean saveFileExtraFontSubset = cpdfConfiguration.globalConfig.fileSaveExtraFontSubset;
+
+                    boolean saveFileExtraFontSubset = false;
+                    if (cpdfConfiguration != null && cpdfConfiguration.globalConfig != null){
+                        saveFileExtraFontSubset = cpdfConfiguration.globalConfig.fileSaveExtraFontSubset;
+                    }
                     CLog.e("ComPDFKit", "save pdf extra font subset:" + saveFileExtraFontSubset);
                     boolean success = document.save(CPDFDocument.PDFDocumentSaveType.PDFDocumentSaveIncremental, saveFileExtraFontSubset);
                     if (!success) {
@@ -620,7 +624,11 @@ public class CPDFViewCtrl extends ConstraintLayout implements IReaderViewCallbac
     }
 
     public boolean isSaveFileExtraFontSubset() {
-        return cpdfConfiguration.globalConfig.fileSaveExtraFontSubset;
+        if (cpdfConfiguration != null && cpdfConfiguration.globalConfig != null){
+            return cpdfConfiguration.globalConfig.fileSaveExtraFontSubset;
+        }else {
+            return false;
+        }
     }
 
     public void setCPDFConfiguration(CPDFConfiguration cpdfConfiguration) {

BIN
ContentEditor/src/main/assets/ComPDFKit_Sample_File_Android.pdf


BIN
ContentEditor/src/main/assets/PDF32000_2008.pdf


+ 14 - 1
ContentEditor/src/main/java/com/compdfkit/contenteditor/PDFEditSampleActivity.java

@@ -23,7 +23,9 @@ import com.compdfkit.core.edit.CPDFEditManager;
 import com.compdfkit.core.edit.CPDFEditPage;
 import com.compdfkit.tools.common.basic.activity.CBasicPDFActivity;
 import com.compdfkit.tools.common.contextmenu.CPDFContextMenuHelper;
+import com.compdfkit.tools.common.pdf.CPDFConfigurationUtils;
 import com.compdfkit.tools.common.pdf.config.AnnotationsConfig;
+import com.compdfkit.tools.common.pdf.config.CPDFConfiguration;
 import com.compdfkit.tools.common.utils.CFileUtils;
 import com.compdfkit.tools.common.utils.CPermissionUtil;
 import com.compdfkit.tools.common.utils.activitycontracts.CSelectPDFDocumentResultContract;
@@ -49,12 +51,14 @@ public class PDFEditSampleActivity extends CBasicPDFActivity {
     /**
      * assets folder pdf file
      */
-    public static final String QUICK_START_GUIDE = "PDF32000_2008.pdf";
+    public static final String QUICK_START_GUIDE = "ComPDFKit_Sample_File_Android.pdf";
 
     private EditPdfSampleActivityBinding binding;
 
     private CEditSampleScreenManager screenManager = new CEditSampleScreenManager();
 
+    private CPDFConfiguration cpdfConfiguration;
+
     private ActivityResultLauncher<Void> selectDocumentLauncher = registerForActivityResult(new CSelectPDFDocumentResultContract(), uri -> {
         if (uri != null) {
             CPDFReaderView readerView = binding.pdfView.getCPdfReaderView();
@@ -86,6 +90,8 @@ public class PDFEditSampleActivity extends CBasicPDFActivity {
     }
 
     private void initPDFView() {
+        parseConfiguration();
+        binding.pdfView.setCPDFConfiguration(cpdfConfiguration);
         binding.pdfView.setViewMode(CPDFReaderView.ViewMode.PDFEDIT);
         resetContextMenu(binding.pdfView, CPreviewMode.Edit);
         binding.pdfView.getCPdfReaderView().setMinScaleEnable(false);
@@ -299,6 +305,12 @@ public class PDFEditSampleActivity extends CBasicPDFActivity {
         multiplePermissionResultLauncher.launch(STORAGE_PERMISSIONS);
     }
 
+    private void parseConfiguration() {
+        if (cpdfConfiguration == null) {
+            cpdfConfiguration = CPDFConfigurationUtils.normalConfig(this, "tools_default_configuration.json");
+        }
+    }
+
     @Override
     public void onBackPressed() {
         if (binding.pdfView != null) {
@@ -310,4 +322,5 @@ public class PDFEditSampleActivity extends CBasicPDFActivity {
             super.onBackPressed();
         }
     }
+
 }

+ 1 - 4
ContentEditor/src/main/res/values-night/edit_themes.xml

@@ -1,8 +1,5 @@
 <resources>
     <!-- Base application theme. -->
-    <style name="Edit_Ctrl_Demo_Theme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
-        <item name="android:statusBarColor">@color/tools_color_primary</item>
-        <item name="android:colorAccent">@color/tools_color_accent</item>
-        <item name="android:colorPrimary">@color/tools_color_accent</item>
+    <style name="Edit_Ctrl_Demo_Theme" parent="ComPDFKit.Theme.Dark">
     </style>
 </resources>

+ 1 - 5
ContentEditor/src/main/res/values/edit_themes.xml

@@ -1,10 +1,6 @@
 <resources xmlns:tools="http://schemas.android.com/tools">
     <!-- Base application theme. -->
-    <style name="Edit_Ctrl_Demo_Theme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
-        <item name="android:statusBarColor">@color/tools_color_primary</item>
-        <item name="android:windowLightStatusBar" tools:targetApi="m">true</item>
-        <item name="android:colorAccent">@color/tools_color_accent</item>
-        <item name="android:colorPrimary">@color/tools_color_accent</item>
+    <style name="Edit_Ctrl_Demo_Theme" parent="ComPDFKit.Theme.Light">
     </style>
 
 </resources>

+ 12 - 0
DigitalSignature/src/main/java/com/compdfkit/digitalsignature/PDFSignaturesSampleActivity.java

@@ -20,6 +20,8 @@ import com.compdfkit.core.annotation.form.CPDFSignatureWidget;
 import com.compdfkit.core.document.CPDFDocument;
 import com.compdfkit.digitalsignature.databinding.SignaturesPdfSampleActivityBinding;
 import com.compdfkit.tools.common.basic.activity.CBasicPDFActivity;
+import com.compdfkit.tools.common.pdf.CPDFConfigurationUtils;
+import com.compdfkit.tools.common.pdf.config.CPDFConfiguration;
 import com.compdfkit.tools.common.utils.CFileUtils;
 import com.compdfkit.tools.common.utils.CPermissionUtil;
 import com.compdfkit.tools.common.utils.activitycontracts.CSelectPDFDocumentResultContract;
@@ -53,6 +55,8 @@ public class PDFSignaturesSampleActivity extends CBasicPDFActivity {
 
     private CViewerScreenStatusManager screenStatusManager;
 
+    private CPDFConfiguration cpdfConfiguration;
+
     private ActivityResultLauncher<Void> selectDocumentLauncher = registerForActivityResult(new CSelectPDFDocumentResultContract(), uri -> {
         if (uri != null) {
             CFileUtils.takeUriPermission(this, uri);
@@ -68,6 +72,8 @@ public class PDFSignaturesSampleActivity extends CBasicPDFActivity {
         super.onCreate(savedInstanceState);
         binding = SignaturesPdfSampleActivityBinding.inflate(getLayoutInflater());
         setContentView(binding.getRoot());
+        parseConfiguration();
+        binding.pdfView.setCPDFConfiguration(cpdfConfiguration);
         binding.pdfView.setViewMode(CPDFReaderView.ViewMode.VIEW);
         screenStatusManager = new CViewerScreenStatusManager(binding);
         binding.pdfView.getCPdfReaderView().setFormFieldHighlight(true);
@@ -264,4 +270,10 @@ public class PDFSignaturesSampleActivity extends CBasicPDFActivity {
         });
         alertDialog.show(getSupportFragmentManager(), "alertDialog");
     }
+
+    private void parseConfiguration() {
+        if (cpdfConfiguration == null) {
+            cpdfConfiguration = CPDFConfigurationUtils.normalConfig(this, "tools_default_configuration.json");
+        }
+    }
 }

+ 1 - 5
DigitalSignature/src/main/res/values-night/themes.xml

@@ -1,9 +1,5 @@
 <resources>
     <!-- Base application theme. -->
-    <style name="Theme.Compdfkit_android_demo" parent="Theme.MaterialComponents.DayNight.NoActionBar">
-        <item name="android:statusBarColor">@color/tools_color_primary</item>
-        <item name="android:colorAccent">@color/tools_color_accent</item>
-        <item name="android:colorPrimary">@color/tools_color_accent</item>
-        <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
+    <style name="Theme.Compdfkit_android_demo" parent="ComPDFKit.Theme.Dark">
     </style>
 </resources>

+ 1 - 6
DigitalSignature/src/main/res/values/themes.xml

@@ -1,10 +1,5 @@
 <resources xmlns:tools="http://schemas.android.com/tools">
     <!-- Base application theme. -->
-    <style name="Theme.Compdfkit_android_demo" parent="Theme.MaterialComponents.DayNight.NoActionBar">
-        <item name="android:statusBarColor">@color/tools_color_primary</item>
-        <item name="android:windowLightStatusBar" tools:targetApi="m">true</item>
-        <item name="android:colorAccent">@color/tools_color_accent</item>
-        <item name="android:colorPrimary">@color/tools_color_accent</item>
-        <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
+    <style name="Theme.Compdfkit_android_demo" parent="ComPDFKit.Theme.Light">
     </style>
 </resources>

BIN
DocsEditor/src/main/assets/ComPDFKit_Annotations_Sample_File.pdf


BIN
DocsEditor/src/main/assets/PDF32000_2008.pdf


+ 1 - 1
DocsEditor/src/main/java/com/compdfkit/docseditor/MainActivity.java

@@ -31,7 +31,7 @@ public class MainActivity extends CBasicPDFActivity {
     /**
      * assets folder pdf file
      */
-    public static final String QUICK_START_GUIDE = "PDF32000_2008.pdf";
+    public static final String QUICK_START_GUIDE = "ComPDFKit_Annotations_Sample_File.pdf";
     ActivityMainBinding binding;
     CPageEditSampleScreenManager screenManager = new CPageEditSampleScreenManager();
 

+ 1 - 12
DocsEditor/src/main/res/values-night/themes.xml

@@ -1,16 +1,5 @@
 <resources>
     <!-- Base application theme. -->
-    <style name="Theme.Compdfkit_android_demo" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
-        <!-- Primary brand color. -->
-        <item name="colorPrimary">@color/purple_200</item>
-        <item name="colorPrimaryVariant">@color/purple_700</item>
-        <item name="colorOnPrimary">@color/black</item>
-        <!-- Secondary brand color. -->
-        <item name="colorSecondary">@color/teal_200</item>
-        <item name="colorSecondaryVariant">@color/teal_200</item>
-        <item name="colorOnSecondary">@color/black</item>
-        <!-- Status bar color. -->
-        <item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
-        <!-- Customize your theme here. -->
+    <style name="Theme.Compdfkit_android_demo" parent="ComPDFKit.Theme.Dark">
     </style>
 </resources>

+ 3 - 17
DocsEditor/src/main/res/values/themes.xml

@@ -1,24 +1,10 @@
 <resources xmlns:tools="http://schemas.android.com/tools">
     <!-- Base application theme. -->
-    <style name="Theme.Compdfkit_android_demo" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
-        <!-- Primary brand color. -->
-        <item name="colorPrimary">@color/purple_500</item>
-        <item name="colorPrimaryVariant">@color/purple_700</item>
-        <item name="colorOnPrimary">@color/white</item>
-        <!-- Secondary brand color. -->
-        <item name="colorSecondary">@color/teal_200</item>
-        <item name="colorSecondaryVariant">@color/teal_700</item>
-        <item name="colorOnSecondary">@color/black</item>
-        <!-- Status bar color. -->
-        <item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
-        <!-- Customize your theme here. -->
+    <style name="Theme.Compdfkit_android_demo" parent="ComPDFKit.Theme.Light">
+
     </style>
 
-    <style name="Pageedit_Ctrl_Demo_Theme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
-        <item name="android:statusBarColor">@color/tools_color_primary</item>
-        <item name="android:windowLightStatusBar" tools:targetApi="m">true</item>
-        <item name="android:colorAccent">@color/tools_color_accent</item>
-        <item name="android:colorPrimary">@color/tools_color_accent</item>
+    <style name="Pageedit_Ctrl_Demo_Theme" parent="Theme.Compdfkit_android_demo">
     </style>
 
 </resources>

BIN
Forms/src/main/assets/ComPDFKit_Forms_Sample_File.pdf


BIN
Forms/src/main/assets/Form_Widgets_Test.pdf


+ 13 - 1
Forms/src/main/java/com/compdfkit/forms/PDFFormSampleActivity.java

@@ -12,6 +12,8 @@ import androidx.core.content.ContextCompat;
 
 import com.compdfkit.forms.databinding.FormPdfSampleActivityBinding;
 import com.compdfkit.tools.common.basic.activity.CBasicPDFActivity;
+import com.compdfkit.tools.common.pdf.CPDFConfigurationUtils;
+import com.compdfkit.tools.common.pdf.config.CPDFConfiguration;
 import com.compdfkit.tools.common.pdf.config.FormsConfig;
 import com.compdfkit.tools.common.utils.CFileUtils;
 import com.compdfkit.tools.common.utils.CPermissionUtil;
@@ -38,12 +40,14 @@ public class PDFFormSampleActivity extends CBasicPDFActivity {
     /**
      * assets folder pdf file
      */
-    public static final String QUICK_START_GUIDE = "Form_Widgets_Test.pdf";
+    public static final String QUICK_START_GUIDE = "ComPDFKit_Forms_Sample_File.pdf";
 
     private FormPdfSampleActivityBinding binding;
 
     CFormSampleScreenManager screenManager = new CFormSampleScreenManager();
 
+    private CPDFConfiguration cpdfConfiguration;
+
     private ActivityResultLauncher<Void> selectDocumentLauncher = registerForActivityResult(new CSelectPDFDocumentResultContract(), uri -> {
         if (uri != null) {
             CFileUtils.takeUriPermission(this, uri);
@@ -67,6 +71,8 @@ public class PDFFormSampleActivity extends CBasicPDFActivity {
     }
 
     private void initPDFView() {
+        parseConfiguration();
+        binding.pdfView.setCPDFConfiguration(cpdfConfiguration);
         //Open the PDF file from the assets folder
         CExtractAssetFileTask.extract(this, QUICK_START_GUIDE, QUICK_START_GUIDE, (filePath) ->
                 binding.pdfView.openPDF(filePath));
@@ -262,4 +268,10 @@ public class PDFFormSampleActivity extends CBasicPDFActivity {
             super.onBackPressed();
         }
     }
+
+    private void parseConfiguration() {
+        if (cpdfConfiguration == null) {
+            cpdfConfiguration = CPDFConfigurationUtils.normalConfig(this, "tools_default_configuration.json");
+        }
+    }
 }

+ 1 - 4
Forms/src/main/res/values-night/themes.xml

@@ -1,8 +1,5 @@
 <resources>
     <!-- Base application theme. -->
-    <style name="Form_Compdfkit_android_demo" parent="Theme.MaterialComponents.DayNight.NoActionBar">
-        <item name="android:statusBarColor">@color/tools_color_primary</item>
-        <item name="android:colorAccent">@color/tools_color_accent</item>
-        <item name="android:colorPrimary">@color/tools_color_accent</item>
+    <style name="Form_Compdfkit_android_demo" parent="ComPDFKit.Theme.Dark">
     </style>
 </resources>

+ 1 - 6
Forms/src/main/res/values/themes.xml

@@ -1,10 +1,5 @@
 <resources xmlns:tools="http://schemas.android.com/tools">
     <!-- Base application theme. -->
-    <style name="Form_Compdfkit_android_demo" parent="Theme.MaterialComponents.DayNight.NoActionBar">
-        <item name="android:statusBarColor">@color/tools_color_primary</item>
-        <item name="android:windowLightStatusBar" tools:targetApi="m">true</item>
-        <item name="android:colorAccent">@color/tools_color_accent</item>
-        <item name="android:colorPrimary">@color/tools_color_accent</item>
-        <!-- Customize your theme here. -->
+    <style name="Form_Compdfkit_android_demo" parent="ComPDFKit.Theme.Light">
     </style>
 </resources>

+ 31 - 12
Samples/src/main/java/com/compdfkit/samples/samples/AnnotationReplyTest.java

@@ -1,8 +1,14 @@
 package com.compdfkit.samples.samples;
 
+import android.graphics.Color;
+import android.graphics.RectF;
+
 import com.compdfkit.core.annotation.CPDFAnnotation;
+import com.compdfkit.core.annotation.CPDFFreetextAnnotation;
 import com.compdfkit.core.annotation.CPDFReplyAnnotation;
+import com.compdfkit.core.annotation.CPDFTextAttribute;
 import com.compdfkit.core.document.CPDFDocument;
+import com.compdfkit.core.page.CPDFPage;
 import com.compdfkit.samples.PDFSamples;
 import com.compdfkit.samples.R;
 import com.compdfkit.samples.util.FileUtils;
@@ -22,18 +28,31 @@ public class AnnotationReplyTest extends PDFSamples {
         super.run(outputListener);
         printHead();
         printDividingLine();
-        CPDFDocument document = new CPDFDocument(context);
-        document.open(FileUtils.getAssetsTempFile(context, "Annotations.pdf"));
+        CPDFDocument document = CPDFDocument.createDocument(context);
+        document.insertBlankPage(0, 595, 842);
 
+        // Insert the free text annotation into the first page of the PDF document.
+        CPDFPage page = document.pageAtIndex(0);
+        CPDFFreetextAnnotation freetextAnnotation = (CPDFFreetextAnnotation) page.addAnnot(CPDFAnnotation.Type.FREETEXT);
+        RectF size = page.getSize();
+        RectF freeText1Rect = page.convertRectToPage(false, size.width(), size.height(), new RectF(10, 20, 160, 100));
+        freetextAnnotation.setRect(freeText1Rect);
+        freetextAnnotation.setContent("FreeText Annotation Reply Test");
+        CPDFTextAttribute textAttribute = new CPDFTextAttribute(CPDFTextAttribute.FontNameHelper.obtainFontName(
+                CPDFTextAttribute.FontNameHelper.FontType.Courier, false, false
+        ), 12, Color.RED);
+        freetextAnnotation.setFreetextDa(textAttribute);
+        // set text color opacity
+        freetextAnnotation.setAlpha(255);
+        freetextAnnotation.setTitle("ComPDFKit");
+        freetextAnnotation.updateAp();
 
         // ----------------------------------------
         // Samples1 : create annotation reply info
-        // Get the first annotation on the first page
-        CPDFAnnotation annotation = document.pageAtIndex(0).getAnnotations().get(0);
-        annotation.setTitle("Guest");
-        if (annotation.getAllReplyAnnotations() == null || annotation.getAllReplyAnnotations().length == 0) {
-            outputListener.println("Annotation Type:" + annotation.getType().name());
-            CPDFReplyAnnotation replyAnnotation = annotation.createReplyAnnotation();
+        if (freetextAnnotation.getAllReplyAnnotations() == null || freetextAnnotation.getAllReplyAnnotations().length == 0) {
+            outputListener.println("Annotation Type:" + freetextAnnotation.getType().name());
+            // -----------------------
+            CPDFReplyAnnotation replyAnnotation = freetextAnnotation.createReplyAnnotation();
             replyAnnotation.setMarkedAnnotState(CPDFAnnotation.MarkState.MARKED);
             replyAnnotation.setReviewAnnotState(CPDFAnnotation.ReviewState.REVIEW_COMPLETED);
             replyAnnotation.setTitle("Youna");
@@ -46,7 +65,8 @@ public class AnnotationReplyTest extends PDFSamples {
             outputListener.println("Create Reply Annotation End !!!");
             printDividingLine();
 
-            CPDFReplyAnnotation replyAnnotation1 = annotation.createReplyAnnotation();
+            // -----------------------
+            CPDFReplyAnnotation replyAnnotation1 = freetextAnnotation.createReplyAnnotation();
             replyAnnotation1.setMarkedAnnotState(CPDFAnnotation.MarkState.UNMARKED);
             replyAnnotation1.setReviewAnnotState(CPDFAnnotation.ReviewState.REVIEW_ACCEPTED);
             replyAnnotation1.setTitle("C-Long");
@@ -58,14 +78,13 @@ public class AnnotationReplyTest extends PDFSamples {
             outputListener.println("MarkedState:" + replyAnnotation1.getMarkedAnnotState().name());
             outputListener.println("Create Reply Annotation End !!!");
             printDividingLine();
-
         }
 
         // Samples 2: get all reply annotations
-        CPDFReplyAnnotation[] replyAnnotations = annotation.getAllReplyAnnotations();
+        CPDFReplyAnnotation[] replyAnnotations = freetextAnnotation.getAllReplyAnnotations();
         outputListener.println("Get All Reply Annotations: ");
         outputListener.println("Size: " + replyAnnotations.length);
-        outputListener.println("Annotation Type:" + annotation.getType().name());
+        outputListener.println("Annotation Type:" + freetextAnnotation.getType().name());
         if (replyAnnotations != null) {
             for (CPDFReplyAnnotation replyAnnotation : replyAnnotations) {
                 printDividingLine();

+ 0 - 3
Samples/src/main/res/layout/activity_sample_list.xml

@@ -5,7 +5,6 @@
     android:layout_height="match_parent"
     tools:context=".SampleListActivity">
 
-
     <androidx.recyclerview.widget.RecyclerView
         android:layout_width="match_parent"
         android:layout_height="match_parent"
@@ -13,6 +12,4 @@
         tools:listitem="@layout/layout_sample_list_item"
         />
 
-
-
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 5 - 2
Samples/src/main/res/layout/fragment_sample_detail.xml

@@ -23,9 +23,10 @@
         android:layout_marginTop="4dp"
         android:text="@string/run"
         app:cornerRadius="4dp"
+        app:rippleColor="#334982E6"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@id/tv_description"
-
+        android:textColor="?android:attr/textColorPrimary"
         />
 
     <com.google.android.material.button.MaterialButton
@@ -34,7 +35,9 @@
         android:layout_height="wrap_content"
         android:layout_marginStart="8dp"
         android:text="@string/open_files"
+        android:textColor="?android:attr/textColorPrimary"
         app:cornerRadius="4dp"
+        app:rippleColor="#334982E6"
         app:layout_constraintStart_toEndOf="@id/btn_run"
         app:layout_constraintTop_toTopOf="@id/btn_run" />
 
@@ -54,7 +57,7 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:textIsSelectable="true"
-            android:background="#80E4E0E0"
+            android:background="#1AE4E0E0"
             android:padding="4dp"
             tools:text="Done!" />
 

+ 12 - 1
Samples/src/main/res/values-night/themes.xml

@@ -1,7 +1,18 @@
-<resources>
+<resources xmlns:tools="http://schemas.android.com/tools">
     <!-- Base application theme. -->
     <style name="Base.Theme.Compdfkit_android_demo" parent="Theme.Material3.DayNight">
         <!-- Customize your dark theme here. -->
         <!-- <item name="colorPrimary">@color/my_dark_primary</item> -->
+
+        <item name="android:colorAccent">#6499FF</item>
+        <item name="android:statusBarColor">#222429</item>
+        <item name="android:windowLightStatusBar" tools:targetApi="m">false</item>
+
+        <item name="colorPrimary">#222429</item>
+        <item name="android:colorPrimary">#222429</item>
+        <item name="colorOnPrimary">#FFFFFF</item>
+        <item name="colorSurface">#222429</item>
+        <item name="android:textColorPrimary">@color/white</item>
+
     </style>
 </resources>

+ 12 - 2
Samples/src/main/res/values/themes.xml

@@ -1,9 +1,19 @@
-<resources>
+<resources xmlns:tools="http://schemas.android.com/tools">
     <!-- Base application theme. -->
     <style name="Base.Theme.Compdfkit_android_demo" parent="Theme.Material3.DayNight">
         <!-- Customize your light theme here. -->
-        <!-- <item name="colorPrimary">@color/my_light_primary</item> -->
+        <item name="colorPrimary">#FAFCFF</item>
+        <item name="android:colorPrimary">#FAFCFF</item>
+        <item name="colorOnPrimary">#FAFCFF</item>
+        <item name="colorSurface">#FAFCFF</item>
+        <item name="android:colorAccent">#1460F3</item>
+        <item name="android:statusBarColor">#FAFCFF</item>
+        <item name="android:windowLightStatusBar" tools:targetApi="m">true</item>
+        <item name="android:colorBackground">#FFFFFF</item>
+        <item name="android:textColorPrimary">@color/black</item>
+
     </style>
 
     <style name="Theme.Compdfkit_android_demo" parent="Base.Theme.Compdfkit_android_demo" />
+
 </resources>

+ 2 - 0
Samples_kotlin/src/main/java/com/compdfkit/samples/SampleApplication.kt

@@ -10,6 +10,7 @@ package com.compdfkit.samples
 
 import android.app.Application
 import com.compdfkit.samples.samples.AnnotationImportExportTest
+import com.compdfkit.samples.samples.AnnotationReplyTest
 import com.compdfkit.samples.samples.AnnotationTest
 import com.compdfkit.samples.samples.BackgroundTest
 import com.compdfkit.samples.samples.BatesTest
@@ -47,6 +48,7 @@ class SampleApplication : Application() {
         samplesList.add(TextSearchTest())
         samplesList.add(AnnotationTest())
         samplesList.add(AnnotationImportExportTest())
+        samplesList.add(AnnotationReplyTest())
         samplesList.add(InteractiveFormsTest())
         samplesList.add(PDFPageTest())
         samplesList.add(ImageExtractTest())

+ 98 - 0
Samples_kotlin/src/main/java/com/compdfkit/samples/samples/AnnotationReplyTest.kt

@@ -0,0 +1,98 @@
+package com.compdfkit.samples.samples
+
+import android.graphics.Color
+import android.graphics.RectF
+import com.compdfkit.core.annotation.CPDFAnnotation
+import com.compdfkit.core.annotation.CPDFFreetextAnnotation
+import com.compdfkit.core.annotation.CPDFTextAttribute
+import com.compdfkit.core.document.CPDFDocument
+import com.compdfkit.samples.PDFSamples
+import com.compdfkit.samples.R
+import com.compdfkit.samples.util.OutputListener
+import java.io.File
+
+class AnnotationReplyTest : PDFSamples() {
+    init {
+        setTitle(R.string.annotation_reply_title)
+        setDescription(R.string.annotation_reply_desc)
+    }
+
+    override fun run(outputListener: OutputListener?) {
+        super.run(outputListener)
+        printHead()
+        printDividingLine()
+        val document = CPDFDocument.createDocument(context())
+        document.insertBlankPage(0, 595F, 842F)
+
+        // Insert the free text annotation into the first page of the PDF document.
+        val page = document.pageAtIndex(0)
+        val freetextAnnotation =
+            page.addAnnot(CPDFAnnotation.Type.FREETEXT) as CPDFFreetextAnnotation
+        val size = page.size
+        val freeText1Rect =
+            page.convertRectToPage(false, size.width(), size.height(), RectF(10F, 20F, 160F, 100F))
+        freetextAnnotation.setRect(freeText1Rect)
+        freetextAnnotation.setContent("FreeText Annotation Reply Test")
+        val textAttribute = CPDFTextAttribute(
+            CPDFTextAttribute.FontNameHelper.obtainFontName(
+                CPDFTextAttribute.FontNameHelper.FontType.Courier, false, false
+            ), 12f, Color.RED
+        )
+        freetextAnnotation.setFreetextDa(textAttribute)
+        // set text color opacity
+        freetextAnnotation.setAlpha(255)
+        freetextAnnotation.setTitle("ComPDFKit")
+        freetextAnnotation.updateAp()
+
+        // ----------------------------------------
+        // Samples1 : create annotation reply info
+        if (freetextAnnotation.allReplyAnnotations == null || freetextAnnotation.allReplyAnnotations.isEmpty()) {
+            outputListener?.println("Annotation Type:${freetextAnnotation.type.name}")
+            // -----------------------
+            val replyAnnotation = freetextAnnotation.createReplyAnnotation()
+            replyAnnotation.setMarkedAnnotState(CPDFAnnotation.MarkState.MARKED)
+            replyAnnotation.setReviewAnnotState(CPDFAnnotation.ReviewState.REVIEW_COMPLETED)
+            replyAnnotation.setTitle("Youna")
+            replyAnnotation.setContent("Hello ComPDFKit")
+
+            outputListener?.println("Create Reply Annotation:")
+            outputListener?.println("Title:${replyAnnotation.title}")
+            outputListener?.println("Content:${replyAnnotation.content}")
+            outputListener?.println("ReviewState:${replyAnnotation.reviewAnnotState.name}")
+            outputListener?.println("MarkedState:${replyAnnotation.markedAnnotState.name}")
+            outputListener?.println("Create Reply Annotation End !!!")
+
+            printDividingLine()
+
+            // -----------------------
+            val replyAnnotation1 = freetextAnnotation.createReplyAnnotation()
+            replyAnnotation1.setMarkedAnnotState(CPDFAnnotation.MarkState.UNMARKED)
+            replyAnnotation1.setReviewAnnotState(CPDFAnnotation.ReviewState.REVIEW_ACCEPTED)
+            replyAnnotation1.setTitle("C-Long")
+            replyAnnotation1.setContent("Hello World")
+            outputListener?.println("Create Reply Annotation:")
+            outputListener?.println("Title:${replyAnnotation1.title}")
+            outputListener?.println("Content:${replyAnnotation1.content}")
+            outputListener?.println("ReviewState:${replyAnnotation1.reviewAnnotState.name}")
+            outputListener?.println("MarkedState:${replyAnnotation1.markedAnnotState.name}")
+            outputListener?.println("Create Reply Annotation End !!!")
+            printDividingLine()
+        }
+
+        // Samples 2: get all reply annotations
+        val replyAnnotations = freetextAnnotation.allReplyAnnotations
+        outputListener?.println("Get All Reply Annotations: ")
+        outputListener?.println("Size: ${replyAnnotations.size}")
+        outputListener?.println("Annotation Type:${freetextAnnotation.type.name}")
+
+        for (replyAnnotation in replyAnnotations) {
+            printDividingLine()
+            outputListener?.println("Title:${replyAnnotation.title}")
+            outputListener?.println("Content:${replyAnnotation.content}")
+            outputListener?.println("ReviewState:${replyAnnotation.reviewAnnotState.name}")
+            outputListener?.println("MarkedState:${replyAnnotation.markedAnnotState.name}")
+        }
+        saveSamplePDF(document, File(outputDir(), "AnnotationTest/AnnotationReplyTest.pdf"), true)
+        printFooter()
+    }
+}

+ 5 - 2
Samples_kotlin/src/main/res/layout/fragment_sample_detail.xml

@@ -22,10 +22,11 @@
         android:layout_height="wrap_content"
         android:layout_marginTop="4dp"
         android:text="@string/run"
+        app:rippleColor="#334982E6"
         app:cornerRadius="4dp"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@id/tv_description"
-
+        android:textColor="?android:attr/textColorPrimary"
         />
 
     <com.google.android.material.button.MaterialButton
@@ -35,6 +36,8 @@
         android:layout_marginStart="8dp"
         android:text="@string/open_files"
         app:cornerRadius="4dp"
+        app:rippleColor="#334982E6"
+        android:textColor="?android:attr/textColorPrimary"
         app:layout_constraintStart_toEndOf="@id/btn_run"
         app:layout_constraintTop_toTopOf="@id/btn_run" />
 
@@ -54,7 +57,7 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:textIsSelectable="true"
-            android:background="#80E4E0E0"
+            android:background="#1AE4E0E0"
             android:padding="4dp"
             tools:text="Done!" />
 

+ 10 - 1
Samples_kotlin/src/main/res/values-night/themes.xml

@@ -1,7 +1,16 @@
-<resources>
+<resources xmlns:tools="http://schemas.android.com/tools">
     <!-- Base application theme. -->
     <style name="Base.Theme.Compdfkit_android_demo" parent="Theme.Material3.DayNight">
         <!-- Customize your dark theme here. -->
         <!-- <item name="colorPrimary">@color/my_dark_primary</item> -->
+        <item name="android:colorAccent">#6499FF</item>
+        <item name="android:statusBarColor">#222429</item>
+        <item name="android:windowLightStatusBar" tools:targetApi="m">false</item>
+
+        <item name="colorPrimary">#222429</item>
+        <item name="android:colorPrimary">#222429</item>
+        <item name="colorOnPrimary">#FFFFFF</item>
+        <item name="colorSurface">#222429</item>
+        <item name="android:textColorPrimary">@color/white</item>
     </style>
 </resources>

+ 3 - 0
Samples_kotlin/src/main/res/values/strings.xml

@@ -68,6 +68,9 @@
     <string name="content_editor_title">ContentEditor</string>
     <string name="content_editor_desc">This example shows how to insert text and images through the content editing function.</string>
 
+    <string name="annotation_reply_title">AnnotationReply</string>
+    <string name="annotation_reply_desc">This example shows how to add comments, delete replies, etc.</string>
+
     <string name="tools_allowed">Allowed</string>
     <string name="tools_not_allowed">Not Allowed</string>
 

+ 11 - 2
Samples_kotlin/src/main/res/values/themes.xml

@@ -1,8 +1,17 @@
-<resources>
+<resources xmlns:tools="http://schemas.android.com/tools">
     <!-- Base application theme. -->
     <style name="Base.Theme.Compdfkit_android_demo" parent="Theme.Material3.DayNight">
         <!-- Customize your light theme here. -->
-        <!-- <item name="colorPrimary">@color/my_light_primary</item> -->
+        <item name="colorPrimary">#FAFCFF</item>
+        <item name="android:colorPrimary">#FAFCFF</item>
+        <item name="colorOnPrimary">#FAFCFF</item>
+        <item name="colorSurface">#FAFCFF</item>
+        <item name="android:colorAccent">#1460F3</item>
+        <item name="android:statusBarColor">#FAFCFF</item>
+        <item name="android:windowLightStatusBar" tools:targetApi="m">true</item>
+        <item name="android:colorBackground">#FFFFFF</item>
+        <item name="android:textColorPrimary">@color/black</item>
+
     </style>
 
     <style name="Theme.Compdfkit_android_demo" parent="Base.Theme.Compdfkit_android_demo" />

BIN
Viewer/src/main/assets/ComPDFKit_Sample_File_Android.pdf


BIN
Viewer/src/main/assets/PDF32000_2008.pdf


+ 13 - 1
Viewer/src/main/java/com/compdfkit/viewer/PDFViewerSampleActivity.java

@@ -18,6 +18,8 @@ import androidx.activity.result.ActivityResultLauncher;
 import com.compdfkit.core.annotation.CPDFTextAnnotation;
 import com.compdfkit.tools.annotation.pdfproperties.pdfnote.CPDFtextAnnotImpl;
 import com.compdfkit.tools.common.basic.activity.CBasicPDFActivity;
+import com.compdfkit.tools.common.pdf.CPDFConfigurationUtils;
+import com.compdfkit.tools.common.pdf.config.CPDFConfiguration;
 import com.compdfkit.tools.common.utils.CFileUtils;
 import com.compdfkit.tools.common.utils.CPermissionUtil;
 import com.compdfkit.tools.common.utils.activitycontracts.CSelectPDFDocumentResultContract;
@@ -38,12 +40,14 @@ public class PDFViewerSampleActivity extends CBasicPDFActivity {
     /**
      * assets folder pdf file
      */
-    public static final String QUICK_START_GUIDE = "PDF32000_2008.pdf";
+    public static final String QUICK_START_GUIDE = "ComPDFKit_Sample_File_Android.pdf";
 
     private ViewerPdfSampleActivityBinding binding;
 
     private CViewerScreenStatusManager screenStatusManager;
 
+    private CPDFConfiguration cpdfConfiguration;
+
     private ActivityResultLauncher<Void> selectDocumentLauncher = registerForActivityResult(new CSelectPDFDocumentResultContract(), uri -> {
         if (uri != null) {
             CFileUtils.takeUriPermission(this, uri);
@@ -58,6 +62,8 @@ public class PDFViewerSampleActivity extends CBasicPDFActivity {
         setContentView(binding.getRoot());
         binding.pdfView.setViewMode(CPDFReaderView.ViewMode.VIEW);
         screenStatusManager = new CViewerScreenStatusManager(binding);
+        parseConfiguration();
+        binding.pdfView.setCPDFConfiguration(cpdfConfiguration);
         initToolbarListener();
         initSearchBar();
         //Extract PDF files from the Android assets folder
@@ -162,4 +168,10 @@ public class PDFViewerSampleActivity extends CBasicPDFActivity {
             binding.pdfSearchToolBar.showKeyboard();
         });
     }
+
+    private void parseConfiguration() {
+        if (cpdfConfiguration == null) {
+            cpdfConfiguration = CPDFConfigurationUtils.normalConfig(this, "tools_default_configuration.json");
+        }
+    }
 }

+ 1 - 5
Viewer/src/main/res/values-night/themes.xml

@@ -1,9 +1,5 @@
 <resources>
     <!-- Base application theme. -->
-    <style name="Viewer_Ctrl_Demo_Theme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
-        <item name="android:statusBarColor">@color/viewer_status_bar_color</item>
-        <item name="android:colorAccent">@color/tools_color_accent</item>
-        <item name="android:colorPrimary">@color/tools_color_accent</item>
-        <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
+    <style name="Viewer_Ctrl_Demo_Theme" parent="ComPDFKit.Theme.Dark">
     </style>
 </resources>

+ 1 - 6
Viewer/src/main/res/values/themes.xml

@@ -1,10 +1,5 @@
 <resources xmlns:tools="http://schemas.android.com/tools">
     <!-- Base application theme. -->
-    <style name="Viewer_Ctrl_Demo_Theme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
-        <item name="android:statusBarColor">@color/viewer_status_bar_color</item>
-        <item name="android:windowLightStatusBar" tools:targetApi="m">true</item>
-        <item name="android:colorAccent">@color/tools_color_accent</item>
-        <item name="android:colorPrimary">@color/tools_color_accent</item>
-        <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
+    <style name="Viewer_Ctrl_Demo_Theme" parent="ComPDFKit.Theme.Light">
     </style>
 </resources>

+ 1 - 1
compdfkit-tools-mavencentral.gradle

@@ -1,7 +1,7 @@
 apply plugin: 'maven-publish'
 apply plugin: 'signing'
 
-def PUBLISH_VERSION = '2.0.2-SNAPSHOT'
+def PUBLISH_VERSION = '2.1.0-SNAPSHOT'
 def PUBLISH_GROUP_ID = 'com.compdf'
 def PUBLISH_ARTIFACT_ID = 'compdfkit-tools'