Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Foxit Mobile PDF SDK for Android_渲染PDF文檔(2)

Foxit Mobile PDF SDK for Android_渲染PDF文檔(2)

編輯:關於Android編程

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)的引用:<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;"> 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”中添加如下代碼:




    

加載文檔以及渲染顯示文檔
在“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. 代碼如下:




    

    
        
            
                

                
            
        
    


其實是只用添加

這一句,為了方便閱讀,我都是把整個代碼都貼出來。

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的版本即可。

好了,今天就到這裡吧,後面將繼續學習。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved