tercero refuerzo pienso mutool mates diversidad bibliocad android pdf android-ndk render mupdf
mupdf-1.2-source.zip

android - pienso - bibliocad mu mupdf tercero mates refuerzo



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:

  1. ¿Cómo integrar el MuPDF en mi proyecto (según el título de mi pregunta)?

  2. 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:

  1. Copie la carpeta ''jni'' de la carpeta / android en su proyecto Eclipse existente.
  2. Copie la carpeta / thirdparty en la carpeta ''jni'' de su proyecto.
  3. Copie la carpeta / cbz en la carpeta ''jni'' de su proyecto.
  4. Copie la carpeta / draw en la carpeta ''jni'' de su proyecto.
  5. Copie la carpeta / fitz en la carpeta ''jni'' de su proyecto.
  6. Copie la carpeta / generated en la carpeta ''jni'' de su proyecto.
  7. Copie la carpeta / pdf en la carpeta ''jni'' de su proyecto.
  8. Copie la carpeta / scripts en la carpeta ''jni'' de su proyecto.
  9. Copie la carpeta / xps en la carpeta ''jni'' de su proyecto.
  10. Abra ''Android.mk'' dentro de la carpeta ''jni''.
  11. Cambio

    MUPDF_ROOT: = ..

a

MUPDF_ROOT := $(TOP_LOCAL_PATH)

  1. Guarde ''Android.mk''.
  2. Abra ''Core.mk'' dentro de la carpeta ''jni''.
  3. Cambio

    MY_ROOT: = ../ ..

a

MY_ROOT := $(LOCAL_PATH)

  1. Cambiar todo el

    ..

en LOCAL_C_INCLUDES a

$(LOCAL_PATH)

  1. Guarde ''Core.mk''.
  2. Abra ''ThirdParty.mk'' dentro de la carpeta ''jni''.
  3. Cambio

    MY_ROOT: = ../ ..

a

MY_ROOT := $(LOCAL_PATH)

  1. Cambiar todo el

    ..

en LOCAL_C_INCLUDES a

$(LOCAL_PATH)

  1. Guardar ''ThirdParty.mk''.
  2. Ahora ejecuta ''ndk-build'' en el directorio ''jni'' de tu proyecto.
  3. Copie todo en la carpeta / android / src en la carpeta ''src'' de su proyecto.
  4. Copie todo en la carpeta / android / res / drawable en la carpeta ''res / drawable'' de su proyecto.
  5. Copie todo en la carpeta / android / res / drawable-ldpi en la carpeta ''res / drawable-ldpi'' de su proyecto.
  6. Copie todo en la carpeta / android / res / drawable-mdpi en la carpeta ''res / drawable-mdpi'' de su proyecto.
  7. 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.
  8. 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).
  9. Abra el ''AndroidManifest.xml'' en el proyecto.
  10. 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.

  11. 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.

  12. 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.

  1. Descargue el archivo mupdf-0.9-source.tar.gz aquí: http://code.google.com/p/mupdf/downloads/list?q=source
  2. Descargue el archivo mupdf-thirdparty.zip
  3. Extrae las fuentes. Por defecto, serán extraídos a la carpeta: mupdf-0.9 /
  4. Extraiga el archivo mupdf-thirdparty.zip en la carpeta mupdf-0.9 /
  5. Cree el proyecto mupdf-0.9 (para Windows, debe usar VS tal como se declara en los archivos Léame)
  6. Luego ve a la carpeta mupdf-0.9 / android /
  7. Ejecute ndk-build
  8. 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?