栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android系统中如何得到各种格式的文件正文(office文件,PDF,邮件,html,zip等)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android系统中如何得到各种格式的文件正文(office文件,PDF,邮件,html,zip等)

在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)。

组件支持常见各种文件格式”.pdf", ".doc", ".odt", ".docx", ".dotm", ".docm", ".wps", ".xls", ".xlsx", ".xlsm", ".xltm", ".et", ".ppt", ".pptx", ".potm", ".pptm", ".ppsm", ".dps", ".ofd"(电子发票版式文件), ".rtf",".html", ".htm", ".mht", ".mhtml", ".eml", ".emmx", "xmind", "gmind", ".chm", ".zip" 等。

以下简单的调用过程:

1:创建工程。
2:applibs文件夹导入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'
}

测试效果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/715753.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号