Je travaille sur des trucs qui devraient pouvoir lire PDF dans mon application et je veux mettre PDF voir dans mon mise en page personnalisée. J'avais préféré Android PDF Viewer mais quand j'ai effectué zoomIn, zoomOut cela prend trop temps.
Donc actuellement, je suis censé utiliser MuPDF projet open source pour l'intégrer dans mon projet, il est basé sur JNI et je ne suis pas utilisé à elle.
J'utilise Cygwin pour construire la bibliothèque de code natif. Par conséquent, je ne suis pas clair avec peu de choses:
comment intégrer le MuPDF dans mon projet (selon le titre de ma question)?
une fois que je réussirai à l'intégrer, comment puis-je mettre PDF dans mon vue personnalisée (dans le XML ou par programmation)?
Je ne sais pas comment faire cela dans Windows en utilisant cygwin, car j'utilise Ubuntu pour le développement. Mais je pense que la procédure devrait être la même.
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 solution est expliquée ici: mupdf pour Android: problème de construction de ndk (erreur: redéfinition de typedef ....) Cependant, vous pouvez simplement commenter les lignes de la définition des types dans le fichier/tierce partie /jbig2dec/os_types.h
Après cela, vous recevrez deux bibliothèques: une statique et une partagée pour votre application Android.
StaticLibrary : libmupdfthirdparty.a
SharedLibrary : libmupdf.so
C'était la réponse à la première question. Il existe également un excellent guide étape par étape dans le fichier Android/Readme.txt.
Maintenant, la réponse à la deuxième question. Dans l'application pour Android vous pouvez trouver un projet de test. Il y a 3 fichiers:
Copiez simplement les deux derniers fichiers de votre projet. Et voyez un exemple dans MuPDFActivity.Java sur la façon dont vous pouvez intégrer la mise en page mupdf dans votre activité. Dans ce fichier, cela se fait comme:
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);
Certains des fichiers de code source pour PDF dans Android. Vérifiez les liens et essayez-le:
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/ (lien mort)
http://open-app.org/2011/02/pdf-viewer-a-simple-open-source-pdf-viewer-for-Android/ (lien mort)
http://androidunderground.blogspot.com/2011/08/pdf-viewer-has-colors-and-speed-but.html (lien mort)
Voici comment je réalise sur mon mac (2012, intel i5):
Étape 1: Obtenez mupdf-1.2-source.Zip
Étape 2: Obtenez Android-ndk-mac-64
Étape 3: décompressez-les tous les deux dans un nouvel appel de dossier Android-pdf
et renommer le dossier de décompression en mupdf
et Android-ndk
(vous pouvez les appeler comme bon vous semble)
Étape 4: ouvrez Terminal et utilisez la commande: cd
jusqu'à ce que vous soyez dans Android-pdf
dossier
Étape 5: commande cd mupdf
than: make
(il faudra environ 40 secondes pour exécuter tous les scripts)
Étape 6: cd Android
(dans le répertoire mupdf
)
Étape 7: ouvrez le Finder, allez dans le dossier Android-pdf
que vous avez créé que Android-ndk
faites glisser l'appel de fichier ndk-build
dans la ligne de commande du terminal et entrez (en gros, ajoutez un chemin vers ndk-build pour fonctionner sur mupdf lib.)
et après quelques secondes. vous devriez avoir un nouveau dossier dans mupdf > Android > libs > ...
utilisez-le dans votre projet Android.
Comment utiliser MuPDF avec votre projet Eclipse EXISTANT:
Changement
MUPDF_ROOT: = ..
à
MUPDF_ROOT := $(TOP_LOCAL_PATH)
Changement
MY_ROOT: = ../ ..
à
MY_ROOT := $(LOCAL_PATH)
Changer tous les
..
dans LOCAL_C_INCLUDES à
$(LOCAL_PATH)
Changement
MY_ROOT: = ../ ..
à
MY_ROOT := $(LOCAL_PATH)
Changer tous le
..
dans LOCAL_C_INCLUDES à
$(LOCAL_PATH)
Entre les balises '', collez toute la liste des activités de
AndroidManifest.xml
dans le dossier/Android, Vous devez copier à partir de votre copie de travail d'AndroidManifest.xml dans mupdf.
MuPDF est maintenant dans votre projet Eclipse existant. Pour l'utiliser, appelez com.artifex.mupdf.ChoosePDFActivity.class
dans votre candidature. Il s'agit de la classe principale pour MuPDF.
Pour ouvrir un fichier PDF avec un fichier préfixé:
Uri uri = Uri.parse ("chemin vers le fichier pdf");
Intention intention = new Intent (context, MuPDFActivity.class);
intent.setAction (Intent.ACTION_VIEW);
intent.setData (uri);
context.startActivity (intention);
J'espère que cette aide :)
Vérifiez ce projet eBookDroid
EBookDroid est un visualiseur de documents open source (sous GPL) pour Android basé sur la base de code VuDroid.
Pris en charge le fichier dans les formats suivants:
PDF DjVu XPS (OpenXPS) comics books (cbz,cbr)
J'ai un téléavertisseur dans mon application. J'ai besoin d'afficher des fichiers pdf sur chaque fragment dans la vue pager.y a-t-il un moyen d'obtenir une vue pdf à partir de mupdf
? normalement nous appelons mupdf
comme ci-dessous
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);
Donc, si j'utilise mupdf
pour mon application, je dois appeler MuPDFActivity
sur chaque fragment. Je pense que ce n'est pas une bonne façon?
La réponse donnée par star18bit
Résume à peu près, mais même en suivant que j'ai fait face à beaucoup de problèmes.
Comme la commande make
n'a pas fonctionné pour moi et j'ai dû la construire à l'aide de Visual Studio. J'ai donc répertorié tous les logiciels pré-requis. Comme ANT. Nous devons également ajouter les dossiers tools
et platform-tools
Du dossier sdk dans PATH.
De plus, j'ai dû faire les changements dans le fichier Core2.mk
, Les mêmes dans Core.mk
. Je ne peux pas donner toutes les informations ici, car c'est beaucoup, donc je renvoie ce lien pour des informations complètes:
http://howtojava.net/tutorials/Android/integrate-mupdf-with-Android-in-windows-7