java读取word文件并设置其字体样式_Java读取word文件,字体,颜色(示例代码)

在Android读取Word文件时,在网上查看时可以用tm-extractors,但好像没有提到怎么读取Word文档中字体的颜色,字体,上下标等相关的属性。但由于需要,要把doc文档中的内容(字体,下划线,颜色等)读取应用到android中(不包括图片和图表)。

后面采用的是poi三方jar包(原包太大,可以从源代码里自己抽取有用的一些代码减少包的大小)。

我的想法是:把doc中的内容解析出来后,加上html对应的标签,在android中通过Html.fromHtml在TextView中进行显示,或者通过WebView.loadData进行加载显示

但测试后,发现如果加载太多内容的话,在Android中效率不行。

效果(该图的效果是在TextView中的效果,在WebView中效果会更好些):

doc图:

lazy.gif

android图:

lazy.gif

做法1:(解析为span样式的,这种做法只能用WebView方式加载,Html.fromHtml无效)

Java代码  lazy.gif

/**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()

你可能感兴趣的:(java读取word文件并设置其字体样式_Java读取word文件,字体,颜色(示例代码))