使用PSPDFKit

时间:2017-11-06 17:01:19

标签: android pspdfkit

我正在调查PDF库 PSPDFKit for Android

// Inside my app's dependencies {}
implementation 'com.pspdfkit:pspdfkit-demo:4.0.2'

图书馆令人印象深刻,有许多有价值的功能和#34; Out Of The Box"。 但是,我遇到了在创建Note Annotations时显示的Dialog Fragment问题。

我需要有一个自定义的对话框UI,因为我的应用程序显示的PDF允许多个用户添加/编辑注释。这需要在编辑注释时显示的对话框包含用户配置文件图像和创建注释的全名。

我在我的应用程序中使用com.pspdfkit.ui.PdfFragment作为子片段,并且在创建和/或编辑注释注释时无法看到任何允许我提供自定义dialogFragment的方法。

是否可以自定义在PSPDFKit中创建/编辑Note片段时显示的对话框片段?

从我所看到的源代码,我需要在PSPDFKit中覆盖这个方法。

public void enterAnnotationCreationMode(@NonNull final AnnotationTool annotationTool) {
        this.viewCoordinator.a(new b() {
            public void run(@NonNull FrameLayout container, @NonNull PdfPasswordView passwordView, @NonNull View errorView, @NonNull final DocumentView documentView) {
                el var10000 = com.pspdfkit.framework.a.d();
                PdfFragment.this.getContext();
                if(var10000.a(PdfFragment.this.configuration)) {
                    if(!PdfFragment.this.getAnnotationPreferences().isAnnotationCreatorSet()) {
                        AnnotationCreatorInputDialogFragment.show(PdfFragment.this.getActivity().getSupportFragmentManager(), (String)null, new OnAnnotationCreatorSetListener() {
                            public void onAnnotationCreatorSet(String annotationCreator) {
                                documentView.enterAnnotationCreationMode(annotationTool);
                            }

                            public void onAbort() {
                            }
                        });
                        com.pspdfkit.framework.a.f().a("show_annotation_creator_dialog").a();
                    } else {
                        documentView.enterAnnotationCreationMode(annotationTool);
                    }
                } else {
                    throw new PSPDFKitException("Entering annotation creation mode for " + annotationTool + " is not permitted, either by the license or configuration.");
                }
            }
        }, true);
    }

1 个答案:

答案 0 :(得分:1)

As of PSPDFKit 4.0.2 there is no way to replace the note annotation editor UI. In general, it is a good idea to directly contact the PSPDFKit support for missing features at https://pspdfkit.com/support/request/

然而,PSPDFKit团队已经对此进行了跟踪,并且很可能在未来版本中提供。

作为解决方法:您可以实施自定义备注操作并将其添加到AnnotationCreationToolbar。关于如何使用工具栏分组API修改工具栏上的操作,guide articleQTabWidget vs QTabBar and QStackedWidget。这可用于删除现有操作并添加新操作。

使用OnContextualToolbarLifecycleListener您可以注册自定义过滤器逻辑,删除默认的注释操作并将其替换为您的自定义逻辑(然后将显示您的自定义对话框)。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        toolbarCoordinatorLayout.setOnContextualToolbarLifecycleListener(this);
    }

    @Override
    public void onPrepareContextualToolbar(@NonNull ContextualToolbar toolbar) {
        if (toolbar instanceof AnnotationCreationToolbar) {
            toolbar.setMenuItemGroupingRule(new CustomNoteAnnotationActionRule(this));
        }
    }

然后,您可以在按下自定义备注图标时注册,以切换到#34;备注创建模式"。每当调用DocumentListener#onPageClick()时,您就可以显示自定义注释创建UI。