繁体   English   中英

MuPdf注释后保存文件

[英]MuPdf save file after annotation android

我正在使用mupdf库进行注释。 在注释后,当我们在下面的代码上对mupdfactivity反压时,将其编写为

@Override
public void onBackPressed() {
    if (core != null && core.hasChanges()) {
        DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                if (which == AlertDialog.BUTTON_POSITIVE)
                    core.save();

                finish();
            }
        };
        AlertDialog alert = mAlertBuilder.create();
        alert.setTitle("Save Changes");
        alert.setMessage(getString(R.string.document_has_changes_save_them_));
        alert.setButton(AlertDialog.BUTTON_POSITIVE,
                getString(R.string.yes), listener);
        alert.setButton(AlertDialog.BUTTON_NEGATIVE,
                getString(R.string.no), listener);
        alert.show();
    } else {
        super.onBackPressed();
    }
}

但是,当我单击core.save()方法时,它会将我重定向到MuPdfCore.java中的本机函数主体。

private native void saveInternal();

我想更改保存文件的路径。 搜索此方法的实现,在哪里可以获取save方法的实现? 是否有人为此工作?

提前致谢

您可以在platform/android/jni/mupdf.c找到正在查找的函数以及所有其他被称为Java端的本机函数。

您可以通过将该函数的声明更改为来修改此函数以接受新路径

JNI_FN(MuPDFCore_saveAsInternal)(JNIEnv *env, jobject thiz, jstring jpath)

然后可以通过以下声明使该函数可被Java端访问:

private native int saveAsInternal(String path);

MuPDFCore类中。

在C代码中,您可以通过以下方式获取作为Java字符串传递的路径:

const char *new_path = NULL;                                                            
if (jpath != NULL) {
    public static native boolean javascriptSupported();
    new_path = (*env)->GetStringUTFChars(env, jpath, NULL);
}

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM