基于Android的Word文档阅读器

news/2024/10/18 7:58:31/

        随着android系统的发展,android已经得到广泛的认可,作为一名普通的大学生,真的希望自己能在android系统上做一个可以让大家使用、方便大家工作的一个软件,最后决定做一个基于andriod的Word格式阅读器。

        经过一些查找工作,终于找到了可以在android系统上使用的用于读取Word格式文档的开源包--POI(The Java API For Microsoft Documents)。下载地址:http://poi.apache.org/

       POI是Apache的一个子项目,其目的是提供对基于OOXML(Microsoft Office Open XML)和OLE2(Object Linking and Embedding)的各种文档操作的Java APIs包。该项目分为几个组件,其中包括一个叫做HWPF的组件,它只能操作Word文件。这就是我将要使用的组件。HWPF的全称是Horrible Word Processor Format。翻译成中文是“可怕的文档处理格式”,利用HWPF,开发者可以用纯Java代码实现在Android系统是读取Word文档。HWPF组件是POI项目中用来实现Word文档读取的一个重要组件,以下是该组件中几个重要的类:

(1)Range:是所有HWPF对象模型的核心类,Word文档中字符的所有属性都是继承这个类得到的。

(2)HWPFDocument:文件类。任何形式的Word文档的最终表现形式都是对该对象进行一些属性的定制。

(3)Paragraph:是Word文档中基本的组成部分,每个文档都被划分成一个一个的段落,所有的段落最终组成一个Word文档。

(4)Picture:Word文档中嵌入的每张图片都是由Picture对象来表示的,它包括了图片的大小、内容等一系列属性。

(5)Table:Word文档中嵌入的每张表格都是有Table对象来表示的,它包括了表格中每行的TableRow对象和行数等属性。

       其他的类文件对以上核心的类进行功能补充,最终完成了Word 文档的读取。

       由于Word格式文档中有图片、表格和字符串,为了能在android系统上全部进行显示,选择使用WebView进行显示。首先将Word格式文档中的内容读取出来,加上对应的HTML标签,然后写入HTML文件中,最后直接使用WebView进行读取HTML文件的内容。

判断当前段落是表格、图片还是一段文字的代码:

public void writeParagraphContent(Paragraph paragraph){Paragraph p = paragraph;int pnumCharacterRuns = p.numCharacterRuns();for( int j = 0; j < pnumCharacterRuns; j++){CharacterRun run = p.getCharacterRun(j);if(run.getPicOffset() == 0 || run.getPicOffset() >= 1000){if(presentPicture < pictures.size()){writePicture();}}else{try{String text = run.text();if(text.length() >= 2 && pnumCharacterRuns < 2){output.write(text.getBytes());}else{int size = run.getFontSize();int color = run.getColor();String fontSizeBegin = "<font size=\"" + decideSize(size) + "\">";String fontColorBegin = "<font color=\"" + decideColor(color) + "\">";String fontEnd = "</font>";String boldBegin = "<b>";String boldEnd = "</b>";String islaBegin = "<i>";String islaEnd = "</i>";output.write(fontSizeBegin.getBytes());output.write(fontColorBegin.getBytes());if(run.isBold()){output.write(boldBegin.getBytes());}if(run.isItalic()){output.write(islaBegin.getBytes());}output.write(text.getBytes());if(run.isBold()){output.write(boldEnd.getBytes());}if(run.isItalic()){output.write(islaEnd.getBytes());}output.write(fontEnd.getBytes());output.write(fontEnd.getBytes());}}catch(Exception e){System.out.println("Write File Exception");}}}
}

在SDCARD上创建一个图片的代码:

public void writePicture(){Picture picture = (Picture)pictures.get(presentPicture);byte[] pictureBytes = picture.getContent();Bitmap bitmap = BitmapFactory.decodeByteArray(pictureBytes, 0, pictureBytes.length);makePictureFile();presentPicture++;File myPicture = new File(picturePath);try{FileOutputStream outputPicture = new FileOutputStream(myPicture);outputPicture.write(pictureBytes);outputPicture.close();}catch(Exception e){System.out.println("outputPicture Exception");}String imageString = "<img src=\"" + picturePath + "\"";if(bitmap.getWidth() > screenWidth){imageString = imageString + " " + "width=\"" + screenWidth + "\"";}imageString = imageString + ">";try{output.write(imageString.getBytes());}catch(Exception e){System.out.println("output Exception");}
}

运行效果截图:

读取图片和文字:



读取表格和文字:


源代码及测试Word文档打包:

http://download.csdn.net/source/3432624

本文系“暑期大学生博客大赛-2011 Android成长篇“参赛文章



http://www.ppmy.cn/news/191369.html

相关文章

PDF阅读器使用技巧

期末大考即将来临&#xff0c;不少朋友需要复习做笔记&#xff0c;下面来分享一下使用福昕PDF阅读器的使用技巧吧&#xff0c;希望能够助准备考试的朋友一臂之力。 使用技巧一、添加书签&#xff1b; 在阅读和浏览时&#xff0c;遇到很长的文章&#xff0c;无法在短时间一次性看…

免费离线使用的MarkDown阅读器

自己内网工作环境下&#xff0c;用MarkDown写了功能的帮助文档&#xff0c;要给策划的小伙伴看&#xff0c;苦苦找了好久MarkDown阅读器&#xff0c;终于找到了。 免安装 免费 支持Windows XP/7/8/10/11 不需要安装额外运行环境&#xff0c;下载可用&#xff0c;可离线使用。 …

身份证阅读器二次开发说明

身份证阅读器二次开发现已支持常用的微软系统&#xff0c;如windows系统&#xff0c;同时支持安卓&#xff08;Android&#xff09;平台、Linux平台、单片机等的二次开发应用&#xff0c;支持CS、BS构架。身份证阅读器二次开发接口文件目前常用的开发语言几乎全部支持。 广东东…

android 支持各种格式的阅读器,android txt小说阅读器的实现(完美实现分页阅读,支持常见编码格式)...

前一阵由于项目的需求,需要一个预览txt文件的功能,于是自己写了一个,简单的txt文件阅读器,实现了点击分页切换、滑动分页切换,效果如下: 既然做出来,想整理一下实现的思路,有时间再封装一下,做成一个自己喜欢的风格的阅读器。 实现这个肯定是自定义view啦,将字符一个…

html5小说阅读器源码,文本源码阅读器(NexusTextView)

NexusTextView是一款简单实用的文本/源码阅读器&#xff0c;能够帮助用户更好地阅读程序源码并将其保存为HTML格式&#xff0c;还具有查看二进制文件以及添加自定义语法等功能&#xff0c;功能强大简单实用。有需要的小伙伴欢迎来西西下载体验。 软件简介&#xff1a; 一款小巧…

Ubuntu安装caj阅读器

CAJViewer提供了Linux版本&#xff0c;其中对Ubuntu系统支持16.04及以上版本。 1.下载文件 在https://cajviewer.cnki.net/download.html下载文件 可直接点击https://download.cnki.net/CAJViewer-x86_64-buildubuntu1604-210401.AppImage下载 2.设置文件可执行 右键CAJV…

epub电子书阅读器 EpubViewer

桌面版epub电子文档阅读软件比较少&#xff0c;所以自己编写了一个EpubViwer&#xff0c;直接上图和功能&#xff1a; 功能&#xff1a; 可以同时打开多个Epub文件可以多标签显示Epub电子书不同章节左边栏显示Epub电子书目录可以在目录栏搜索电子书章节可以多标签显示Epub电子…

jt2go嵌入html控件,JT2Go(JT文件阅读器) 免费版v11.2

JT2Go是一款非常方便的文件查看工具&#xff0c;能帮助用户查看JT&#xff0c;PDF等格式的文件。用户可在其中查看3D图形&#xff0c;并进行修改。软件具有精确的测量、缩放、搜索等功能。让你能更好的管理电脑中的JT文件。软件主要用于文件的查看&#xff0c;使用起来并无难度…