Alguien tiene el código para extraer el texto de un archivo con extensión docx.
Muchas gracias.
He probado con la librería poi y no he sido capaz.
| |||
Respuesta: Extraer texto DOCX import java.io.FileInputStream; import java.io.IOException; import org.apache.poi.POIOLE2TextExtractor; import org.apache.poi.POITextExtractor; import org.apache.poi.extractor.ExtractorFactory; import org.apache.poi.hdgf.extractor.VisioTextExtractor; import org.apache.poi.hslf.extractor.PowerPointExtractor; import org.apache.poi.hssf.extractor.ExcelExtractor; import org.apache.poi.hwpf.extractor.WordExtractor; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public class PruebaDocx { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub FileInputStream fis = new FileInputStream("D:\\Depeche.docx"); POIFSFileSystem fileSystem = new POIFSFileSystem(fis); // Firstly, get an extractor for the Workbook POIOLE2TextExtractor oleTextExtractor = ExtractorFactory.createExtractor(fileSystem); // Then a List of extractors for any embedded Excel, Word, PowerPoint // or Visio objects embedded into it. POITextExtractor[] embeddedExtractors = ExtractorFactory.getEmbededDocsTextExtractors(oleT extExtractor); for (POITextExtractor textExtractor : embeddedExtractors) { // If the embedded object was an Excel spreadsheet. if (textExtractor instanceof ExcelExtractor) { ExcelExtractor excelExtractor = (ExcelExtractor) textExtractor; System.out.println(excelExtractor.getText()); } // A Word Document else if (textExtractor instanceof WordExtractor) { WordExtractor wordExtractor = (WordExtractor) textExtractor; String[] paragraphText = wordExtractor.getParagraphText(); for (String paragraph : paragraphText) { System.out.println(paragraph); } // Display the document's header and footer text System.out.println("Footer text: " + wordExtractor.getFooterText()); System.out.println("Header text: " + wordExtractor.getHeaderText()); } // PowerPoint Presentation. else if (textExtractor instanceof PowerPointExtractor) { PowerPointExtractor powerPointExtractor = (PowerPointExtractor) textExtractor; System.out.println("Text: " + powerPointExtractor.getText()); System.out.println("Notes: " + powerPointExtractor.getNotes()); } // Visio Drawing else if (textExtractor instanceof VisioTextExtractor) { VisioTextExtractor visioTextExtractor = (VisioTextExtractor) textExtractor; System.out.println("Text: " + visioTextExtractor.getText()); } } } } Me da el siguiente error al ejecutar. Exception in thread "main" org.apache.poi.poifs.filesystem.OfficeXmlFileExcep tion: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF) at org.apache.poi.poifs.storage.HeaderBlockReader.<in it>(HeaderBlockReader.java:98) at org.apache.poi.poifs.filesystem.POIFSFileSystem.<i nit>(POIFSFileSystem.java:151) at PruebaDocx.main(PruebaDocx.java:23) |
| ||||
Respuesta: Extraer texto DOCX Yo se que la respuesta ya no te ayuda (por la fecha) pero para quien busque como yo la respuesta y haya llegado a tu tema (como lo hice yo) encontré la solución. El error que te da es porque estas usando las clases que son para leer archivos .doc (del 2003 para atrás), y es lo que te dice alli que debes estar leyendo archivo XML porque no encontro la estructura que pensaba encontrar. Lo unico que hay que hacer para abrir un .docx (que tiene estructura xml) es usar las clases que la misma POI ofrece, fijarse bien que dice: eg XSSF instead of HSSF Asi que solo hay que usar las clases de XSSF para un .docx y las HSSD para un .doc... Les pongo el código básico para realizarlo: Código PHP: |
| ||||
Respuesta: Extraer texto DOCX jaja ZERO de casualidad no estas teniendo clases en el ITZ? lo digo por el archivo muestra.docx y estoy teniendo problemas con la libreria poi ya la agregue pero me da error al querer usar WordExtractor |
| ||||
Respuesta: Extraer texto DOCX Cita: jaja pues si eres mi tocayo y companiero entonces ya te salio tengo problemas al querer usar wordextractor
Iniciado por zero0097 Yo se que la respuesta ya no te ayuda (por la fecha) pero para quien busque como yo la respuesta y haya llegado a tu tema (como lo hice yo) encontré la solución. El error que te da es porque estas usando las clases que son para leer archivos .doc (del 2003 para atrás), y es lo que te dice alli que debes estar leyendo archivo XML porque no encontro la estructura que pensaba encontrar. Lo unico que hay que hacer para abrir un .docx (que tiene estructura xml) es usar las clases que la misma POI ofrece, fijarse bien que dice: eg XSSF instead of HSSF Asi que solo hay que usar las clases de XSSF para un .docx y las HSSD para un .doc... Les pongo el código básico para realizarlo: Código PHP: |
| ||||
Respuesta: Extraer texto DOCX jaja que onda cesar fernadiuz, ya ves el que es bueno es bueno, ya me salio el programa, cheka mi respuesta esta bien explicadito. resulta que el wordextractor recibe un objeto de tipo InpuStream, y a ese input stream le pasas un fileInputStream, y a ese file input stream le pasas el file... el lunes te explico bien, a ver si no nos llaman la "atencion" aqui por usarlo de chat xD |
Etiquetas: |