Skip to content

Commit 3004da9

Browse files
committed
v2.5.2
1 parent 118b08a commit 3004da9

25 files changed

Lines changed: 439 additions & 248 deletions

File tree

3.24 KB
Binary file not shown.
-433 KB
Binary file not shown.

ComPDFKit_Tools/build.gradle

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,8 @@ dependencies {
5757
// api project(path:':ComPDFKit_Repo:compdfkit')
5858
// api project(path:':ComPDFKit_Repo:compdfkit-ui')
5959
// or use
60-
api ('com.compdf:compdfkit:2.5.0')
61-
api ('com.compdf:compdfkit-ui:2.5.0')
62-
60+
api ('com.compdf:compdfkit:2.5.2')
61+
api ('com.compdf:compdfkit-ui:2.5.2')
6362
api 'com.github.bumptech.glide:glide:4.15.1'
6463
annotationProcessor 'com.github.bumptech.glide:compiler:4.15.1'
6564
api "androidx.print:print:1.1.0"

ComPDFKit_Tools/src/main/assets/tools_default_configuration.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@
163163
"initAttribute": {
164164
"text": {
165165
"fontColor": "#000000",
166-
"fontColorAlpha" : 100,
166+
"fontColorAlpha" : 255,
167167
"fontSize": 30,
168168
"isBold": false,
169169
"isItalic": false,
@@ -267,7 +267,9 @@
267267
"margins" : [0,0,0,0],
268268
"pageScale": 1.0,
269269
"pageSameWidth": true,
270-
"enableMinScale": true
270+
"enableMinScale": true,
271+
"annotationsVisible": true,
272+
"enableAutoCreateEditTextInput" : true
271273
},
272274
"global" : {
273275
"themeMode" : "system",

ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/pdf/CPDFApplyConfigUtil.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import com.compdfkit.core.annotation.CPDFBorderStyle;
1919
import com.compdfkit.core.annotation.CPDFLineAnnotation;
20+
import com.compdfkit.core.annotation.CPDFTextAttribute;
2021
import com.compdfkit.core.annotation.form.CPDFWidget;
2122
import com.compdfkit.core.document.CPDFDocument;
2223
import com.compdfkit.tools.R;
@@ -46,6 +47,8 @@
4647
import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.CStyleType;
4748
import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.manager.CStyleManager;
4849
import com.compdfkit.tools.common.views.pdfview.CPreviewMode;
50+
import com.compdfkit.ui.attribute.CPDFAnnotAttribute;
51+
import com.compdfkit.ui.attribute.CPDFEditorTextAttr;
4952
import com.compdfkit.ui.attribute.CPDFReaderAttribute;
5053
import com.compdfkit.ui.reader.CPDFReaderView;
5154

@@ -153,6 +156,8 @@ private void applyReaderViewConfig(CPDFDocumentFragment fragment, CPDFConfigurat
153156
readerView.setReaderViewTopMargin(top);
154157
readerView.setReaderViewBottomMargin(bottom);
155158
}
159+
readerView.setAnnotationsVisible(readerViewConfig.annotationsVisible);
160+
readerView.setEnableAutoTextInput(readerViewConfig.enableAutoCreateEditTextInput);
156161
// set search text rect color
157162
CPDFSearchConfig searchConfig = configuration.globalConfig.search;
158163
CPDFReaderAttribute readerAttribute = readerView.getReaderAttribute();
@@ -316,6 +321,19 @@ private void applyContentEditorConfig(CPDFDocumentFragment fragment, CPDFConfigu
316321
ContentEditorConfig editorConfig = configuration.contentEditorConfig;
317322
fragment.editToolBar.setTools(editorConfig.availableTools);
318323
fragment.editToolBar.setEditType(editorConfig.availableTypes.toArray(new ContentEditorConfig.ContentEditorType[0]));
324+
325+
ContentEditorConfig.ContentEditorAttr contentEditorAttr = editorConfig.initAttribute;
326+
ContentEditorConfig.TextAttr textAttr = contentEditorAttr.text;
327+
328+
CPDFReaderView readerView = fragment.pdfView.getCPdfReaderView();
329+
CPDFAnnotAttribute annotAttribute = readerView.getReaderAttribute().getAnnotAttribute();
330+
CPDFEditorTextAttr editorTextAttr = annotAttribute.getEditorTextAttr();
331+
editorTextAttr.setAlpha(textAttr.getFontColorAlpha());
332+
editorTextAttr.setAlignment(textAttr.getAlignment());
333+
334+
String psName = CPDFTextAttribute.FontNameHelper.obtainFontName(textAttr.getTypeface(), textAttr.isBold(), textAttr.isItalic());
335+
editorTextAttr.setTextAttribute(new CPDFTextAttribute(psName, textAttr.getFontSize(), textAttr.getFontColor()));
336+
editorTextAttr.onstore();
319337
}
320338

321339
private void applyFormsConfig(CPDFDocumentFragment fragment, CPDFConfiguration configuration) {

ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/pdf/CPDFConfigurationUtils.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,8 @@ private static ReaderViewConfig parseReaderViewConfig(@Nullable JSONObject jsonO
206206
readerViewConfig.pageScale = (float) jsonObject.optDouble("pageScale", 1.0);
207207
readerViewConfig.pageSameWidth = jsonObject.optBoolean("pageSameWidth", true);
208208
readerViewConfig.enableMinScale = jsonObject.optBoolean("enableMinScale", true);
209+
readerViewConfig.annotationsVisible = jsonObject.optBoolean("annotationsVisible", true);
210+
readerViewConfig.enableAutoCreateEditTextInput = jsonObject.optBoolean("enableAutoCreateEditTextInput", true);
209211
JSONArray marginsJsonArray = jsonObject.optJSONArray("margins");
210212
if (marginsJsonArray != null && marginsJsonArray.length() == 4) {
211213
int left = marginsJsonArray.optInt(0, 0);

ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/pdf/CPDFDocumentFragment.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import android.os.Bundle;
2525
import android.os.Environment;
2626
import android.text.TextUtils;
27-
import android.util.Log;
2827
import android.view.ContextThemeWrapper;
2928
import android.view.LayoutInflater;
3029
import android.view.View;
@@ -57,6 +56,7 @@
5756
import com.compdfkit.tools.common.pdf.config.ToolbarConfig;
5857
import com.compdfkit.tools.common.pdf.config.bota.CPDFBotaConfig;
5958
import com.compdfkit.tools.common.utils.CFileUtils;
59+
import com.compdfkit.tools.common.utils.CLog;
6060
import com.compdfkit.tools.common.utils.CPermissionUtil;
6161
import com.compdfkit.tools.common.utils.CToastUtil;
6262
import com.compdfkit.tools.common.utils.activitycontracts.CImageResultContracts.RequestType;
@@ -100,6 +100,7 @@
100100
import com.compdfkit.ui.proxy.form.CPDFComboboxWidgetImpl;
101101
import com.compdfkit.ui.proxy.form.CPDFListboxWidgetImpl;
102102
import com.compdfkit.ui.proxy.form.CPDFPushbuttonWidgetImpl;
103+
import com.compdfkit.ui.reader.CPDFAddAnnotCallback;
103104
import com.compdfkit.ui.reader.CPDFPageView;
104105
import com.compdfkit.ui.reader.CPDFReaderView;
105106

@@ -156,6 +157,8 @@ public class CPDFDocumentFragment extends CBasicPDFFragment {
156157

157158
public CFillScreenChangeListener fillScreenChangeListener;
158159

160+
private CPDFAddAnnotCallback addAnnotCallback;
161+
159162
public static CPDFDocumentFragment newInstance(String filePath, String password, CPDFConfiguration configuration) {
160163
Bundle args = new Bundle();
161164
args.putString(EXTRA_FILE_PATH, filePath);
@@ -384,6 +387,9 @@ public void onEndScroll() {
384387
annotation.setTitle(cpdfConfiguration.annotationsConfig.annotationAuthor);
385388
annotation.updateAp();
386389
}
390+
if (addAnnotCallback != null) {
391+
addAnnotCallback.onAddAnnotation(cpdfPageView, cpdfBaseAnnot);
392+
}
387393

388394
// Annotation creation completed listener, you can use cpdfBaseAnnot.getAnnotType() to determine the type of the added annotation
389395
if (cpdfBaseAnnot instanceof CPDFListboxWidgetImpl) {
@@ -1050,16 +1056,12 @@ protected interface CRequestPermissionListener {
10501056
public void onDestroy() {
10511057
try {
10521058
CViewUtils.hideKeyboard(getActivity().getWindow().getDecorView());
1053-
Log.e("ComPDFKit", "CPDFDocumentFragment:onDestroy() document close()");
1054-
if (pdfView.getCPdfReaderView().getPDFDocument() != null) {
1055-
pdfView.getCPdfReaderView().getPDFDocument().close();
1056-
}
1057-
pdfView.getCPdfReaderView().getContextMenuShowListener().dismissContextMenu();
1059+
CLog.e("ComPDFKit", "CPDFDocumentFragment:onDestroy() document close()");
1060+
pdfView.close();
10581061
if (menuWindow != null) {
10591062
menuWindow.dismiss();
10601063
}
10611064
} catch (Exception ignored) {
1062-
10631065
}
10641066
super.onDestroy();
10651067
}
@@ -1072,6 +1074,10 @@ public void setFillScreenChangeListener(CFillScreenChangeListener fillScreenChan
10721074
this.fillScreenChangeListener = fillScreenChangeListener;
10731075
}
10741076

1077+
public void setAddAnnotCallback(CPDFAddAnnotCallback addAnnotCallback) {
1078+
this.addAnnotCallback = addAnnotCallback;
1079+
}
1080+
10751081
public interface CPDFDocumentFragmentInitListener {
10761082
void compile(CPDFViewCtrl pdfView);
10771083
}

ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/pdf/config/ReaderViewConfig.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ public class ReaderViewConfig implements Serializable {
4545

4646
public ArrayList<Integer> margins = new ArrayList<>();
4747

48+
public boolean annotationsVisible = true;
49+
50+
public boolean enableAutoCreateEditTextInput = true;
51+
4852
@NonNull
4953
@Override
5054
public String toString() {
@@ -62,7 +66,10 @@ public String toString() {
6266
"pageScale:" + pageScale + ", " +
6367
"pageSameWidth:" + pageSameWidth + ", " +
6468
"enableMinScale:" + enableMinScale + ", " +
65-
"margins:" + margins.toString();
69+
"margins:" + margins.toString() + ", " +
70+
"annotationsVisible:" + annotationsVisible + ", " +
71+
"enableAutoCreateEditTextInput:" + enableAutoCreateEditTextInput +
72+
"]";
6673
return stringBuilder;
6774
}
6875

ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/annotation/CPDFAnnotationManager.java

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,27 @@
1616
import android.graphics.PointF;
1717
import android.graphics.RectF;
1818

19+
import androidx.annotation.Nullable;
1920
import androidx.fragment.app.FragmentActivity;
2021
import androidx.fragment.app.FragmentManager;
2122

2223
import com.compdfkit.core.annotation.CPDFAnnotation;
24+
import com.compdfkit.core.annotation.CPDFAnnotation.Type;
2325
import com.compdfkit.core.annotation.CPDFFreetextAnnotation;
2426
import com.compdfkit.core.annotation.CPDFReplyAnnotation;
2527
import com.compdfkit.core.annotation.CPDFStampAnnotation;
2628
import com.compdfkit.core.annotation.CPDFTextAnnotation;
2729
import com.compdfkit.core.annotation.CPDFTextAttribute;
2830
import com.compdfkit.core.annotation.form.CPDFPushbuttonWidget;
31+
import com.compdfkit.core.annotation.form.CPDFWidget;
2932
import com.compdfkit.core.annotation.form.CPDFWidgetItems;
3033
import com.compdfkit.core.document.CPDFDestination;
3134
import com.compdfkit.core.document.CPDFDocument;
3235
import com.compdfkit.core.document.action.CPDFAction;
3336
import com.compdfkit.core.document.action.CPDFGoToAction;
3437
import com.compdfkit.core.document.action.CPDFUriAction;
38+
import com.compdfkit.core.edit.CPDFEditArea;
39+
import com.compdfkit.core.edit.CPDFEditTextArea;
3540
import com.compdfkit.core.page.CPDFPage;
3641
import com.compdfkit.core.utils.TMathUtils;
3742
import com.compdfkit.tools.R;
@@ -41,10 +46,17 @@
4146
import com.compdfkit.tools.common.contextmenu.CPDFContextMenuHelper;
4247
import com.compdfkit.tools.common.utils.CUriUtil;
4348
import com.compdfkit.tools.common.utils.viewutils.CViewUtils;
49+
import com.compdfkit.tools.common.views.pdfproperties.CTypeUtil;
4450
import com.compdfkit.tools.common.views.pdfproperties.action.CActionEditDialogFragment;
51+
import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.CAnnotStyle;
52+
import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.CStyleDialogFragment;
53+
import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.CStyleType;
54+
import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.manager.CStyleManager;
55+
import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.manager.provider.CEditSelectionsProvider;
4556
import com.compdfkit.tools.forms.pdfproperties.option.edit.CFormOptionEditFragment;
4657
import com.compdfkit.ui.attribute.CPDFFreetextAttr;
4758
import com.compdfkit.ui.attribute.CPDFTextAttr;
59+
import com.compdfkit.ui.edit.CPDFEditTextSelections;
4860
import com.compdfkit.ui.proxy.CPDFBaseAnnotImpl;
4961
import com.compdfkit.ui.proxy.CPDFFreetextAnnotImpl;
5062
import com.compdfkit.ui.reader.CPDFPageView;
@@ -354,5 +366,64 @@ public void showReplyDetailsDialog(CPDFPageView pageView, CPDFBaseAnnotImpl anno
354366
dialogFragment.show(helper.getFragmentManager(), "ReplyDetailsDialogFragment");
355367
}
356368

369+
public static void showPropertiesDialog(FragmentManager fragmentManager, CPDFAnnotation annotation, @Nullable CPDFPageView pageView){
370+
CStyleManager styleManager = new CStyleManager(annotation, pageView);
371+
CStyleType styleType;
372+
if (annotation.getType() == Type.WIDGET){
373+
CPDFWidget widget = (CPDFWidget) annotation;
374+
styleType = CTypeUtil.getFormStyleType(widget.getWidgetType());
375+
}else {
376+
styleType = CTypeUtil.getStyleType(annotation.getType());
377+
}
378+
CAnnotStyle annotStyle = styleManager.getStyle(styleType);
379+
CStyleDialogFragment styleDialogFragment = CStyleDialogFragment.newInstance(annotStyle);
380+
styleManager.setAnnotStyleFragmentListener(styleDialogFragment);
381+
if (pageView != null && pageView.getParentView() instanceof CPDFReaderView){
382+
styleManager.setDialogHeightCallback(styleDialogFragment,
383+
(CPDFReaderView) pageView.getParentView());
384+
}
385+
styleDialogFragment.show(fragmentManager, "propertiesDialog");
386+
}
387+
388+
public static void showPropertiesDialog(FragmentManager fragmentManager, CPDFBaseAnnotImpl annotImpl, @Nullable CPDFPageView pageView){
389+
CStyleManager styleManager = new CStyleManager(annotImpl, pageView);
390+
CStyleType styleType;
391+
if (annotImpl.getAnnotType() == Type.WIDGET){
392+
CPDFWidget widget = (CPDFWidget) annotImpl.onGetAnnotation();
393+
styleType = CTypeUtil.getFormStyleType(widget.getWidgetType());
394+
}else {
395+
styleType = CTypeUtil.getStyleType(annotImpl.getAnnotType());
396+
}
397+
CAnnotStyle annotStyle = styleManager.getStyle(styleType);
398+
CStyleDialogFragment styleDialogFragment = CStyleDialogFragment.newInstance(annotStyle);
399+
styleManager.setAnnotStyleFragmentListener(styleDialogFragment);
400+
if (pageView != null && pageView.getParentView() instanceof CPDFReaderView){
401+
styleManager.setDialogHeightCallback(styleDialogFragment,
402+
(CPDFReaderView) pageView.getParentView());
403+
}
404+
styleDialogFragment.show(fragmentManager, "propertiesDialog");
405+
}
406+
407+
public static void showPropertiesDialog(FragmentManager fragmentManager, CPDFEditArea editArea, @Nullable CPDFPageView pageView){
408+
CAnnotStyle annotStyle = null;
409+
CStyleManager styleManager;
410+
if (editArea instanceof CPDFEditTextArea){
411+
CPDFEditTextArea editTextArea = (CPDFEditTextArea) editArea;
412+
CPDFEditTextSelections textSelections = new CPDFEditTextSelections(pageView, editTextArea, ((CPDFEditTextArea) editArea).getCurrentAreaSelections());
413+
styleManager = new CStyleManager(textSelections, pageView);
414+
annotStyle = styleManager.getStyle(CStyleType.EDIT_TEXT);
415+
}else {
416+
styleManager = new CStyleManager(new CEditSelectionsProvider(null, pageView));
417+
annotStyle = styleManager.getStyle(CStyleType.EDIT_IMAGE);
418+
}
419+
CStyleDialogFragment dialogFragment = CStyleDialogFragment.newInstance(annotStyle);
420+
styleManager.setAnnotStyleFragmentListener(dialogFragment);
421+
if (pageView != null && pageView.getParentView() instanceof CPDFReaderView){
422+
styleManager.setDialogHeightCallback(dialogFragment,
423+
(CPDFReaderView) pageView.getParentView());
424+
}
425+
dialogFragment.show(fragmentManager, "propertiesDialog");
426+
}
427+
357428

358429
}

ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/pdfstyle/manager/CStyleManager.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,16 @@ public CStyleManager(CPDFBaseAnnotImpl annotImpl, PageView pageView) {
6868
}
6969
}
7070

71+
public CStyleManager(CPDFAnnotation annotation, PageView pageView) {
72+
if (annotation.getType() == CPDFAnnotation.Type.WIDGET) {
73+
this.styleProxy = new CSelectedFormStyleProvider(annotation, pageView);
74+
} else {
75+
this.styleProxy = new CSelectedAnnotStyleProvider(annotation, pageView);
76+
}
77+
}
78+
79+
80+
7181
public void updateStyle(CAnnotStyle style) {
7282
LinkedHashSet<CAnnotStyle> linkedHashSet = new LinkedHashSet<>();
7383
linkedHashSet.add(style);

0 commit comments

Comments
 (0)