IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android系统中如何得到各种格式的文件正文(office文件PDF邮件htmlzip等) -> 正文阅读

[移动开发]Android系统中如何得到各种格式的文件正文(office文件PDF邮件htmlzip等)

在Android平台下,办公系统,ERP,CRM等开发过程中,需要对Doc, docx, xls, xlsx, ppt, ppts, pdf, html等各种格式的文件内容进行搜索和查找,实现这些格式文件正文分析提取是一件工作量巨大的工程。现在给大家推荐一款免费的开发组件Graccvs,完成文件正文提取分析,组件支持格式多,调用简单方便,正文提取速度快。

组件是以AAR格式提供的,这里是下载地址模板OCR识别工具--Graccvs文件正文提取开发组件--软件下载 (gaya-soft.cn)。 同时网站提供Android Studio工程示例说明??????Graccvs文件正文提取开发组件--Android--Java--在线帮助 (gaya-soft.cn)

以下简单结束调用过程:

1:创建工程。
2:app\libs文件夹导入graccvs.aar。
3:Android工程的app的build.gradle文件dependencies单元中增加如下代码
???implementation files('libs/graccvs.aar')
4:调用初始化函数Load设置动态链接库需要的临时文件夹。
5:调用Auth注册,免费版本设置为空。
6:调用文件函数ToTextFile、HttpToString等提取N个不同文件的正文,或者使用异步函数批量处理文件。
7:完成文件提取任务后调用 Unload函数,释放资源组件使用的资源。

主要代码单元 MainActivity.java:

package tx.graccvslibtest;
 
import android.os.Bundle;
import android.app.Activity;
import android.content.pm.PackageManager;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.core.app.ActivityCompat;
import java.io.File;
import java.io.IOException;
//注意:这里导入包含文件
import graccvs.GraccvsLib;
 
public class MainActivity extends AppCompatActivity {
    enum DllErrCode {
        TFE_OK,
        TFE_UNKNOW,
        TFE_FILE_NOTEXIST,
        TFE_SAVE_ERROR,
        TFE_OUTSIZE,
        TFE_UNSUPPORTED ,
        TFE_ERROR_INTERFACE ,
        TFE_HTTP_ERR,
        TFE_HTTP_FILE_NULL ,
        TFE_LICENCE_ERR;
    }
 
    // 根据错误类型返回错误信息
    public String codeText(DllErrCode code) {
        switch (code)
        {
            case TFE_OK:
                return "ok";
            case TFE_UNKNOW:
                return "未知错误";
            case TFE_FILE_NOTEXIST:
                return "提取源文件不存在";
            case TFE_SAVE_ERROR:
                return "保存目标文件失败";
            case TFE_OUTSIZE:
                return "提取的源文件超出设置的大小范围";
            case TFE_UNSUPPORTED:
                return "不支持的提取文件格式";
            case TFE_ERROR_INTERFACE:
                return "得到接口失败";
            case TFE_HTTP_ERR :
                return "HTTP下载文件失败";
            case TFE_HTTP_FILE_NULL :
                return "HTTP文件为空";
            case TFE_LICENCE_ERR:
                return "软件许可错误";
            default:
                return "未知错误2";
        }
    }
 
    private static final int REQUEST_INTERNET = 1;
    private static String[] PERMISSIONS_INTERNET = {
            "android.permission.INTERNET" };
    // 申请权限
    public static void verifyStoragePermissions(Activity activity) {
        try {
            //检测网络权限
            int permission = ActivityCompat.checkSelfPermission(activity,
                    "android.permission.INTERNET");
            if (permission != PackageManager.PERMISSION_GRANTED) {
                // 没有权限,去申请
                ActivityCompat.requestPermissions(activity, PERMISSIONS_INTERNET,REQUEST_INTERNET);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    //
    GraccvsLib grlib = new GraccvsLib();
 
    //测试写文件
    private void testCreateFile() {
        try {
            File filesDir = getFilesDir();
            File txtFile = new File(filesDir,"test.txt");
            txtFile.createNewFile();
            txtFile.delete();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        //检测读写权限
        verifyStoragePermissions(this);
        //测试是否可以写文件
        testCreateFile();
        //当前应用的files文件夹
        File filesDir = getFilesDir();
        //初始化
        String tempPath = filesDir.getAbsolutePath() + "/";
        grlib.load(tempPath);
 
        String sn = "";
        // 企业版这里设置授权文本, 免费版都为空
        grlib.auth("graccvs--GayaSoftware", sn);
        TextView textView = findViewById(R.id.textView1);
 
        // ------------------------提取正文,返回字符串------------------------
        Button btTest1 = findViewById(R.id.btToString);
        btTest1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //输入文件名称
                String fn = filesDir.getAbsolutePath() +  "/Adobe Intro.ofd"; //"/graccvs文件正文提取接口.pdf";
                //提取文件正文
                String outText = grlib.toString(fn);
                textView.setText(outText);
            }
        });
 
        // ------------------------提取正文并保存为文本文件------------------------
        Button btTest2 = findViewById(R.id.btSaveToTextFile);
        btTest2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //输入文件名称
                String infile = filesDir.getAbsolutePath() + "/简可信模板OCR识别工具帮助.docx";
                String outfile = filesDir.getAbsolutePath() + "/out.txt";
                //提取文件正文,保存到目标文件
                int r = grlib.toTextFile(infile, outfile);
 
                DllErrCode code = DllErrCode.values()[r];
                if (code != DllErrCode.TFE_OK)
                {
                    // 得到错误方式1: 根据R值调用函数ErrText得到具体错误信息, 此方式速度快
                    String err = codeText(code);
                    textView.setText("error from code:" + err);
 
                    // 方式2:调用DLL函数,得到具体错误信息, 此方式错误信息更加准确
                    err = grlib.lastErr();
                    textView.setText(textView.getText() + ", error from dll lastErr:" + err);
                }
                else
                {
                    textView.setText("toTextFile function over");
                }
            }
        });
 
        // ------------------------HTTP提取正文,返回字符串------------------------
        Button btTest3 = findViewById(R.id.btHttpToString);
        btTest3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //输入url
                String url = "https://www.gaya-soft.cn/dfs/v2/简可信模板OCR识别工具帮助.docx";
                //提取文件正文
                String outText = grlib.httpToString(url, ".docx", 180 * 1000, "");
                textView.setText(outText);
            }
        });
 
        // ------------------------HTTP提取正文并保存为文本文件------------------------
        Button btTest4 = findViewById(R.id.btHttpToTextFile);
        btTest4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //textView.setText(grlib.wmi());
                //输入url
                String url = "https://www.gaya-soft.cn/dfs/v2/graccvs文件正文提取接口.pdf";
                String outfile = filesDir.getAbsolutePath() + "/out2.txt";
                String params = "{\"headers\":[{\"client_id\": \"g01x9\"}, {\"client_secret\": \"e23c89cc9fe\"}], \"cookies\":[{\"name\": \"ga\", \"value\": \"1020\", \"expires\":36000000, \"path\": \"/\"}]}";
 
                //提取文件正文
                int r = grlib.httpToTextFile(url, ".pdf", outfile, 0, params);
 
                DllErrCode code = DllErrCode.values()[r];
                if (code != DllErrCode.TFE_OK)
                {
                    // 得到错误方式1: 根据R值调用函数ErrText得到具体错误信息, 此方式速度快
                    String err = codeText(code);
                    textView.setText("error from code:" + err);
                }
                else
                {
                    textView.setText("httpToTextFile function over");
                }
            }
        });
    }
 
    @Override
    protected void onDestroy(){
        grlib.unload();
        super.onDestroy();
    }
}

build.gradle

//
plugins {
    id 'com.android.application'
}
 
android {
    compileSdk 31
 
    defaultConfig {
        applicationId "tx.graccvslibtest"
        minSdk 27
        targetSdk 31
        versionCode 1
        versionName "1.0"
 
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
 
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
 
dependencies {
    implementation files('libs/graccvs.aar')
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.3.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

测试效果:

?

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 11:01:03  更:2022-01-24 11:01:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:44:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码