2014-05-13 8 views
5

könnten wir Microsoft Office-Dokumente (doc, docx, ppt, pptx, xls, xlsx, etc.) in HTML-Zeichenfolge in Android konvertieren. Ich muss Office-Dokumente in meiner App zeigen. Ich habe gesucht und docx4j, apache poi und http://angelozerr.wordpress.com/2012/12/06/how-to-convert-docxodt-to-pdfhtml-with-java/ gefunden, um Dateien in HTML zu konvertieren. Dieser Ansatz funktioniert in der Desktop-Version. aber wenn ich in android benutze, bekomme ich "Konnte in Dalvik-Format Fehler 1 nicht umwandeln". was möglicherweise daran liegt, zu viele Gläser in meinem Android-Projekt zu verwenden. Ich möchte wissen, gibt es einen einzigen Weg, aus dem ich Office-Dokument in HTML in Android konvertieren. Entschuldigung für Englisch.Wie Office-Dokumente in HTML in Android konvertieren

EDIT

ich bin jetzt in der Lage doc zu konvertieren mit Apache POI html. hier ist Methode

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(); 
    } 
} 

jetzt anderer Benutzer.

+2

ist es notwendig, dies auf der Geräteseite zu tun? Vielleicht wäre es besser, einen Server für diese Konvertierungen zu verwenden? –

+0

@RafaelOsipov Nein, wenn wir Server dafür verwenden. Unsere App wird auf die Internetverbindung angewiesen sein. –

+0

Implementieren Sie in diesem Fall die Konvertierungs-Engine auf dem Server mit Apache POI, und das Gerät sendet nur Dokumente an den Server und empfängt die Konvertierungsergebnisse. –

Antwort

2

Während es definitiv möglich ist, ein Word-Dokument in HTML auf dem Android-Gerät selbst zu konvertieren, wie andere erwähnt haben, ist es wegen einer Reihe von Problemen nicht ratsam. (nämlich die begrenzte Prozessorleistung und Speicherkapazität eines Android-Computers sowie Kompatibilitätsprobleme mit den meisten Bibliotheken, die für die Verarbeitung von MS Office-Dateien entwickelt wurden). Wie alle erwähnten, wäre es vorzuziehen, den Konvertierungsserver zu verwenden. Das heißt, wenn es wirklich keine Möglichkeit gibt, in Anbetracht Ihrer Situation, sollten Sie einen Blick auf this stackoverflow question werfen.

Der Fragesteller scheint ein ähnliches Problem wie Ihres zu haben. (vorausgesetzt, dass ich Ihre Frage richtig verstehe) Das Poster beantwortet seine eigene Frage während der Diskussion und bietet einen Link zu seiner Quelle in dem Kommentar zu seiner eigenen Antwort. Er verwendet die Apachi POI-Bibliothek in seiner Lösung, bricht aber die Bibliothek in mehrere kleinere DEX-Dateien auf (eine für jede Komponente der Bibliothek), so dass sie gut mit Android zusammenspielt.

Hoffe das war hilfreich!