Foxit Mobile PDF SDK for Android_渲染PDF文档(2)
2016-10-14 14:57
555 查看
前面一篇文章Foxit Mobile PDF SDK for Android_初始(1) 简单的了解了下Foxit这款全新的SDK,现在打算试试其据称没有PDF相关知识的攻城狮只用花几分钟以及几行代码就能实现一个PDF阅读器是不是真的!
下载地址再提下:http://www.foxitsdk.com/products/mobile-pdf-sdk/request-trial/ 需要申请下载,然后邮箱会收到下载链接。
PS: 入门阶段,加上是Android菜鸟,所以先阅读他们的文档作为学习,幸好他们的文档写得够详细,非常适合我这种小白菜鸟用户。我主要是看他们的developer_guide_android.pdf文档(在下载包的docs目录下)。
开发环境
Android Studio
我自己用的是Android Studio 2.1.1, 也恰好和文档中示例的开发环境一致。
准备工作:
1. 新建一个Android工程
打开Android Studio,点击“File -> New -> New Project…”, 然后填写工程名称, 这里我用RenderPDF, 如下所示。点击Next.
![](http://img.blog.csdn.net/20161014142312089)
选择在”Phone and Tablet”上来跑该app. 最低的SDK版本选择:API 8: Android 2.2. 这样基本可以支持所有的android设备。点击Next.
![](http://img.blog.csdn.net/20161014142653406)
为了简单起见,这里选择“Empty Activity”. 点击Next.
![](http://img.blog.csdn.net/20161014142836644)
使用默认的Activity如下图所示:
![](http://img.blog.csdn.net/20161014142910394)
2. 导入Foxit的SDK库
拷贝下载包中libs文件夹下的 FoxitRDKUIExtensions.aar文件和x86, arm64-v8a, armeabi-v7a文件夹到 ”RenderPDF\app\libs”.
PS: 这里我把三种架构的库都拷贝过去了,你也可以根据你使用的真机或者模拟器的架构选择对应的库。
![](http://img.blog.csdn.net/20161014143228176)
拷贝到”RenderPDF\app\libs”目录下后,在Android Studio中,工程app\libs下面就可以看到它们了,如下图:
![](http://img.blog.csdn.net/20161014143405447)
这里我们仅仅是把库放到了工程里面,并没有对库进行引用,那下面自然是要开始进行相关的配置工作了。打开app下面的“build.gradle”文件,进行如下操作:
a) 添加对”librdk.so”( x86/arm64-v8a/armeabi-v7a文件夹下的librdk.so)的引用:
b) 添加对”FoxitRDKUIExtensions.aar”的引用
定义libs文件作为repository:
在dependencies中加入FoxitRDKUIExtensions.aar.
这里附上整个“build.gradle”文件:
PS:这里按文档说的,设置compileSdkVersion和targetSdkVersion为API 23.
配置完“build.gradle”文件后,点击“Build -> Rebuild project”,然后在“\app\build\intermediates\explodedaar\FoxitRDKUIExtensions”下可以看到FoxitRDKUIExtensions.aar里面具体信息了,如下图:
![](http://img.blog.csdn.net/20161014144237057)
至此,我们已经完成对Foxit SDK库的引用,写代码前的准备工作已经完成,下面要开始写代码了。
PS: 我们是要渲染显示一个PDF文档,因此需要事先将文档放到真机或者模拟器中。这里我还是用getting_started_android.pdf文档(太懒了,直接用现成的)。如果你不知道怎么添加文档,请参考第一篇Foxit Mobile PDF SDK for Android_初始(1)。
3. 写代码:渲染显示PDF文档
真的只有几行代码就可以实现哦,接着往下看。
所有非界面的代码我都写在”RenderPDF\app\src\main\java\com\test\renderpdf\MainActivity.java”中。
首先,初始化SDK库
导入头文件:
添加初始化SDK库的代码:
sn和key是一串比较长的字符串,大家可以到libs目录下的rdk_sn.txt和rdk_key.txt文件中copy过来,或者从demo中copy。
在主界面上面添加PDFViewCtrl
在“app/src/main/res/layout/activity_main.xml”中添加如下代码:
加载文档以及渲染显示文档
在“MainActivity.java”中,实例化一个PDFDoc对象用来加载文档,然后实例化一个PDFViewCtrl对象用来显示加载的文档,代码如下:
PS: 官方文档中称将MainActivity从继承自AppCompatActivity改为FragmentActivity, 因为内置UI extensions组件中有用到FragmentActivity的特性。虽然这里还没有用到所谓的UI extensions组件,为了后面继续学习,这里就先改了哈。
就这些代码就可以完成渲染一个PDF文档,核心代码加起来还不到10行,好像是挺酷的哦。跑起来看看效果。
PS: 因为要读取真机或者模拟器中的文档,所以要在“app/src/main/ AndroidManifest.xml”中设置用户权限,允许用户读写sdcard. 代码如下:
其实是只用添加
这一句,为了方便阅读,我都是把整个代码都贴出来。
4. Run the app:
我用Android 4.4.2 (API 19) x86架构的模拟器来跑该app, 运行起来后如下图:
![](http://img.blog.csdn.net/20161014145018841)
这几行代码就可以实现一个简单的PDF阅读器了,还自带有缩放和翻页功能:
![](http://img.blog.csdn.net/20161014145048092)
![](http://img.blog.csdn.net/20161014145100873)
上面已经成功实现了渲染显示PDF文档的功能,真的只花了几行代码,大伙感兴趣的可以试试。有一点大家要注意下,我这里用的是API 19的模拟器来运行该app, 如果大家用API 23以上(包括23)的话,如果想读取sdcard中的文档,要么需要添加代码进行动态权限获取,要么可以把“app/build.gradle”下的targetSdkVersion 改为低于23的版本即可。
好了,今天就到这里吧,后面将继续学习。
下载地址再提下:http://www.foxitsdk.com/products/mobile-pdf-sdk/request-trial/ 需要申请下载,然后邮箱会收到下载链接。
PS: 入门阶段,加上是Android菜鸟,所以先阅读他们的文档作为学习,幸好他们的文档写得够详细,非常适合我这种小白菜鸟用户。我主要是看他们的developer_guide_android.pdf文档(在下载包的docs目录下)。
开发环境
Android Studio
我自己用的是Android Studio 2.1.1, 也恰好和文档中示例的开发环境一致。
准备工作:
1. 新建一个Android工程
打开Android Studio,点击“File -> New -> New Project…”, 然后填写工程名称, 这里我用RenderPDF, 如下所示。点击Next.
选择在”Phone and Tablet”上来跑该app. 最低的SDK版本选择:API 8: Android 2.2. 这样基本可以支持所有的android设备。点击Next.
为了简单起见,这里选择“Empty Activity”. 点击Next.
使用默认的Activity如下图所示:
2. 导入Foxit的SDK库
拷贝下载包中libs文件夹下的 FoxitRDKUIExtensions.aar文件和x86, arm64-v8a, armeabi-v7a文件夹到 ”RenderPDF\app\libs”.
PS: 这里我把三种架构的库都拷贝过去了,你也可以根据你使用的真机或者模拟器的架构选择对应的库。
拷贝到”RenderPDF\app\libs”目录下后,在Android Studio中,工程app\libs下面就可以看到它们了,如下图:
这里我们仅仅是把库放到了工程里面,并没有对库进行引用,那下面自然是要开始进行相关的配置工作了。打开app下面的“build.gradle”文件,进行如下操作:
a) 添加对”librdk.so”( x86/arm64-v8a/armeabi-v7a文件夹下的librdk.so)的引用:
android { sourceSets { main { jniLibs.srcDirs = ['libs'] } } }
b) 添加对”FoxitRDKUIExtensions.aar”的引用
定义libs文件作为repository:
repositories { flatDir { dirs 'libs' } }
在dependencies中加入FoxitRDKUIExtensions.aar.
dependencies { compile (name:'FoxitRDKUIExtensions', ext:'aar') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' }
这里附上整个“build.gradle”文件:
apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "com.foxit.test_android" minSdkVersion 8 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets { main { jniLibs.srcDirs = ['libs'] } } } repositories { flatDir { dirs 'libs' } } dependencies { compile (name:'FoxitRDKUIExtensions', ext:'aar') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' }
PS:这里按文档说的,设置compileSdkVersion和targetSdkVersion为API 23.
配置完“build.gradle”文件后,点击“Build -> Rebuild project”,然后在“\app\build\intermediates\explodedaar\FoxitRDKUIExtensions”下可以看到FoxitRDKUIExtensions.aar里面具体信息了,如下图:
至此,我们已经完成对Foxit SDK库的引用,写代码前的准备工作已经完成,下面要开始写代码了。
PS: 我们是要渲染显示一个PDF文档,因此需要事先将文档放到真机或者模拟器中。这里我还是用getting_started_android.pdf文档(太懒了,直接用现成的)。如果你不知道怎么添加文档,请参考第一篇Foxit Mobile PDF SDK for Android_初始(1)。
3. 写代码:渲染显示PDF文档
真的只有几行代码就可以实现哦,接着往下看。
所有非界面的代码我都写在”RenderPDF\app\src\main\java\com\test\renderpdf\MainActivity.java”中。
首先,初始化SDK库
导入头文件:
import com.foxit.sdk.common.Library; import com.foxit.sdk.common.PDFException;
添加初始化SDK库的代码:
System.loadLibrary("rdk"); try { Library.init("sn", "key"); } catch (PDFException e) { e.printStackTrace(); return; }
sn和key是一串比较长的字符串,大家可以到libs目录下的rdk_sn.txt和rdk_key.txt文件中copy过来,或者从demo中copy。
在主界面上面添加PDFViewCtrl
在“app/src/main/res/layout/activity_main.xml”中添加如下代码:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.test.renderpdf.MainActivity"> <com.foxit.sdk.PDFViewCtrl android:id="@+id/pdfviewer" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical|horizontal"/> </RelativeLayout>
加载文档以及渲染显示文档
在“MainActivity.java”中,实例化一个PDFDoc对象用来加载文档,然后实例化一个PDFViewCtrl对象用来显示加载的文档,代码如下:
PS: 官方文档中称将MainActivity从继承自AppCompatActivity改为FragmentActivity, 因为内置UI extensions组件中有用到FragmentActivity的特性。虽然这里还没有用到所谓的UI extensions组件,为了后面继续学习,这里就先改了哈。
package com.test.renderpdf;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import com.foxit.sdk.common.Library; import com.foxit.sdk.common.PDFException;
import com.foxit.sdk.PDFViewCtrl;
import com.foxit.sdk.pdf.PDFDoc;
public class MainActivity extends FragmentActivity {
private PDFViewCtrl pdfViewCtrl = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String sn = "Jm9uLlPzu31Xeg9DMkMCjTJ21fyDRcmmgsj6r1OpithuPTLmet8RLw==";
String key = "ezJvj90ntWp39JsXIV02hAneK+hiBbdSf8QJK/OtLsbugh81DetHZ2mytsJxCjTVbg84YCcakEMtqn5EtJylgi9le8qSQka+CDSUKaXx7mzfXeKeRXKUKWZo9YvjUdhJOZv4bEUVKon7M6A70Ewt+vi0EJCt8DruGsI5vzUdxjW335VDgrpdXP8WaXFHSunwmFerH/7lgYErxA/hpZK9keeo8lw/yWOVgnAByoIiaqaiQATSgyBMKRANkKp78H+oYWTdj7qNb5UNkq2sKordoCRjCmer5lSKOnEK5jPI7PETlNMi/vkWzSVndHCDNICQH7BaJWA+vwRJqW0E1m1vXXUizXeSuxmu3RtQk4QwYlgmE4cd6z2bl9RjLErHD2pi4y8je8opLN2Tziw+EgDhho1snyDbIWi3ynol2nv/1vt3x7CY7HpMZ1QrJNCv8z9OdGH0zc22RPU8hA47QE4ftH77kQvrjgWu1oZH07dseGrZxj5q+lvbMwZegKAHqXyzj7XDa7084FSQVRwE+vvA+0ZdjRCoJRf32RAmEbx4kF+cwIiDmQliFy+WphFmSKq8NYZA7c+pMRtWZaUHWk1hJ1XI7l175uQZb1WBNAIndRAXy5H3pettxGxIBrJqn4zfE7Kgyf5zvBWMr9+8KY0No1bRz5fHuds2XbiwzrVzV946uQJ1N+NPdX0Zy+u3LqXsskMXKBXseHQAO5g+b/ts4SXzLbSsHWPHCHGgv3wxH09+O2tQ3YH3sb48T6pbIj/oM6PzppRmC9YqIpfKpCZGvAcsYMU3sIHRmZOr5HxKC65VX3oX2CMlTXXJHH0wf9wFqIyxUGwFWL3EvsBo5UR282KDyquz74xgvyhM1F3FZQxD4UJgZBDJvr/mrpziFF3sUuXCjpCwDT2gC25VSng9sm2w5FIh7MjJsRlK+hPCn5tuYZcKzMJHQG9deNA5YwN6/f/KLlhxEJpzeWyiNA2PoV2CDt1hYLJeob+VVtirRNsZI447ym2hCBkjdd7uru3LweWVpPzWTdP3/2a7JkuGPJbhIKYu6LsK5I6ghCfE0vvPR3Ne+aHk97+ytZRJHI8RDGujE5yQ0BIrP0u9ZuTQvPq8xSGJFWHDLsVgxMG0b2I+6jnSBoUo/cJDFT/dNID1anbesGHL73waVHDN0U5cR34Ry97dSBjoD6wgF8UR8roPmbEYNp7GVRrSbenJHQ==";
// Load "librdk.so" library.
System.loadLibrary("rdk");
try {
// initialize the library
Library.init(sn, key);
} catch (PDFException e) {
e.printStackTrace();
return;
}
// Inflate the view and get a reference to PDFViewCtrl
setContentView(R.layout.activity_main);
pdfViewCtrl = (PDFViewCtrl) findViewById(R.id.pdfviewer);
// Load a document
String path = "/mnt/sdcard/getting_started_android.pdf";
try {
PDFDoc document = PDFDoc.createFromFilePath(path);
document.load(null);
pdfViewCtrl.setDoc(document);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
try {
Library.release();
} catch (PDFException e) {
e.printStackTrace();
}
}
@Override
protected void onResume() {
super.onResume();
if(pdfViewCtrl != null)
pdfViewCtrl.requestLayout();
}
}
就这些代码就可以完成渲染一个PDF文档,核心代码加起来还不到10行,好像是挺酷的哦。跑起来看看效果。
PS: 因为要读取真机或者模拟器中的文档,所以要在“app/src/main/ AndroidManifest.xml”中设置用户权限,允许用户读写sdcard. 代码如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.test.renderpdf"> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
其实是只用添加
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
这一句,为了方便阅读,我都是把整个代码都贴出来。
4. Run the app:
我用Android 4.4.2 (API 19) x86架构的模拟器来跑该app, 运行起来后如下图:
这几行代码就可以实现一个简单的PDF阅读器了,还自带有缩放和翻页功能:
上面已经成功实现了渲染显示PDF文档的功能,真的只花了几行代码,大伙感兴趣的可以试试。有一点大家要注意下,我这里用的是API 19的模拟器来运行该app, 如果大家用API 23以上(包括23)的话,如果想读取sdcard中的文档,要么需要添加代码进行动态权限获取,要么可以把“app/build.gradle”下的targetSdkVersion 改为低于23的版本即可。
好了,今天就到这里吧,后面将继续学习。
相关文章推荐
- Foxit Mobile PDF SDK for Android_初识(1)
- Foxit Mobile PDF SDK for Android_添加Text Search功能(3)
- Foxit Mobile PDF SDK 入门级(1)-显示一个PDF-Swift工程中的使用(Xcode 7.x, swift 2.x)
- Unity3D for SMSSDK Android短信验证开发文档
- Foxit Mobile PDF SDK-强大的UI Extensions(如何实现PDF的填表,超链接,搜索,标注。。。)
- SuperMap iMobile 8C(2017) for Android 服务对接技术文档
- 利用Foxit SDK快速实现自己的Mobile PDF阅读器-Android篇
- SuperMap iMobile 8C(2017) for Android 矢量切片技术文档
- Unity3D for SMSSDK Android短信验证开发文档
- SuperMap iMobile 8C(2017) for Android 室内导航技术文档
- scaleform mobile sdk for android 多点触摸 修正
- Foxit Mobile PDF SDK---让你分分钟实现一个自己的PDF阅读器
- Foxit License: pcrkey.txt for Foxit PDF Creator —— Virtual Printer Driver
- android 官方SDK文档--- Intent,Activity
- android 官方SDK文档
- Android官方文档(Designing For Performance)
- Android开发基础1-概述和SDK安装、文档 -
- BlackBerry, iPhone, or Android? Pros and cons of mobile devices for business
- Download Android SDK standalone for offline installation
- Android开发基础1-概述和SDK安装、文档