Integrar MuPDF Reader en una aplicación
Estoy trabajando en algunas cosas que deben ser capaces de leer PDF en mi aplicación y quiero poner la vista PDF en mi diseño personalizado . Había preferido Android PDF Viewer pero cuando realicé zoomIn , zoomOut toma demasiado tiempo .
Así que actualmente se supone que debo usar MuPDF proyecto de código abierto para integrar en mi proyecto, se basa en JNI y no estoy acostumbrado.
- APV lector pdf. Problemas de instalación, descompresión y biblioteca nativa
- API o bibliotecas para la vista de pdf desde url en Android
- Pdf visor de la biblioteca con curl de página en android
- ¿Es posible crear un visor de PDF en Android?
- Android: ¿Existe alguna biblioteca PDF gratuita para Android
Estoy usando Cygwin para construir la biblioteca para el código nativo. Por lo tanto, no estoy claro con pocas cosas:
-
Cómo integrar el MuPDF en mi proyecto (según el título de mi pregunta)?
-
Una vez que tenga éxito para integrarlo entonces cómo puedo poner lector de PDF en mi vista personalizada (en el XML o programmaticaly)?
- MuPDF Android Library Vertical Scroll
- Cómo utilizar TTS (TextToSpeech) mientras que la cadena tiene más de 4000 caracteres en Android
- Obtener la imagen de dibujable y añadir a PDF utilizando iText
- Visualización de un archivo PDF en Android
- Lectura de PDF desde la carpeta de activos usando PDFViewer.jar
- Abrir pdf con openwith opción android
- Cómo puedo convertir un mapa de bits en formato PDF en android
- Cómo generar archivos PDF con la imagen en android?
No sé cómo hacer esto en Windows usando cygwin, porque estoy usando Ubuntu para el desarrollo. Pero creo que el procedimiento debe ser el mismo.
- Descargue el archivo mupdf-0.9-source.tar.gz aquí: http://code.google.com/p/mupdf/downloads/list?q=source
- Descargue el archivo mupdf-thirdparty.zip
- Extraer las fuentes. Por defecto se extraerán a la carpeta: mupdf-0.9 /
- Extraiga el archivo mupdf-thirdparty.zip en la carpeta mupdf-0.9 /
- Construir el proyecto mupdf-0.9 (Para las ventanas que debe utilizar VS como se declara en los archivos readme)
- Luego vaya a la carpeta mupdf-0.9 / android /
- Ejecutar ndk-build
- Puede obtener los siguientes errores:
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
La solución se explica aquí: mupdf para android: ndk-build problema (error: redefinición de typedef ….) Sin embargo, usted puede simplemente comentar las líneas de la definición de tipos en el archivo /thirdparty/jbig2dec/os_types.h
Después de eso recibirás dos bibliotecas: una estática y otra compartida para tu aplicación android.
StaticLibrary : libmupdfthirdparty.a SharedLibrary : libmupdf.so
Esta fue la respuesta a la primera pregunta. También hay una gran guía paso a paso en el archivo android / Readme.txt.
Ahora la respuesta a la segunda pregunta. En la aplicación para Android se puede encontrar el proyecto de prueba. Hay 3 archivos:
- MuPDFActivity.java
- MuPDFCore.java
- PixmapView.java
Simplemente copie los dos últimos archivos en su proyecto. Y ver un ejemplo en MuPDFActivity.java cómo se puede incrustar el diseño mupdf en su actividad. En este archivo se hace como:
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);
Algunos de los archivos de código fuente para el visor de PDF en la aplicación de Android. Compruebe los enlaces y pruébelo:
http://code.google.com/p/apv/source/browse/
http://code.google.com/p/android-pdf/
http://code.google.com/p/droidreader/
http://andpdf.sourceforge.net/
http://soft.udm4.com/downloading/pdf_viewer_open_source_code_in_android/ (enlace muerto)
http://open-app.org/2011/02/pdf-viewer-a-simple-open-source-pdf-viewer-for-android/ (enlace muerto)
http://androidunderground.blogspot.com/2011/08/pdf-viewer-has-colors-and-speed-but.html (enlace muerto)
Así es como logro en mi mac (2012, intel i5):
Paso 1: Obtenga mupdf-1.2-source.zip
Paso 2: Obtener android-ndk-mac-64
Paso 3: descomprima ambos en la nueva carpeta llamada Android-pdf
y cambie el nombre de la carpeta unzip a mupdf
y android-ndk
(puede llamarlos lo que quiera)
Paso 4: abra Terminal y utilice comando: cd
hasta que esté en la carpeta android-pdf
Paso 5: cd mupdf
que comando: make
(tardará unos 40 segundos en ejecutar todos los scripts)
Paso 6: cd android
(dentro de mupdf
dir.)
Paso 7: abrir el buscador ir a la carpeta Android-pdf
que creó que android-ndk
arrastre archivo llamar a ndk-build
en la línea de comandos de terminal y entrar (básicamente añadiendo una ruta a ndk-build para operar en lib mupdf).
Y después de pocos segundos. Usted debe tener una nueva carpeta dentro de mupdf > android > libs > ...
usar eso en su proyecto android.
Cómo utilizar MuPDF con su proyecto Eclipse EXISTENTE:
- Copie la carpeta 'jni' de la carpeta / android en su proyecto Eclipse existente.
- Copie la carpeta / thirdparty en la carpeta 'jni' de su proyecto.
- Copie la carpeta / cbz en la carpeta 'jni' de su proyecto.
- Copie la carpeta / draw en la carpeta 'jni' de su proyecto.
- Copie la carpeta / fitz en la carpeta 'jni' en su proyecto.
- Copie la carpeta / generated en la carpeta 'jni' en su proyecto.
- Copie la carpeta / pdf en la carpeta 'jni' en su proyecto.
- Copie la carpeta / scripts en la carpeta 'jni' de su proyecto.
- Copie la carpeta / xps en la carpeta 'jni' de su proyecto.
- Abra 'Android.mk' dentro de la carpeta 'jni'.
-
Cambio
MUPDF_ROOT: = ..
a
MUPDF_ROOT := $(TOP_LOCAL_PATH)
- Guardar 'Android.mk'.
- Abra 'Core.mk' dentro de la carpeta 'jni'.
-
Cambio
Mi parte
a
MY_ROOT := $(LOCAL_PATH)
-
Cambiar todos los
..
En LOCAL_C_INCLUDES para
$(LOCAL_PATH)
- Guardar 'Core.mk'.
- Abra 'ThirdParty.mk' dentro de la carpeta 'jni'.
-
Cambio
Mi parte
a
MY_ROOT := $(LOCAL_PATH)
-
Cambiar todos los
..
En LOCAL_C_INCLUDES para
$(LOCAL_PATH)
- Guardar "ThirdParty.mk".
- Ahora ejecute 'ndk-build' en el directorio 'jni' de su proyecto.
- Copie todo en la carpeta / android / src en la carpeta 'src' en su proyecto.
- Copie todo en la carpeta / android / res / drawable en la carpeta 'res / drawable' de su proyecto.
- Copie todo en la carpeta / android / res / drawable-ldpi en la carpeta 'res / drawable-ldpi' de su proyecto.
- Copie todo en la carpeta / android / res / drawable-mdpi en la carpeta 'res / drawable-mdpi' en su proyecto.
- Copie todo en la carpeta / android / res / layout EXCEPT main.xml (porque si está copiando en un proyecto existente entonces debería tener su propio main.xml o equivalente) en la carpeta 'res / layout' de su proyecto.
- Copie todo en la carpeta / android / res / values en la carpeta 'res / values' de su proyecto. Si ya tiene un 'strings.xml' en su proyecto existente, copie todo entre las etiquetas en su /android/res/values/strings.xml en strings.xml de su proyecto (pegue entre las etiquetas). Del mismo modo con el 'colors.xml', si ya tienes un 'colors.xml' en tu proyecto existente, copia todo entre las '' etiquetas en tu /android/res/values/strings.xml en strings.xml de tu proyecto (Pegar entre las etiquetas).
- Abra el 'AndroidManifest.xml' en el proyecto.
-
Entre las etiquetas '' pega toda la lista de actividades de
AndroidManifest.xml
dentro de la carpeta / android, debes copiar desde tu copia de trabajo de AndroidManifest.xml dentro de mupdf. -
MuPDF ahora en su proyecto existente de Eclipse. Para usarlo, llame a
com.artifex.mupdf.ChoosePDFActivity.class
en su aplicación. Esta es la clase principal para MuPDF. -
Para abrir pdf con un archivo de pre-arreglo:
Uri uri = Uri.parse ("ruta al archivo pdf");
Intención intention = new Intent (contexto, MuPDFActivity.class);
Intent.setAction (Intent.ACTION_VIEW);
Intent.setData (uri);
Context.startActivity (intención);
Espero que esto ayude 🙂
Compruebe este proyecto eBookDroid
EBookDroid es un visualizador de documentos de código abierto (GPL) para Android basado en la base de código VuDroid.
Soporta el archivo en los siguientes formatos:
PDF DjVu XPS (OpenXPS) comics books (cbz,cbr)
Tengo view pager en mi aplicación. Necesito mostrar archivos pdf en cada fragmento en vista pager.is hay manera de obtener una vista de pdf desde mupdf
? Normalmente llamamos mupdf
como a continuación
Uri uri = Uri.parse("path to pdf file"); Intent intent = new Intent(context, MuPDFActivity.class); intent.setAction(Intent.ACTION_VIEW); intent.setData(uri); context.startActivity(intent);
Así que si uso mupdf
para mi aplicación tengo que llamar a MuPDFActivity
en cada fragmento. Creo que no es una manera correcta?
La respuesta dada por star18bit
casi lo resume, pero incluso después de que me enfrenté a un montón de problemas.
Al igual que el comando make
no funcionó para mí y tuve que construirlo con Visual Studio. Así que enumeré todos los softwares pre-req. Como ANT. También necesitamos agregar las carpetas de la carpeta sdk y las carpetas de tools
platform-tools
en PATH.
Además, tuve que hacer los cambios en el archivo Core2.mk
, los mismos en Core.mk
No puedo dar toda la información aquí, porque es mucho, por lo que me refiero a este enlace para obtener información completa:
http://howtojava.net/tutorials/android/integrate-mupdf-with-android-in-windows-7
- No se puede subir la aplicación de Android al dispositivo (frascos de dexed rancio)
- Cómo llamar a getResources () de una clase que no tiene contexto?