当前位置:首页 » 安卓系统 » androidwordview

androidwordview

发布时间: 2022-06-29 11:14:09

⑴ 如何用android解析docx文档

android上查阅word类型文档的方式主要有几种,下载诸如wps,office等应用,用户可以直接打开需要查看的word文档,对于应用开发者来说,如何在自己的应用中集成word文档查阅功能,使自己的app不受限于第三方应用有没有安装,有时候还是需要考虑的。
集成app阅读word功能也可以通过几种方式实现,例如购买专门的sdk包,像Aspose等(money啊)或者服务器端处理成图片或者html,然后android端去请求访问等方式。对于大部分个人开发者而言,这两种方式就显得比较重量级了。
下面介绍两种专门解析docx文件的方式:docx4j 以及poi
Docx4j
github地址:https://github.com/plutext/AndroidDocxToHtml
这个是官网demo,基本可以直接使用,解析出来的格式比较全,样式也比较接近原文档,就是解析速度令人不敢恭维,手机上测试的话,一般一份儿docx文档都需要30s以上甚至更多,有时候测试文档明明就只有几十k大小而已,对于比较大,比较复杂的文档,时间就更是让人崩溃。解析速度不是令人满意。
解析测试中遇到的bug
1.表格丢失,内容丢失:内嵌表格(表格中还有表格的这种)的内容和样式会有部分丢失现象
2.表格(又是我?)样式:假如文档中的表格在word文档中排版时超出了该文档的边界线,你会发现超出边界的内容又不见了
3.目录乱码:如果文档中有目录,目录会被加上一些超链接,需要手工处理去掉
4.图片无法解析:有一些格式的图片无法解析,比如EMF,WMF这种类型的
5.批注无法显示:目前没有找到批注显示的地方,暂且算丢失吧,后面在试试
6.。。。其它暂时还没被发现的问题
POI
poi是apache的一个开源项目,不多说,直接上官网去下载就可以
官网地址:http://poi.apache.org/
如果你是android studio用户:那就很简单了
只需要引入依赖(版本号不一定哦,gradle会自己把相关依赖包下载到位):
compile 'fr.opensagres.xdocreport:org.apache.poi.xwpf.converter.xhtml:1.0.5'

那如果你是eclipse用户(伙计,赶紧用studio吧)
需要手工引入以下jar包,包括:
poi , poi-ooxml , ooxml-schema,org.apache.poi.xwpf.converter.xhtml,org.apache.poi.xwpf.converter.core

实现代码如下
{
InputStream is = new FileInputStream(file);
XWPFDocument docx = new
XWPFDocument(is);
OutputStream os = new ByteArrayOutputStream();
String imgDesPath = "/sdcard/img";
File imgFile = new File("/sdcard/img");
this.baseUrl = this.getDir("image", Context.MODE_PRIVATE).toURL().toString();
if (!imgFile.exists()) {
file.mkdirs();
}

poi解析的问题
速度比docx4j要稍快一点,会有文档内容解析不全样式丢失的情况
流程
调用接口将docx转化为html,然后app中通过webview加载该html即可显示
转化代码如下(我就想问下,这代码格式到底该怎么调啊~好烦躁):
try {
InputStream is = new FileInputStream(file);
XWPFDocument docx = new
XWPFDocument(is);
OutputStream os = new ByteArrayOutputStream();
String imgDesPath = "/sdcard/img";
File imgFile = new File("/sdcard/img");
this.baseUrl = this.getDir("image", Context.MODE_PRIVATE).toURL().toString();
if (!imgFile.exists()) {
file.mkdirs();
}
XHTMLOptions options = XHTMLOptions.create().URIResolver(new BasicURIResolver(imgDesPath));
options.setExtractor(new FileImageExtractor(imgFile));
options.setIgnoreStylesIfUnused(false);
options.setFragment(true);
XHTMLConverter.getInstance().convert(docx, os, options);
**os.write("/sdcard/xxx/html文件")**
} catch (Exception e) {
Log.d(TAG, "catch " + e.getMessage());
}

webview 里面直接load 上面生成的html文件就可以了

⑵ Android WebView 在开发过程中有哪些坑

WebView:
(一)、介绍:
android提供了一个内置浏览器,该浏览器可以查看网站,查看邮件,播放视频。要使用该内置浏览器,要通过WebView组件实现。webView组件式专门用来浏览网页的。
类结构:
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.AbsoluteLayout
↳ android.webkit.WebView

(二)、webview组件常用方法:
loadUrl()
loadData()
loadDataWithBaseURL()
capturePicture()
goBack()
goForward()
stopLoading()
reload()
(三)、WebView组件显示url页面的内容:
1、基本代码:
webView_main = (WebView) findViewById(R.id.webView_main);
webView_main.loadUrl("http://www.qq.com");

(四)、WebView组件加载html代码:
1、基本代码:
webView_main = (WebView) findViewById(R.id.webView_main);
// webView_main.loadData(data, "text/html","utf-8");//这个方法中虽然设置了字符集,但是运行效果中发现依然中文会显示乱码。为了解决这个问题,建议使用loadDataWithBaseURL()方法。
webView_main.loadDataWithBaseURL(null, data, "text/html", "utf-8", null);

【备注:】MIME【了解】
概念:MIME意为多功能Internet邮件扩展,它设计的最初目的是为了在发送 电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理。然而当它被HTTP协议支持之后,它的意义就更为显着了。它使得HTTP传输的不仅是普通的文本,而变得丰富多彩。
每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类。
常见的MIME类型(通用型):
超文本标记语言文本 .html text/html
xml文档 .xml text/xml
XHTML文档 .xhtml application/xhtml+xml
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
PDF文档 .pdf application/pdf
Microsoft Word文件 .word application/msword
PNG图像 .png image/png
GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
任意的二进制数据 application/octet-stream
2、如果加载的html代码中包含javascript语言,会如何呢?

运行后发现,所有的javascript都不会执行。因为WebView 在默认情况下不支持javascript。如何让执行javascript呢?
让WebView支持javascript的两个步骤:
使用 WebView 组件的WebSettings对象的setJavaScriptEnabled()方法。这种做法是让 WebView 能支持绝大多数的javascript语言。但是依然不支持alert等警告对话框语句。
使用 WebView 组件的setWebChromeClient()方法。这种做法是让 WebView 也支持显示alert等警告对话框。
基本代码:

webView_main.getSettings().setJavaScriptEnabled(true);// 支持运行javascript

webView_main.setWebChromeClient(new WebChromeClient());// 支持运行特殊的javascript(例如:alert())

webView_main.setWebViewClient(new WebViewClient());// 当点击超链地址后不会新打开浏览器来访问,而是始终在本app中浏览页面

3、如果html中包含有超级链接地址,WebView能顺利执行吗?
经过运行后发现,WebView中的超链地址在点击后,会跳出该应用程序,而弹出新的浏览器去访问该网页。
如果解决呢?调用webview对象的setWebViewClient()方法即可解决。
webView_main.setWebViewClient(new WebViewClient());
(五)、用WebView实现“网页版天气预告”

【备注:】调用页面地址:http://m.weather.com.cn/m/pn12/weather.htm?id=101010100T
webView_main = (WebView) findViewById(R.id.webView_main);
webView_main.getSettings().setJavaScriptEnabled(true);
webView_main.setWebChromeClient(new WebChromeClient());
webView_main.setWebViewClient(new WebViewClient());
webView_main.loadUrl("http://m.weather.com.cn/m/pn12/weather.htm?id=101010100T");
(六)、制作简单的网页浏览器:
1、核心代码:
publicclass MainActivity extends Activity {
privateEditText editText_main_url;
privateWebView webView_main;
private String url = "";
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText_main_url = (EditText) findViewById(R.id.editText_main_url);
webView_main = (WebView) findViewById(R.id.webView_main);
// 让webview对象支持解析javascript语句
webView_main.getSettings().setJavaScriptEnabled(true);
// 让webview对象支持解析alert()等特殊的javascript语句
webView_main.setWebChromeClient(new WebChromeClient());
// 如果不使用该句代码,在点击超链地址后,会跳出程序,而弹出浏览器访问网页。
webView_main.setWebViewClient(new WebViewClient());
}
publicvoid clickButton(View view) {
switch (view.getId()) {
// 浏览器中后退键监听
caseR.id.button_main_goback:
webView_main.goBack();
break;
// 浏览器前进键监听
caseR.id.button_main_goforward:
webView_main.goForward();
break;
// 当输入网址后,点击该按钮,可以执行访问
caseR.id.button_main_submit:
url = editText_main_url.getText().toString();
if ((url == null) || url.equals("")) {
Toast.makeText(MainActivity.this, "请输入url地址!", Toast.LENGTH_LONG).show();
} else {
if (url.indexOf("http://") != 0) {
url = "http://" + url;
}
webView_main.loadUrl(url);
}
break;
// 浏览器停止加载键监听
caseR.id.button_main_stop:
webView_main.stopLoading();
break;
// 浏览器刷新键监听
default:
break;
}
}
}

⑶ 启用多进程webview这个有什么用

主要就是用来加载网页的,如果你做浏览器相关的应用,肯定要使用webview.还有就是,如果你访问自己的网页,可以使用Webview,通过webview能与JS互动,这样你就可以实现手机与网页的时时互动了。

(3)androidwordview扩展阅读:

web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。

起源:

1989年CERN(欧洲粒子物理研究所)中由Tim Berners-Lee领导的小组提交了一个针对Internet的新协议和一个使用该协议的文档系统,该小组将这个新系统命名为Word Wide Web,它的目的在于使全球的科学家能够利用Internet交流自己的工作文档。

这个新系统被设计为允许Internet上任意一个用户都可以从许多文档服务计算机的数据库中搜索和获取文档。1990年末,这个新系统的基本框架已经在CERN中的一台计算机中开发出来并实现了,1991年该系统移植到了其他计算机平台,并正式发布。

参考资料:网络-web

⑷ android中textview如何限制字数

一开始采用的方法是函数textView:shouldChangeTextInRange:replacementText:来进行判断:

[c-sharp] view plain
//键入Done时,插入换行符,然后执行addBookmark
- (BOOL)textView:(UITextView *)textView
shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text
{
//判断加上输入的字符,是否超过界限
NSString *str = [NSString stringWithFormat:@"%@%@", textView.text, text];
if (str.length > BOOKMARK_WORD_LIMIT)
{
textView.text = [textView.text substringToIndex:BOOKMARK_WORD_LIMIT];
return NO;
}
return YES;
}

但在使用中发现该方法在有联想输入的时候,根本无法对联想输入的词进行判断,然后尝试使用textViewDidChange:,验证可行:

[cpp] view plain
/*由于联想输入的时候,函数textView:shouldChangeTextInRange:replacementText:无法判断字数,
因此使用textViewDidChange对TextView里面的字数进行判断
*/
- (void)textViewDidChange:(UITextView *)textView
{
//该判断用于联想输入
if (textView.text.length > BOOKMARK_WORD_LIMIT)
{
textView.text = [textView.text substringToIndex:BOOKMARK_WORD_LIMIT];
}

⑸ Android开发如何读取并显示word和pdf文档

通过对数据库的索引,我们还为您准备了:
Android开发如何读取并显示word和pdf文档呢

问:有做过类似项目的朋友讲一下么?
答:大家好! 我是个Android新手,最近有个项目,其中有个需求就是在Android应用程序中查看word和pdf格式的文档(PS:不是用intent调用第三方软件打开文档哦~),可惜Android没有直接显示word和pdf文档的view。于是本菜鸟上网查了好久好久好久哇= =...
===========================================

android开发中怎样读取一个文件里的内容并把内容显...

问:我以为和java的读写文件一样的,但他好像有自己的获取输入输出留的方法...
答:基本上都差不多。 一般来说。文件,XML都放在assets这个文件夹下。
===========================================

android怎么读取带有图片的WORD文档

问:我以为和java的读写文件一样的,但他好像有自己的获取输入输出留的方法...
答:用Document to go或者quick office这类软件就可以了。这些软件在机锋市场和豌豆荚里一搜就有
===========================================

【Android开发】请问Android怎么打开word文件?

问:请问Android怎么打开word文件?网上看了好多,但都不能运行,有的说用PO...
答:用quick ooffice,在网络移动应用上下载quick office(pro版),拷贝到手机,安装好就行
===========================================

android编程:怎样读取txt文件

问:请问Android怎么打开word文件?网上看了好多,但都不能运行,有的说用PO...
答:StringBuffer buffer = new StringBuffer(); try { FileInputStream fis = new FileInputStream("/sdcard/XXX.txt"); InputStreamReader isr = new InputStreamReader(fis,"GB2312");//文件编码Unicode,UTF-8,ASCII,GB2312,Big5 Reader in = new...
===========================================

Android开发中读写office文件(word,ppt,excel)...

问:最近在写一个基于android平台的办公套件,其中设计到对word,ppt,excel...
答:简单的,可以使用POI处理 想处理复杂和能用的,只有在服务器端处理,再返回手机android查看
===========================================

Android开发 ,如何读取AndroidMainfest.xml里面的...

问:AndroidMainfest.xml文件如下:我想在Androd程序中读取android:largeHea...
答:largeheap是一个布尔类型的
===========================================

android程序中如何打开并编辑word,excel等文件?

问:我现在已经使用POI包,将内容放在html里,在webview上显示出来,但是不...
答:word?excel?笑话,微软都没有开发基于安卓版本的word,不过最近应该有动作了把。但是,你的软件和人家的软件,是属于两个APP,最多是给你个接口让你启动,但是至于编辑,你得看看人家的应用有没给你接口
===========================================

android开发中,如何实现读取pdf格式的文件,并把...

问:最近做关于android开发,读取pdf格式文件的应用,但是不知道如何下手啊...
答:得嵌入PDF第三方软件或自己编写一个类似的打开软件吧,否则理论上是看不了的。(仅供参考)

⑹ android中TextView中文乱码的问题

检测txt文件的编码方式。用记事本打开后“另存为”,选择编码方式为“UTF-8”。

⑺ Android在什么时候用到自定义View

android应用总的分为两类:软件类、游戏类。
软件一般用不到自定义View,都是使用android自带控件做的,因为android自带控件已经能满足一般应用的需求了。
而游戏用android自带控件做的话是很鸡肋的,因为游戏是多样化的,各种人物各种道具各种界面各种效果。所以游戏都是用自定义的View或SurfaceView作为画面内容的。

其实还不太清楚你想问的是不是这个,这样回答您满意么?

⑻ 当使用docx4j Android读取Word文档面临以下问题问题,怎么解决

大家好! 我是个Android新手,最近有个项目,其中有个需求就是在Android应用程序中查看word和pdf格式的文档(PS:不是用intent调用第三方软件打开文档哦~),可惜Android没有直接显示word和pdf文档的view。于是本菜鸟上网查了好久好久好久哇= =。 对于word,很多人说是用poi解析之后,再复写成html,最后用WebView显示。 那么,这个就是最普遍最简单的方法了么? 我感到很麻烦= = 还有别的方法么? 对于pdf,好像也是Apache旗下的pdfbox解析pdf,难道也要付写成html? 我下了一个MUPDF阅读器源码,好像不是那样做的。不过也是很麻烦很麻烦。 我是菜鸟嘛,先不提解析源文件和复写html的难度,就是能复写成html,我总感觉不保险,能保证和源文档格式一模一样么,能保证不会有些内容被遗漏么。。。还有,有人说poi只能解析.doc然后复写html,针对.docx很难弄成html?可是有人却说poi解析.docx是持续更新维护的技术,而poi解析.doc那部分组件已经不更新了。我就更迷茫了,如果我下功夫学习poi解析.doc,这个组件健全么,能完全解析正确么? 还有如果.doc解析好了,.docx能用poi解决问题嘛? 我只是不想浪费时间多走弯路,所以在这里请教csdn里的大神们给点建议和方向好么? 查看原帖>>

热点内容
scratch少儿编程课程 发布:2025-04-16 17:11:44 浏览:642
荣耀x10从哪里设置密码 发布:2025-04-16 17:11:43 浏览:368
java从入门到精通视频 发布:2025-04-16 17:11:43 浏览:89
php微信接口教程 发布:2025-04-16 17:07:30 浏览:312
android实现阴影 发布:2025-04-16 16:50:08 浏览:794
粉笔直播课缓存 发布:2025-04-16 16:31:21 浏览:348
机顶盒都有什么配置 发布:2025-04-16 16:24:37 浏览:213
编写手游反编译都需要学习什么 发布:2025-04-16 16:19:36 浏览:818
proteus编译文件位置 发布:2025-04-16 16:18:44 浏览:369
土压缩的本质 发布:2025-04-16 16:13:21 浏览:596