之前做的一个项目有需要用到支持对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() { @Override public 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