[英]Integrate MuPDF Reader in an app
我正在研究一些應該能夠在我的應用程序中閱讀PDF的東西,並且我希望將PDF視圖放在我的自定義布局中 。 我更喜歡Android PDF Viewer但是當我執行zoomIn時 , zoomOut需要花費太多時間 。
所以目前我應該使用MuPDF開源項目集成到我的項目中,它基於JNI ,我不習慣它。
我正在使用Cygwin為本機代碼構建庫。 因此,我不清楚幾件事情:
如何在我的項目中整合MuPDF (根據我的問題標題)?
一旦我成功整合它,那么如何將PDF閱讀器放入我的自定義視圖 (在XML或programmaticaly中)?
我不知道如何在Windows中使用cygwin這樣做,因為我正在使用Ubuntu進行開發。 但我認為程序應該是一樣的。
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 for android:ndk-build problem(錯誤:重新定義typedef ....)但是,你可以簡單地在文件/thirdparty/jbig2dec/os_types.h中注釋類型定義的行。
之后,您將收到兩個庫:一個靜態和一個共享您的Android應用程序。
StaticLibrary : libmupdfthirdparty.a
SharedLibrary : libmupdf.so
這是第一個問題的答案。 android / Readme.txt文件中還有一個很好的分步指南。
現在回答第二個問題。 在Android應用程序中,您可以找到測試項目。 有3個文件:
只需復制項目中的最后兩個文件即可。 請參閱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);
Android應用程序中PDF查看器的一些源代碼文件。 檢查鏈接並嘗試:
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 android
(在mupdf
目錄中。)
步驟7:打開查找器轉到你創建的文件夾Android-pdf
,而不是android-ndk
將文件調用ndk-build
拖到終端命令行並輸入(基本上添加一個路徑到ndk-build來操作mupdf lib。)
幾秒鍾后 你應該在mupdf > android > libs > ...
有新文件夾mupdf > android > libs > ...
在你的android項目中使用它。
如何在您的EXISTING Eclipse項目中使用MuPDF:
更改
MUPDF_ROOT:= ..
至
MUPDF_ROOT := $(TOP_LOCAL_PATH)
更改
MY_ROOT:= ../ ..
至
MY_ROOT := $(LOCAL_PATH)
改變所有
..
在LOCAL_C_INCLUDES中
$(LOCAL_PATH)
更改
MY_ROOT:= ../ ..
至
MY_ROOT := $(LOCAL_PATH)
改變所有
..
在 LOCAL_C_INCLUDES中
$(LOCAL_PATH)
在''標簽之間粘貼所有活動列表
AndroidManifest.xml
里面的/ android文件夾, 你應該從你的 mupdf里面的AndroidManifest.xml 的工作副本中復制 。
MuPDF現在在您現有的Eclipse項目中。 要使用它,請在應用程序中調用com.artifex.mupdf.ChoosePDFActivity.class
。 這是MuPDF的主要類。
要使用預修復文件打開pdf:
Uri uri = Uri.parse(“pdf文件的路徑”);
Intent intent = new Intent(context,MuPDFActivity.class);
intent.setAction(Intent.ACTION_VIEW);
intent.setData(URI);
context.startActivity(意向);
希望這有幫助:)
檢查這個項目eBookDroid
EBookDroid是一個基於VuDroid代碼庫的Android開源(GPL)文檔查看器。
支持以下格式的文件:
PDF DjVu XPS (OpenXPS) comics books (cbz,cbr)
我在我的應用程序中查看了尋呼機。 我需要在視圖pager中的每個片段上顯示pdf文件。有從mupdf
獲取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
。我認為它不正確嗎?
star18bit
給出的star18bit
幾乎總結了它,但即便如此,我也遇到了很多問題。
就像make
命令對我不起作用而我必須使用Visual Studio構建它。 所以我列出了所有pre-req軟件。 像ANT一樣。 我們還需要在PATH中添加sdk文件夾的tools
和platform-tools
文件夾。
此外,我不得不做的改變Core2.mk
文件,方式相同的Core.mk
。 我不能在這里提供所有信息,因為它很多,所以我引用此鏈接獲取完整信息:
http://howtojava.net/tutorials/android/integrate-mupdf-with-android-in-windows-7
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.