当前位置:   article > 正文

Android系统中如何得到各种格式的文件正文(office文件,PDF,邮件,html,zip等)_安卓 获取系统支持的文件格式 java代码

安卓 获取系统支持的文件格式 java代码

在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: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:

  1. package tx.graccvslibtest;
  2. import android.os.Bundle;
  3. import android.app.Activity;
  4. import android.content.pm.PackageManager;
  5. import androidx.appcompat.app.AppCompatActivity;
  6. import android.view.View;
  7. import android.widget.Button;
  8. import android.widget.TextView;
  9. import androidx.core.app.ActivityCompat;
  10. import java.io.File;
  11. import java.io.IOException;
  12. //注意:这里导入包含文件
  13. import graccvs.GraccvsLib;
  14. public class MainActivity extends AppCompatActivity {
  15. enum DllErrCode {
  16. TFE_OK,
  17. TFE_UNKNOW,
  18. TFE_FILE_NOTEXIST,
  19. TFE_SAVE_ERROR,
  20. TFE_OUTSIZE,
  21. TFE_UNSUPPORTED ,
  22. TFE_ERROR_INTERFACE ,
  23. TFE_HTTP_ERR,
  24. TFE_HTTP_FILE_NULL ,
  25. TFE_LICENCE_ERR;
  26. }
  27. // 根据错误类型返回错误信息
  28. public String codeText(DllErrCode code) {
  29. switch (code)
  30. {
  31. case TFE_OK:
  32. return "ok";
  33. case TFE_UNKNOW:
  34. return "未知错误";
  35. case TFE_FILE_NOTEXIST:
  36. return "提取源文件不存在";
  37. case TFE_SAVE_ERROR:
  38. return "保存目标文件失败";
  39. case TFE_OUTSIZE:
  40. return "提取的源文件超出设置的大小范围";
  41. case TFE_UNSUPPORTED:
  42. return "不支持的提取文件格式";
  43. case TFE_ERROR_INTERFACE:
  44. return "得到接口失败";
  45. case TFE_HTTP_ERR :
  46. return "HTTP下载文件失败";
  47. case TFE_HTTP_FILE_NULL :
  48. return "HTTP文件为空";
  49. case TFE_LICENCE_ERR:
  50. return "软件许可错误";
  51. default:
  52. return "未知错误2";
  53. }
  54. }
  55. private static final int REQUEST_INTERNET = 1;
  56. private static String[] PERMISSIONS_INTERNET = {
  57. "android.permission.INTERNET" };
  58. // 申请权限
  59. public static void verifyStoragePermissions(Activity activity) {
  60. try {
  61. //检测网络权限
  62. int permission = ActivityCompat.checkSelfPermission(activity,
  63. "android.permission.INTERNET");
  64. if (permission != PackageManager.PERMISSION_GRANTED) {
  65. // 没有权限,去申请
  66. ActivityCompat.requestPermissions(activity, PERMISSIONS_INTERNET,REQUEST_INTERNET);
  67. }
  68. } catch (Exception e) {
  69. e.printStackTrace();
  70. }
  71. }
  72. //
  73. GraccvsLib grlib = new GraccvsLib();
  74. //测试写文件
  75. private void testCreateFile() {
  76. try {
  77. File filesDir = getFilesDir();
  78. File txtFile = new File(filesDir,"test.txt");
  79. txtFile.createNewFile();
  80. txtFile.delete();
  81. } catch (IOException e) {
  82. e.printStackTrace();
  83. }
  84. }
  85. @Override
  86. protected void onCreate(Bundle savedInstanceState) {
  87. super.onCreate(savedInstanceState);
  88. setContentView(R.layout.activity_main);
  89. //检测读写权限
  90. verifyStoragePermissions(this);
  91. //测试是否可以写文件
  92. testCreateFile();
  93. //当前应用的files文件夹
  94. File filesDir = getFilesDir();
  95. //初始化
  96. String tempPath = filesDir.getAbsolutePath() + "/";
  97. grlib.load(tempPath);
  98. String sn = "";
  99. // 企业版这里设置授权文本, 免费版都为空
  100. grlib.auth("graccvs--GayaSoftware", sn);
  101. TextView textView = findViewById(R.id.textView1);
  102. // ------------------------提取正文,返回字符串------------------------
  103. Button btTest1 = findViewById(R.id.btToString);
  104. btTest1.setOnClickListener(new View.OnClickListener() {
  105. @Override
  106. public void onClick(View v) {
  107. //输入文件名称
  108. String fn = filesDir.getAbsolutePath() + "/Adobe Intro.ofd"; //"/graccvs文件正文提取接口.pdf";
  109. //提取文件正文
  110. String outText = grlib.toString(fn);
  111. textView.setText(outText);
  112. }
  113. });
  114. // ------------------------提取正文并保存为文本文件------------------------
  115. Button btTest2 = findViewById(R.id.btSaveToTextFile);
  116. btTest2.setOnClickListener(new View.OnClickListener() {
  117. @Override
  118. public void onClick(View v) {
  119. //输入文件名称
  120. String infile = filesDir.getAbsolutePath() + "/简可信模板OCR识别工具帮助.docx";
  121. String outfile = filesDir.getAbsolutePath() + "/out.txt";
  122. //提取文件正文,保存到目标文件
  123. int r = grlib.toTextFile(infile, outfile);
  124. DllErrCode code = DllErrCode.values()[r];
  125. if (code != DllErrCode.TFE_OK)
  126. {
  127. // 得到错误方式1: 根据R值调用函数ErrText得到具体错误信息, 此方式速度快
  128. String err = codeText(code);
  129. textView.setText("error from code:" + err);
  130. // 方式2:调用DLL函数,得到具体错误信息, 此方式错误信息更加准确
  131. err = grlib.lastErr();
  132. textView.setText(textView.getText() + ", error from dll lastErr:" + err);
  133. }
  134. else
  135. {
  136. textView.setText("toTextFile function over");
  137. }
  138. }
  139. });
  140. // ------------------------HTTP提取正文,返回字符串------------------------
  141. Button btTest3 = findViewById(R.id.btHttpToString);
  142. btTest3.setOnClickListener(new View.OnClickListener() {
  143. @Override
  144. public void onClick(View v) {
  145. //输入url
  146. String url = "https://www.gaya-soft.cn/dfs/v2/简可信模板OCR识别工具帮助.docx";
  147. //提取文件正文
  148. String outText = grlib.httpToString(url, ".docx", 180 * 1000, "");
  149. textView.setText(outText);
  150. }
  151. });
  152. // ------------------------HTTP提取正文并保存为文本文件------------------------
  153. Button btTest4 = findViewById(R.id.btHttpToTextFile);
  154. btTest4.setOnClickListener(new View.OnClickListener() {
  155. @Override
  156. public void onClick(View v) {
  157. //textView.setText(grlib.wmi());
  158. //输入url
  159. String url = "https://www.gaya-soft.cn/dfs/v2/graccvs文件正文提取接口.pdf";
  160. String outfile = filesDir.getAbsolutePath() + "/out2.txt";
  161. String params = "{\"headers\":[{\"client_id\": \"g01x9\"}, {\"client_secret\": \"e23c89cc9fe\"}], \"cookies\":[{\"name\": \"ga\", \"value\": \"1020\", \"expires\":36000000, \"path\": \"/\"}]}";
  162. //提取文件正文
  163. int r = grlib.httpToTextFile(url, ".pdf", outfile, 0, params);
  164. DllErrCode code = DllErrCode.values()[r];
  165. if (code != DllErrCode.TFE_OK)
  166. {
  167. // 得到错误方式1: 根据R值调用函数ErrText得到具体错误信息, 此方式速度快
  168. String err = codeText(code);
  169. textView.setText("error from code:" + err);
  170. }
  171. else
  172. {
  173. textView.setText("httpToTextFile function over");
  174. }
  175. }
  176. });
  177. }
  178. @Override
  179. protected void onDestroy(){
  180. grlib.unload();
  181. super.onDestroy();
  182. }
  183. }

build.gradle

  1. //
  2. plugins {
  3. id 'com.android.application'
  4. }
  5. android {
  6. compileSdk 31
  7. defaultConfig {
  8. applicationId "tx.graccvslibtest"
  9. minSdk 27
  10. targetSdk 31
  11. versionCode 1
  12. versionName "1.0"
  13. testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
  14. }
  15. buildTypes {
  16. release {
  17. minifyEnabled false
  18. proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
  19. }
  20. }
  21. compileOptions {
  22. sourceCompatibility JavaVersion.VERSION_1_8
  23. targetCompatibility JavaVersion.VERSION_1_8
  24. }
  25. }
  26. dependencies {
  27. implementation files('libs/graccvs.aar')
  28. implementation 'androidx.appcompat:appcompat:1.2.0'
  29. implementation 'com.google.android.material:material:1.3.0'
  30. implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
  31. testImplementation 'junit:junit:4.+'
  32. androidTestImplementation 'androidx.test.ext:junit:1.1.2'
  33. androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
  34. }

测试效果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/319293
推荐阅读
相关标签
  

闽ICP备14008679号