Интеграция MuPDF Reader в приложении

Я работаю над некоторыми материалами, которые должны иметь возможность читать PDF в моем приложении, и я хочу поместить PDF-представление в свой собственный макет . Я предпочел Android PDF Viewer, но когда я выполнил zoomIn , zoomOut требуется слишком много времени .

Поэтому в настоящее время я должен использовать проект open source MuPDF для интеграции в мой проект, он основан на JNI, и я не привык к нему.

Я использую Cygwin для сборки библиотеки для собственного кода. Поэтому я не совсем понимаю,

  1. Как интегрировать MuPDF в мой проект (согласно моему названию вопроса)?

  2. Как только мне удастся интегрировать его, тогда как я могу поместить PDF-Reader в свое пользовательское представление (в XML или программном)?

Solutions Collecting From Web of "Интеграция MuPDF Reader в приложении"

Я не знаю, как это сделать в Windows с помощью cygwin, потому что я использую Ubuntu для разработки. Но я думаю, что процедура должна быть одинаковой.

  1. Загрузите файл mupdf-0.9-source.tar.gz здесь: http://code.google.com/p/mupdf/downloads/list?q=source
  2. Загрузите файл mupdf-thirdparty.zip
  3. Извлеките источники. По умолчанию они будут извлечены в папку: mupdf-0.9 /
  4. Извлеките файл mupdf-thirdparty.zip в папку mupdf-0.9 /
  5. Создайте проект mupdf-0.9 (для окон вы должны использовать VS, поскольку он объявлен в файлах readme)
  6. Затем перейдите в папку mupdf-0.9 / android /
  7. Запустить ndk-build
  8. Вы можете получить следующие ошибки:

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

Решение объясняется здесь: mupdf для android: проблема ndk-build (ошибка: переопределение typedef ….) Однако вы можете просто прокомментировать строки определения типов в файле /thirdparty/jbig2dec/os_types.h

После этого вы получите две библиотеки: одну статическую и одну общую для вашего приложения для Android.

 StaticLibrary : libmupdfthirdparty.a SharedLibrary : libmupdf.so 

Это был ответ на первый вопрос. Также есть большое пошаговое руководство в файле android / Readme.txt.

Теперь ответ на второй вопрос. В приложении для Android вы можете найти тестовый проект. Есть 3 файла:

  • MuPDFActivity.java
  • MuPDFCore.java
  • PixmapView.java

Просто скопируйте два последних файла в свой проект. И посмотрите пример в MuPDFActivity.java, как вы можете вставлять mupdf-макет в свою деятельность. В этом файле это делается так:

  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); 

Некоторые файлы исходного кода для программы просмотра PDF в приложении Android. Проверьте ссылки и попробуйте:

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/ (мертвая ссылка)

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 (мертвая ссылка)

Это как я достигаю на моем mac (2012, intel i5):

Шаг 1: Получите mupdf-1.2-source.zip

Шаг 2: Получите команду android-ndk-mac-64

Шаг 3: разархивируйте оба из них в новой папке, вызовите Android-pdf и переименуйте папку unzip в mupdf и android-ndk (вы можете называть их, как вам нравится)

Шаг 4: откройте терминал и используйте команду: cd пока вы не находитесь в папке android-pdf

Шаг 5: cd mupdf чем команда: make (потребуется около 40 секунд для запуска всех скриптов)

Шаг 6: cd androidmupdf ).

Шаг 7: open finder перейдите в папку Android-pdf которую вы создали, чем android-ndk перетаскивания android-ndk перетащите файл ndk-build в командную строку терминала и введите (в основном добавляя путь к ndk-build для работы с mupdf lib.)

И через несколько секунд. Вы должны иметь новую папку внутри mupdf > android > libs > ... использовать ее в своем проекте Android.

Как использовать MuPDF с вашим EXISTING проектом Eclipse:

  1. Скопируйте папку «jni» из папки / android в существующий проект Eclipse.
  2. Скопируйте папку / thirdparty в папку «jni» в вашем проекте.
  3. Скопируйте папку / cbz в папку «jni» в вашем проекте.
  4. Скопируйте папку / draw в папку «jni» в вашем проекте.
  5. Скопируйте папку / fitz в папку «jni» в вашем проекте.
  6. Скопируйте / сгенерированную папку в папку «jni» в вашем проекте.
  7. Скопируйте папку / pdf в папку «jni» в вашем проекте.
  8. Скопируйте папку / scripts в папку «jni» в вашем проекте.
  9. Скопируйте папку / xps в папку «jni» в вашем проекте.
  10. Откройте «Android.mk» в папке «jni».
  11. + Изменить

    MUPDF_ROOT: = ..

в

 MUPDF_ROOT := $(TOP_LOCAL_PATH) 
  1. Сохраните «Android.mk».
  2. Откройте «Core.mk» внутри папки «jni».
  3. + Изменить

    MY_ROOT: = ../ ..

в

 MY_ROOT := $(LOCAL_PATH) 
  1. Измените все

    ..

В LOCAL_C_INCLUDES

 $(LOCAL_PATH) 
  1. Сохраните «Core.mk».
  2. Откройте «ThirdParty.mk» в папке «jni».
  3. + Изменить

    MY_ROOT: = ../ ..

в

 MY_ROOT := $(LOCAL_PATH) 
  1. Измените все

    ..

В LOCAL_C_INCLUDES

 $(LOCAL_PATH) 
  1. Сохраните «ThirdParty.mk».
  2. Теперь выполните «ndk-build» в каталоге «jni» вашего проекта.
  3. Скопируйте все в папку / android / src в папку «src» в вашем проекте.
  4. Скопируйте все в папку / android / res / drawable в папку «res / drawable» в вашем проекте.
  5. Скопируйте все в папку / android / res / drawable-ldpi в папку «res / drawable-ldpi» в вашем проекте.
  6. Скопируйте все в папку / android / res / drawable-mdpi в папку «res / drawable-mdpi» в вашем проекте.
  7. Скопируйте все в папку / android / res / layout EXCEPT main.xml (потому что если вы копируете существующий проект, то у вас уже должен быть свой собственный main.xml или эквивалент) в папку «res / layout» в вашем проекте.
  8. Скопируйте все в папку / android / res / values ​​в папку «res / values» в вашем проекте. Если у вас уже есть «strings.xml» в существующем проекте, скопируйте все между тегами «/» в файле /android/res/values/strings.xml в файл strings.xml вашего проекта (вставьте между «тегами»). Аналогично «colors.xml», если у вас уже есть «colors.xml» в существующем проекте, скопируйте все между тегами «/» в файле /android/res/values/strings.xml в файл strings.xml вашего проекта (Вставить между «тегами»).
  9. Откройте «AndroidManifest.xml» в проекте.
  10. Между «тегами» вставляют весь список действий из

    AndroidManifest.xml внутри папки / android, вы должны скопировать из рабочей копии файла AndroidManifest.xml внутри mupdf.

  11. MuPDF теперь в вашем существующем проекте Eclipse. Чтобы использовать его, вызовите com.artifex.mupdf.ChoosePDFActivity.class в своем приложении. Это основной класс для MuPDF.

  12. Чтобы открыть pdf с файлом pre-fix:

    Uri uri = Uri.parse («путь к файлу PDF»);

    Intent intent = new Intent (контекст, MuPDFActivity.class);

    intent.setAction (Intent.ACTION_VIEW);

    intent.setData (URI);

    context.startActivity (намерение);

Надеюсь эта помощь 🙂

Проверьте этот проект eBookDroid

EBookDroid – просмотрщик документов с открытым исходным кодом (GPL) для Android, основанный на базе кода VuDroid.

Поддерживает файл в следующих форматах:

 PDF DjVu XPS (OpenXPS) comics books (cbz,cbr) 

У меня есть просмотр пейджера в моем приложении. Мне нужно показать pdf-файлы на каждом фрагменте в представлении pager.is там, чтобы получить PDF-представление из mupdf ? Обычно мы называем mupdf как ниже

 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); 

Поэтому, если я использую mupdf для своего приложения, я должен называть MuPDFActivity для каждого фрагмента. MuPDFActivity думаю, что это не правильный путь?

Ответ, данный star18bit значительной степени подводит итог, но даже после того, как я столкнулся с множеством проблем.

Как и команда make для меня это не сработало, и мне пришлось создавать его с помощью Visual Studio. Поэтому я перечислил все предварительные рекомендации. Как ANT. Также нам нужно добавить в папку PATH файлы папок sdk и папки tools platform-tools .

Кроме того, я должен был внести изменения в файл Core2.mk , те же самые в Core.mk Я не могу предоставить всю информацию здесь, потому что это много, поэтому я ссылаюсь на эту ссылку для получения полной информации:

http://howtojava.net/tutorials/android/integrate-mupdf-with-android-in-windows-7