I am working on some stuff that should be able to read PDF in my app and I want to put PDF view in my custom layout. I had preferred Android PDF Viewer but when I performed zoomIn, zoomOut it takes too much time.
So currently I am supposed to use MuPDF open source project to integrate in my project, it's based on JNI and I am not used to it.
I am using Cygwin to build the library for native code. Hence I am unclear with few things:
how to integrate the MuPDF in my project (as per my question title)?
once I will succeed to integrated it then how can I put PDF reader in my custom view (in the XML or programmaticaly)?
I don't know how to do this in Windows using cygwin, because I'm using Ubuntu for the development. But I think the procedure should be the same.
Compile thumb : mupdfthirdparty <= jbig2.c
In file included from /home/yury/programming/android/workspace/mupdf-0.9/android/jni/../../thirdparty/jbig2dec/os_types.h:53,
from /home/yury/programming/android/workspace/mupdf-0.9/android/jni/../../thirdparty/jbig2dec/jbig2.c:22:
/home/yury/software/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/stdint.h:48: error: redefinition of typedef 'int8_t'
/home/yury/programming/android/workspace/mupdf-0.9/android/jni/../../thirdparty/jbig2dec/os_types.h:47: note: previous declaration of 'int8_t' was here
The solution is explained here: mupdf for android: ndk-build problem (error: redefinition of typedef....) However, you can simply comment the lines of the definition of types in the file /thirdparty/jbig2dec/os_types.h
After that you will receive two libraries: one static and one shared for your android application.
StaticLibrary : libmupdfthirdparty.a
SharedLibrary : libmupdf.so
This was the answer on the first question. Also there is a great step-by-step guide in the android/Readme.txt file.
Now the answer on the second question. In the application for android you can find test project. There are 3 files:
Simply copy the last two files in your project. And see an example in MuPDFActivity.java how you can embed mupdf layout in your activity. In this file it is done like:
PixmapView pixmapView;
//...
layout = new RelativeLayout(this);
//...
RelativeLayout.LayoutParams pixmapParams =
new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.FILL_PARENT,
RelativeLayout.LayoutParams.FILL_PARENT);
pixmapParams.addRule(RelativeLayout.ABOVE,100);
layout.addView(pixmapView, pixmapParams);
setContentView(layout);