muPDF

概述

muPDF 封装了一个 PDF 阅读器,支持本地阅读、目录查找、搜索内容等功能。本模块同时支持网络路径和本地路径的 PDF 读取,当传入网络路径时,模块会优先将文件下载到本地,下载成功后再打开读取。当用户再次打开相同路径的网络文件时,模块则会优先读取缓存在本地的文件。

注意:如果使用过程中报错"couldn't find "libmupdf_java32.so",解决办法是在config.xml文件中配置

<preference name="android_abi" value="arm64-v8a"/>

在 iOS 端若想要自己的 APP 在系统分享列表中显示(支持别的APP想通过本App打开某个文档),需要配置 Info.plist 文件。有关 Info.plist 文件的说明参考论坛。 配置示例如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>LSItemContentTypes</key>
            <array>
                <string>public.item</string>
                <string>public.content</string>
            </array>
        </dict>
    </array>
</dict>
</plist>

字段解释:

  • CFBundleDocumentTypes:指的是当前app可以接收文档的类型,比如图片啊、文档
  • LSItemContentTypes:指的是具体的可以接收的类型,比如txt、jpg、doc。这个key对应的是一个Array,Array中放的是支持类型的字段。具体Array放的字段,可以参考System-Declared Uniform Type Identifiers

注意:谨慎配置此功能,提交苹果商店时需要加上详细的说明,否则审核会被拒绝。

分享来的文件通过监听 appintent 获取,详情参考文档。

requestPermission

申请存储权限,仅支持Android

requestPermission(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    "status":""        //布尔类型;true||false
    "msg":""        //字符串类型;取值范围:
                    //"权限已获取"(应用以获取权限并触发此方法时返回该字段)
                    //"请检查存储权限"(应用没获取存储权限时返回该字段)
}

示例代码

var muPDF = api.require('muPDF');
muPDF.requestPermisssion(function(ret){
    alert(JSON.stringify(ret))
});

可用性

Android系统

可提供的1.0.0及更高版本

viewpdfFile

打开PDF文件

注意:该方法可用于打开网络或本地PDF文件;打开网络文件时,会直接将文件缓存到本地

viewpdfFile({params},callback(ret))

params

path:

  • 类型:字符串类型
  • 描述:文件所在路径(本地路径或网络路径)
  • 注意:Android 10以下支持 fs:// 路径、公有目录及私有目录,Android 10以上系统只支持私有目录

fileName:

  • 类型:字符串类型
  • 描述:文件名(需要添加 .pdf 后缀),下载并保存到本地的自定义文件名称
  • 注意:当文件路径为网络路径时,需要传入该参数。每一个不同的网络路径PDF文件,都需对应独有的该参数值,不能重复

showLoading:

  • 类型:布尔类型
  • 描述:是否打开进度提示框
  • 取值范围:
    • true:打开
    • false:关闭
  • 默认值:false

diaLogStyle:

  • 类型:字符串类型
  • 描述:弹出框类型
  • 取值范围:
    • horizontal:横条提示框,带有文件缓存进度
    • spinner:圆形提示框
  • 默认值:horizontal
  • 注意:showLoading 传入false时,该参数值不生效

isPrivate:

  • 类型:布尔类型
  • 描述:仅Android支持,下载pdf文件时是否存储在私有目录
  • 取值范围:
    • true: 存储在应用私有目录下
    • false:存储在外部公共目录下
  • 默认值:false

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
//当传入的路径是本地路径时:
{
    status:"",  //布尔类型;true||false
    msg:""        //字符串类型
                //"请先获取访问文件权限"(未获取存储权限时返回此字段)
}
//当传入的路径是网络路径时:
{
    status:"",  //布尔类型;true||false
    progress:"    //数字类型;网络文件缓存进度
    msg:""        //字符串类型;
                //"文件加载中"(网络文件下载过程中返回该字段)
                //"下载失败"(网络文件未下载成功时会返回此字段)
                //"文件已损坏,请再次点击预览"(当网络文件因其他原因下载失败会返回该字段)
}

示例代码

var muPDF = api.require('muPDF');
var param = {
    //传入本地路径
    "path":"/data/user/0/com.apicloud.pkg.sdk/filePDF.pdf", 

    //传入网络路径
    "path":"网络路径",
    "fileName":"文件保存的自定义名称",
    "showLoading":true,
    "diaLogStyle":"horizontal"
}
muPDF.viewpdfFile(param,function(ret){
    alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本