安卓文档解析

来源:互联网 发布:软件研究资料 编辑:程序博客网 时间:2024/06/05 17:17

之前做的一个项目有需要用到支持对Word文档的查看,于是就从网上找了一些现成的DEMO。

对doc类型的处理方法有很多,举个例子:

private void convert2Html(String fileName, String outPutFile) throws TransformerException,        IOException,        ParserConfigurationException {    HWPFDocument wordDocument = new HWPFDocument(new FileInputStream(fileName));    WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(DocumentBuilderFactory            .newInstance()            .newDocumentBuilder().newDocument());    wordToHtmlConverter.setPicturesManager(new PicturesManager() {        @Overridepublic String savePicture(byte[] content, PictureType pictureType, String                suggestedName, float widthInches,                                  float heightInches) {            return suggestedName;        }    });    wordToHtmlConverter.processDocument(wordDocument);    // save pictures@SuppressWarnings("rawtypes")    List pics = wordDocument.getPicturesTable().getAllPictures();    if (pics != null) {        for (int i = 0; i < pics.size(); i++) {            Picture pic = (Picture) pics.get(i);            System.out.println();            try {                pic.writeImageContent(new FileOutputStream(Environment                        .getExternalStorageDirectory() + "/doc/"+ pic.suggestFullFileName()));            } catch (FileNotFoundException e) {                e.printStackTrace();            }        }    }    Document htmlDocument = wordToHtmlConverter.getDocument();    ByteArrayOutputStream out = new ByteArrayOutputStream();    DOMSource domSource = new DOMSource(htmlDocument);    StreamResult streamResult = new StreamResult(out);    TransformerFactory tf = TransformerFactory.newInstance();    Transformer serializer = tf.newTransformer();    serializer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");    serializer.setOutputProperty(OutputKeys.INDENT, "yes");    serializer.setOutputProperty(OutputKeys.METHOD, "html");    serializer.transform(domSource, streamResult);    out.close();    writeFile(new String(out.toByteArray()), outPutFile);}
    docx是对doc文档进行压缩处理后的文档,用解析doc的方法解析不了docx类型的文档,需要特殊的处理。一般解析docx类型文档的方法,是通过poi或者docx4j,我在项目中
最终使用的是AndroidDocxToHtml这个开源项目。在eclipse上可以正常使用,但我在android studio中使用时,却报出一错误,不知道是不是只有我一个人需要了这个问题。
跟踪Log输出,发现是在ae-awt.jar中使用了jdk中的rt.jar中的一个文件,在eclipse可以很好的支持对jdk中rt.jar文件的支持,但在android studio中却不支持。本想找到
ae-awt.jar的源码进行改正一下重新打包,却没找到它的源代码,退而求其次就将其反编译,找到出错的文件并进行修正后重新打了个包,OK,最终成功运行。
    pdf方档的解析需要C++的支持,好在已经有好多这方面的so库资源可以直接使用,基本上不用修改。
    近期整理了一下这个DEMO,给大家提供一个参考。http://download.csdn.net/detail/it_math/9786247

0 0
原创粉丝点击