dha*_*ram 45 pdf android render android-ndk mupdf
我正在研究一些应该能够在我的应用程序中阅读PDF的东西,并且我希望将PDF视图放在我的自定义布局中.我更喜欢Android PDF Viewer但是当我执行zoomIn时,zoomOut需要花费太多时间.
所以目前我应该使用MuPDF开源项目集成到我的项目中,它基于JNI,我不习惯它.
我正在使用Cygwin为本机代码构建库.因此,我不清楚几件事情:
如何在我的项目中整合MuPDF(根据我的问题标题)?
一旦我成功整合它,那么如何将PDF阅读器放入我的自定义视图(在XML或programmaticaly中)?
Yur*_*ury 47
我不知道如何在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
Run Code Online (Sandbox Code Playgroud)
这是第一个问题的答案.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);
Run Code Online (Sandbox Code Playgroud)
Riz*_*van 15
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
并将解压缩文件夹重命名为mupdf
和android-ndk
(您可以随意调用它们)
第4步:打开终端并使用命令:cd
直到你在android-pdf
文件夹中
步骤5:cd mupdf
than命令:( make
运行所有脚本大约需要40秒)
第6步:cd android
(在mupdf
dir 内)
步骤7:打开查找程序转到Android-pdf
您创建的文件夹,而不是android-ndk
将文件调用ndk-build
拖到终端命令行并输入(基本上添加一条路径到ndk-build以在mupdf lib上运行.)
几秒钟后 你应该mupdf > android > libs > ...
在你的android项目中使用新文件夹.
如何在您的EXISTING Eclipse项目中使用MuPDF:
更改
MUPDF_ROOT:= ..
至
MUPDF_ROOT := $(TOP_LOCAL_PATH)
Run Code Online (Sandbox Code Playgroud)
更改
MY_ROOT:= ../ ..
至
MY_ROOT := $(LOCAL_PATH)
Run Code Online (Sandbox Code Playgroud)
改变所有
..
在LOCAL_C_INCLUDES中
$(LOCAL_PATH)
Run Code Online (Sandbox Code Playgroud)
更改
MY_ROOT:= ../ ..
至
MY_ROOT := $(LOCAL_PATH)
Run Code Online (Sandbox Code Playgroud)
更改所有的
..
在 LOCAL_C_INCLUDES中
$(LOCAL_PATH)
Run Code Online (Sandbox Code Playgroud)
在''标签之间粘贴所有活动列表
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)文档查看器.
支持以下格式的文件:
Run Code Online (Sandbox Code Playgroud)PDF DjVu XPS (OpenXPS) comics books (cbz,cbr)
归档时间: |
|
查看次数: |
64832 次 |
最近记录: |