在Android读取Word文件时,在网上查看时可以用tm-extractors,但好像没有提到怎么读取Word文档中字体的颜色,字体,上下标等相关的属性。但由于需要,要把doc文档中的内容(字体,下划线,颜色等)读取应用到android中(不包括图片和图表)。
后面采用的是poi三方jar包(原包太大,可以从源代码里自己抽取有用的一些代码减少包的大小)。
我的想法是:把doc中的内容解析出来后,加上html对应的标签,在android中通过Html.fromHtml在TextView中进行显示,或者通过WebView.loadData进行加载显示
但测试后,发现如果加载太多内容的话,在Android中效率不行。
效果(该图的效果是在TextView中的效果,在WebView中效果会更好些):
doc图:
android图:
做法1:(解析为span样式的,这种做法只能用WebView方式加载,Html.fromHtml无效)
Java代码
/**Span样式
* 通过字体的样式进行加载
* @param inputStream
* @return
*/
public static String readDocToSpanByRun(InputStream inputStream) {
HWPFDocument hwpfDocument = null;
if(inputStream == null)
throw new RuntimeException("inputStream is null ...");
try{
hwpfDocument = new HWPFDocument(inputStream);
}catch(Exception e) {
throw new RuntimeException("HWPFDocment Exception", e);
}
Range allRange = hwpfDocument.getRange();
int length = allRange.numCharacterRuns();
StringBuffer sb = new StringBuffer();
CharacterRun cur;
String text = "";
for (int i = 0; i
cur = allRange.getCharacterRun(i);
sb.append(CharacterRunUtils.toSpanType(cur));
text = CharacterRunUtils.getSpicalSysbomByRun(cur.text());
if(cur.getSubSuperScriptIndex() == 1)
sb.append("").append(text).append("");
else if(cur.getSubSuperScriptIndex()