2 Star 1 Fork 0

silianpan/Seal-Office-Android-Demo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

Seal-OfficeOnline文档预览插件原生Android项目集成方式

Github访问

国内Gitee访问

4.0.0版本重大更新!

  • 支持返回当前页码和总页数跳转指定页码
  • 支持顶部状态栏自定义菜单功能按钮

一、介绍

Seal-OfficeOnline是跨平台Office文档预览原生插件,具有以下特点:

  • 支持UniApp项目集成,也支持原生Android项目集成
  • 非腾讯X5,无内核加载,高效率、稳定高可用
  • 支持在线文档,也支持离线设备本地文档
  • 支持Android和IOS
  • 支持全屏预览,也支持组件嵌入方式预览
  • 支持返回当前页码和总页数跳转指定页码
  • 支持顶部状态栏自定义菜单功能按钮
  • 支持WPS应用预览或编辑文档
  • 支持水印防截屏自定义状态栏自定义菜单功能按钮保存图片等诸多可选配置
  • 支持pdf、docx、pptx、xlsx等多种office文档格式,也支持常用图片(jpg、png、bmp等)和音视频格式(mp3、flac、wma、mp4、mkv等)
  • 支持wps、doc、docx、xls、xlsx、csv、ppt、pptx、txt、properties、log、Log、ini、lua、conf、m、cpp、java、h、xml、html、htm等常见文档格式

二、UniApp项目集成方式

UniApp项目集成方式,参考:插件市场

本文主要是说明原生Android集成方式。

三、原生Android项目集成方式

1、Demo工程地址

Demo工程

2、联系客服获取License授权

  • 更改应用包名,即applicationId

  • 创建src/main/assets/seal-office.license文件,并添加授权码

  • 扫下面二维码添加WX,联系客服获取授权码;或者添加QQ号(2480621579)

3、添加依赖

// 不需要图片预览,删除libs/ImagePreview-release.aar包
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])

// ================= SealOffice文档预览需要添加的依赖包 begin ==============
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.alibaba:fastjson:1.2.83'
implementation 'com.facebook.fresco:fresco:1.13.0'
implementation 'com.google.android.material:material:1.3.0'
implementation "com.github.bumptech.glide:glide:4.9.0"
implementation "androidx.constraintlayout:constraintlayout:2.1.3"
implementation 'net.lingala.zip4j:zip4j:2.11.5'
// ================= SealOffice文档预览需要添加的依赖包 end ================

// ============ 音视频播放,不需要直接去掉 begin ==========
implementation 'xyz.doikki.android.dkplayer:dkplayer-java:3.3.7'
implementation 'xyz.doikki.android.dkplayer:dkplayer-ui:3.3.7'
// ============ 音视频播放,不需要直接去掉 end ============

4、添加混淆(若关闭混淆,此步跳过)

温馨提示:如果开启混淆minifyEnabled true,请添加如下混淆;若关闭混淆minifyEnabled false,此步跳过。

-keep class com.seal.office.aar.** {
    *;
}
-keep class com.tencent.mtt.external.reader.** {
    *;
}

5、插件初始化(在应用启动时进行调用)

5.1 传递授权文件路径(若授权文件在:src/main/asserts目录下,此步跳过)

如授权文件在src/main/assets/product/seal-office.license目录下,请传递product/seal-office.license,如下:

SealOfficeEngineApi.initLicenseFile("product/seal-office.license");

5.2 初始化

SealOfficeEngineApi.initEngine(MainActivity.this, new ISealReaderCallback() {
  @Override
  public void callback(int code, String msg) {
    Log.e("" + code, msg);
  }
});

6、接口调用

注意:接口参数请参考:五、openFile接口参数说明

(1)打开Office文档(支持wps、doc、docx、xls、xlsx、csv、ppt、pptx、txt、properties、log、Log、ini、lua、conf、m、cpp、java、h、xml、html、htm等常见文档格式)
JSONObject params = new JSONObject();
params.put("waterMarkText", "你好,世界\n准备好了吗?时刻准备着");
params.put("url", "http://silianpan.cn/upload/2022/01/01/1.docx");
params.put("isDeleteFile", false);
// 指定跳转页码
params.put("targetPage", 5);
// 顶部状态栏自定义菜单功能按钮
params.put("menuItems", new JSONArray() {{
  add("下载");
  add("分享");
}});
SealOfficeEngineApi.openFile(MainActivity.this, params, new ISealReaderCallback() {
  @Override
  public void callback(int code, String msg) {
    Log.e("" + code, msg);
  }
  // 顶部状态栏,自定义菜单功能按钮点击事件回调函数
  @Override
  public void menuClick(JSONObject jsonObject) {
    /**
      {
      "code": 1011,
      "result": {
          "filePath": "/data/user/0/com.seal.uniplugin/files/2.pdf",
          "fileUrl": "http://silianpan.cn/upload/2022/01/01/2.pdf",
          "menuItemId": 2,
          "menuItemTitle": "分享",
          "fileName": "2.pdf"
      },
      "msg": "导航栏菜单点击事件"
      }
    */
    Toast.makeText(MainActivity.this, jsonObject.toJSONString(), Toast.LENGTH_SHORT).show();
  }
});
(2)打开Office文档(嵌入方式,自定义界面)
  • 接口一:传入字符串参数,文档本地绝对路径
/**
* 打开Office文档(嵌入方式,自定义界面)
* @param activity Activity对象
* @param frameLayout FrameLayout对象
* @param filePath 文档本地绝对路径
*/
FrameLayout customContainer = findViewById(R.id.custom_container);
SealOfficeEngineApi.openFile(activity, frameLayout, filePath, new ISealReaderCallback() {
  @Override
  public void callback(int code, String msg) {
    Log.e("" + code, msg);
  }
});
  • 接口二:传入参数对象
/**
* 打开Office文档(嵌入方式,自定义界面)
* @param activity Activity对象
* @param frameLayout FrameLayout对象
* @param params JSONObject对象
*    (1)url String(必传) 文档本地绝对路径
* 	 (2)readViewWidth Integer(可选) 阅读视图宽度,可以根据屏幕大小计算传入
*    (3)readViewHeight Integer(可选) 阅读视图高度,可以根据屏幕大小计算传入,建议不传
*    (4)readBgColor String(可选)阅读器背景颜色
*	   (5)targetPage Integer(可选)跳转页码
*/
FrameLayout customContainer = findViewById(R.id.custom_container);
JSONObject params = new JSONObject(2);
params.put("url", "/data/data/com.seal.office.demo/files/1.docx");
params.put("readViewWidth", 1000);
params.put("targetPage", 5);
SealOfficeEngineApi.openFile(MainActivity.this, customContainer, params, new ISealReaderCallback() {
    @Override
    public void callback(int code, String msg) {
        Log.e("嵌入打开docx:" + code, msg);
    }
});
(3)添加水印
/**
* 添加水印
* @param context 上下文对象
* @param frameLayout FrameLayout对象
* @param waterMarkText 水印文本,以“\n”作为分隔符换行
* @param waterMarkDegree 水印旋转角度,默认为-30(逆时针30度)
* @param waterMarkFontSize 水印字体大小,单位为sp,默认为13
* @param waterMarkFontColor 水印字体颜色,默认为浅灰色(#40F3F5F9)
*/
SealOfficeEngineApi.addWaterMark(context, frameLayout, waterMarkText, waterMarkDegree, waterMarkFontSize, waterMarkFontColor);
(4)打开图片(jpg、png、jpeg、bmp等)
JSONObject params = new JSONObject();
params.put("imageUrls", new String[]{"http://silianpan.cn/upload/2022/01/01/1.jpg", "http://silianpan.cn/upload/2022/01/01/1.png"});
params.put("isSaveImg", true);
SealOfficeEngineApi.openFileImage(MainActivity.this, params);
(5)打开音视频(mp3、flac、wma、wav、mp4、mkv等)
JSONObject params = new JSONObject();
params.put("videoUrl", "http://silianpan.cn/upload/2022/01/01/1.mp4");
params.put("menuItems", new JSONArray() {{
  add("下载");
  add("分享");
}});
SealOfficeEngineApi.openFileVideo(MainActivity.this, params);
SealOfficeEngineApi.openFileVideo(MainActivity.this, params, new ISealImageCallback() {
  @Override
  public void callback(int i, String s) {

  }

  @Override
  public void menuClick(JSONObject jsonObject) {
    Toast.makeText(MainActivity.this, jsonObject.toJSONString(), Toast.LENGTH_SHORT).show();
  }
});
(6)WPS预览或编辑
JSONObject params = new JSONObject();
params.put("url", "http://silianpan.cn/upload/2022/01/01/1.docx");
SealOfficeEngineApi.openFileWPS(MainActivity.this, params, new ISealReaderCallback() {
  @Override
  public void callback(int code, String msg) {
    Log.e("" + code, msg);
  }
});
(7)检查WPS是否安装
boolean hasWps = SealOfficeEngineApi.checkWps(MainActivity.this);
(8)跳转文档指定页码,注意:需要等文档加载完成之后,才能调用此接口,如果需要直接跳转,在openFile接口中传递targetPage参数

使用接口:gotoPage(int targetPage)

参数:targetPage,指定页码

SealOfficeEngineApi.gotoPage(5);

四、回调结果状态码说明

状态码 说明
1 初始化引擎成功
2 文件预览成功
-1 初始化引擎失败
-2 初始化引擎失败
-3 授权失败,请联系客服重新授权
-4 请联系客服授权包名
-5 授权已过期,请联系客服重新授权
-6 参数异常,加载文件失败
-7 不支持文件类型
-8 文件不存在
-9 文件预览失败
301 文档下载失败
1001 文档下载成功
1008 缓存文档删除成功
1010 页面返回
1011 返回当前页码和总页码
1012 导航栏菜单点击事件
MIT License Copyright (c) 2020 silianpan Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

跨平台Office文档、图片在线预览,音视频播放原生插件Seal-OfficeOnline【非X5离线、组件嵌入、水印、WPS预览编辑】原生Android项目集成方式 展开 收起
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/twofloor/Seal-Office-Android-Demo.git
git@gitee.com:twofloor/Seal-Office-Android-Demo.git
twofloor
Seal-Office-Android-Demo
Seal-Office-Android-Demo
main

搜索帮助