2014-05-13 9 views
5

czy możemy konwertować dokumenty Microsoft Office (doc, docx, ppt, pptx, xls, xlsx itp.) Na ciągi html w systemie Android. Potrzebuję pokazywać dokumenty biurowe w mojej aplikacji. szukałem i znalazłem docx4j, apache poi i http://angelozerr.wordpress.com/2012/12/06/how-to-convert-docxodt-to-pdfhtml-with-java/ do konwersji plików w html. to podejście działa dobrze w wersji na komputery. ale podczas korzystania z Androida otrzymuję komunikat "Nie można dokonać konwersji w formacie 1 błędu Dalvik". co może być spowodowane używaniem zbyt dużej ilości słoików w moim androidowym projekcie. Chcę wiedzieć, czy istnieje jeden sposób, z którego konwertuję dokument biurowy na html w systemie Android. Przepraszam za angielski.Jak przekonwertować dokumenty biurowe na html w Androidzie

EDIT

jestem teraz w stanie konwertować doc do HTML za pomocą Apache POI. tutaj jest metoda

public void showsimpleWord() { 
    File file = new File("/sdcard/test.doc"); 

    HWPFDocumentCore wordDocument = null; 
    try { 
     wordDocument = WordToHtmlUtils.loadDoc(new FileInputStream(file)); 
    } catch (Exception e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 

    WordToHtmlConverter wordToHtmlConverter = null; 
    try { 
     wordToHtmlConverter = new WordToHtmlConverter(
       DocumentBuilderFactory.newInstance().newDocumentBuilder() 
         .newDocument()); 
     wordToHtmlConverter.processDocument(wordDocument); 
     org.w3c.dom.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(); 
     String result = new String(out.toByteArray()); 
     System.out.println(result); 
     ((WebView) findViewById(R.id.webview)).loadData(result, 
       "text/html", "utf-8"); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

teraz szukają innych.

+2

czy to konieczne, aby zrobić to po stronie urządzenia? Może lepiej byłoby użyć serwera do tych konwersji? –

+0

@RafaelOsipov nie, jeśli używamy do tego serwera. nasza aplikacja będzie zależna od połączenia internetowego. –

+0

w tym przypadku implementuj silnik konwersji na serwerze przy użyciu Apache POI, a urządzenie będzie wysyłać tylko dokumenty na serwer i otrzymywać wyniki konwersji. –

Odpowiedz

2

Podczas gdy na pewno możliwe jest przekonwertowanie dokumentu Word na HTML na urządzeniu z Androidem, o czym inni wspominają, nie jest to zalecane ze względu na kilka problemów. (a mianowicie ograniczona moc obliczeniowa i pamięć systemu Android, a także problemy z kompatybilnością z większością bibliotek zaprojektowanych do obsługi plików MS Office). Jak już wspomnieli, lepiej byłoby zrobić stronę serwera konwersji. To powiedziawszy, jeśli naprawdę nie ma możliwości, że jest to możliwe, biorąc pod uwagę twoją sytuację, możesz rzucić okiem na this stackoverflow question.

Pytający wydaje się mieć podobny problem do twojego. (biorąc pod uwagę, że dobrze rozumiem twoje pytanie) Plakat odpowiada na własne pytanie w trakcie dyskusji i zawiera link do jego źródła w komentarzu do własnej odpowiedzi. Używa biblioteki Apachi POI w swoim rozwiązaniu, ale dzieli bibliotekę na kilka mniejszych plików DEX (po jednym dla każdego komponentu biblioteki), aby gra ładnie współpracowała z Androidem.

Mam nadzieję, że było pomocne!