android - pienso - bibliocad mu mupdf tercero mates refuerzo
Integra el lector MuPDF en una aplicación (6)
Algunos de los archivos de código fuente para el visor de PDF en la aplicación de Android. Verifique 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 inactivo)
http://open-app.org/2011/02/pdf-viewer-a-simple-open-source-pdf-viewer-for-android/ (enlace http://open-app.org/2011/02/pdf-viewer-a-simple-open-source-pdf-viewer-for-android/ )
http://androidunderground.blogspot.com/2011/08/pdf-viewer-has-colors-and-speed-but.html (vínculo inactivo)
Estoy trabajando en algunas cosas que deberían poder leer PDF en mi aplicación y quiero poner la vista de PDF en mi diseño personalizado . Prefiero Android PDF Viewer, pero cuando realicé el zoomIn , zoomOut lleva demasiado tiempo .
Así que actualmente se supone que debo usar el proyecto de código abierto MuPDF para integrarlo en mi proyecto, está basado en JNI y no estoy acostumbrado.
Estoy usando Cygwin para construir la biblioteca para el código nativo. Por lo tanto, no estoy seguro con algunas cosas:
¿Cómo integrar el MuPDF en mi proyecto (según el título de mi pregunta)?
una vez que tenga éxito para integrarlo, ¿cómo puedo poner el lector de PDF en mi vista personalizada (en XML o programáticamente)?
Así es como lo logro en mi mac (2012, intel i5):
Paso 1: Obtenga mupdf-1.2-source.zip
Paso 2: Obtén android-ndk-mac-64
Paso 3: descomprímalos en la nueva carpeta llamada Android-pdf
y cambie el nombre de la carpeta descomprimir a mupdf
y android-ndk
(puede llamarlos como prefiera)
Paso 4: abra Terminal y use el comando: cd
hasta que esté en la carpeta android-pdf
Paso 5: cd mupdf
than command: make
(tardará aproximadamente 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 creaste que android-ndk
arrastrar archivo. Llamar ndk-build
a la línea de comando del terminal e ingresar (básicamente agregando una ruta a ndk-build para operar en mupdf lib).
y después de algunos segundos deberías tener una nueva carpeta dentro de mupdf > android > libs > ...
usar eso en tu proyecto de Android.
Cómo usar MuPDF con su proyecto EXISTING Eclipse:
- 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'' de su proyecto.
- Copie la carpeta / generated en la carpeta ''jni'' de su proyecto.
- Copie la carpeta / pdf en la carpeta ''jni'' de 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)
- Guarde ''Android.mk''.
- Abra ''Core.mk'' dentro de la carpeta ''jni''.
Cambio
MY_ROOT: = ../ ..
a
MY_ROOT := $(LOCAL_PATH)
Cambiar todo el
..
en LOCAL_C_INCLUDES a
$(LOCAL_PATH)
- Guarde ''Core.mk''.
- Abra ''ThirdParty.mk'' dentro de la carpeta ''jni''.
Cambio
MY_ROOT: = ../ ..
a
MY_ROOT := $(LOCAL_PATH)
Cambiar todo el
..
en LOCAL_C_INCLUDES a
$(LOCAL_PATH)
- Guardar ''ThirdParty.mk''.
- Ahora ejecuta ''ndk-build'' en el directorio ''jni'' de tu proyecto.
- Copie todo en la carpeta / android / src en la carpeta ''src'' de 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'' de su proyecto.
- Copie todo en la carpeta / android / res / layout EXCEPTO main.xml (porque si está copiando en un proyecto existente, entonces ya 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 el strings.xml de su proyecto (pegue entre las '''' etiquetas). De forma similar con el ''colors.xml'', si ya tiene un ''colors.xml'' en su proyecto existente, copie todo entre las '''' etiquetas en su /android/res/values/strings.xml en las cadenas de su proyecto.xml (pegar entre las '''' etiquetas).
- Abra el ''AndroidManifest.xml'' en el proyecto.
Entre las etiquetas '''', pegue toda la lista de actividades de
AndroidManifest.xml
dentro de la carpeta / android, debe copiar desde su copia de trabajo de AndroidManifest.xml dentro de mupdf.MuPDF ahora en su proyecto Eclipse existente. Para usarlo,
com.artifex.mupdf.ChoosePDFActivity.class
en su aplicación. Esta es la clase principal para MuPDF.Para abrir el pdf con el archivo previo a la reparación:
Uri uri = Uri.parse ("ruta al archivo pdf");
Intent intennt = new Intent (contexto, MuPDFActivity.class);
intent.setAction (Intent.ACTION_VIEW);
intent.setData (uri);
context.startActivity (intencion);
Espero que esto ayude :)
La respuesta dada por star18bit
casi lo resume, pero incluso después de que me enfrenté a muchos problemas.
Al igual que el comando make
no funcionó para mí y tuve que construirlo usando Visual Studio. Así que enumeré todos los softwares pre-obligatorios. Como ANT. También necesitamos agregar las tools
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, así que refiero este enlace para obtener información completa:
http://howtojava.net/tutorials/android/integrate-mupdf-with-android-in-windows-7
Mira este proyecto eBookDroid
EBookDroid es un visor de documentos de código abierto (GPL) para Android basado en la base de código VuDroid.
Soportó el archivo en los siguientes formatos:
PDF DjVu XPS (OpenXPS) comics books (cbz,cbr)
No sé cómo hacer esto en Windows usando cygwin, porque estoy usando Ubuntu para el desarrollo. Pero creo que el procedimiento debería 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
- Extrae las fuentes. Por defecto, serán extraídos a la carpeta: mupdf-0.9 /
- Extraiga el archivo mupdf-thirdparty.zip en la carpeta mupdf-0.9 /
- Cree el proyecto mupdf-0.9 (para Windows, debe usar VS tal como se declara en los archivos Léame)
- Luego ve a la carpeta mupdf-0.9 / android /
- Ejecute 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: problema ndk-build (error: redefinición de typedef ....) Sin embargo, simplemente puede comentar las líneas de la definición de tipos en el archivo /thirdparty/jbig2dec/os_types.h
Después de eso, recibirá dos bibliotecas: una estática y otra compartida para su aplicación de Android.
StaticLibrary : libmupdfthirdparty.a
SharedLibrary : libmupdf.so
Esta fue la respuesta en 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 puedes encontrar un proyecto de prueba. Hay 3 archivos:
- MuPDFActivity.java
- MuPDFCore.java
- PixmapView.java
Simplemente copie los dos últimos archivos en su proyecto. Y vea un ejemplo en MuPDFActivity.java de cómo puede incrustar el diseño de 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);
Tengo un buscapersonas en mi aplicación. Necesito mostrar archivos PDF en cada fragmento en el buscador de la vista. ¿Hay alguna forma de obtener una vista en PDF desde mupdf
? normalmente llamamos mupdf
como abajo
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);
Entonces, si uso mupdf
para mi aplicación, tengo que llamar a MuPDFActivity
en cada fragmento. ¿Creo que no es una forma correcta?