1

Estoy teniendo un problema con un código en java. Yo utilizo un .jar que importo en la clase que quiero programar pero el problema es que me da un error con una incompatibilidad de tipo de dato al ejecutar el código lanza un error de:

null pointer exception

El tipo de dato Element me da problemas. El problema esta en la ultima asignación

    package extract;

    import java.io.FileInputStream;
    import java.io.InputStream;
    import org.jdom.Element;
    import pl.edu.icm.cermine.*;


    public class Extract {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws Exception{

     PdfNLMContentExtractor extractor= new PdfNLMContentExtractor();
     InputStream inputStream = new FileInputStream("/home/paul/cermine/sample2.pdf");
        Element result=extractor.extractContent(inputStream);
        System.out.println(result);


    }



    // TODO code application logic here
}

Esta es mi clase en java en la variable result deberia almacenar los metadatos del pdf que se pasa en la direccion pero al contrario el resultado es:

    run:
     Exception in thread "main" java.lang.RuntimeException:     Uncompilable  source code - cannot find symbol
      symbol:   class Element
   location: class extract.Extract
at extract.Extract.main(Extract.java:28)
Max Sandoval
  • 1,018
  • 2
  • 10
  • 24

2 Answers2

1

La clase pl.edu.icm.cermine.PdfNLMContentExtractor ha sido marcada como deprecated. En su lugar, debe usarse pl.edu.icm.cermine.ContentExtractor. Esto es (por ejemplo):

ContentExtractor extractor = new ContentExtractor();
InputStream inputStream = new FileInputStream("/home/paul/cermine/sample2.pdf");
extractor.setPDF(inputStream);
String rawText = extractor.getRawFullText();
System.out.println(rawText);

También puedes usar la clase pl.edu.icm.cermine.ExtractionUtils:

InputStream inputStream = new FileInputStream("/home/paul/cermine/sample2.pdf");
ContentExtractor extractor = new ContentExtractor();          
String rawText = ExtractionUtils.extractRawText(extractor.getConf(), inputStream);
System.out.println(rawText);

new UPDATE

El método extractTextAsNLM de la clase ExtractionUtils regresa una instancia de org.jdom.Element. Puede convertirse a cadena XML utilizando una instancia, pero de org.jdom.output.XMLOutputter. Es decir:

InputStream inputStream = new FileInputStream("/home/paul/cermine/sample2.pd");
ContentExtractor extractor = new ContentExtractor();          
Element element = ExtractionUtils.extractTextAsNLM(extractor.getConf(), inputStream);
String xmlString = new XMLOutputter().outputString(element);
System.out.println(xmlString);
Paul Vargas
  • 181
  • 1
  • 20
  • 39
  • Muchisimas gracias me ayudo mucho pero existe algun metodo en el cermine que devuelva un XML por ejemplo?, seria mucho mas facil parsear el xml que obtener el PDF – Yusniel Hidalgo May 08 '16 at 18:13
  • Hola, @Paul He actualizado mi respuesta con código para obtener un XML. – Paul Vargas May 09 '16 at 00:27
  • Muchisimas gracias @Paul Vargas esta muy buena la actualizacion, hay algun lugar con documentacion de cada uno de estos metodos? de todas formas me fue de gran ayuda Gracias. – Yusniel Hidalgo May 09 '16 at 02:04
  • Puedes echar un vistazo al [código](https://github.com/CeON/CERMINE). – Paul Vargas May 09 '16 at 02:29
  • Estoy en eso amigo muchas gracias!!!!!@Paul Vargas – Yusniel Hidalgo May 09 '16 at 02:45
  • Este codigo funciona perfectamente cuando lo utilizo de forma independiente, pero cuando intento agregarlo a una aplicacion en el Grails no analiza la mayoria de los pdf que normalmente analiza cuando esta trabajando de forma independiente alguien tiene una idea de que podria estar ocurriendo? El .jar del cermine lo importo en la carpeta lib de mi plugin y trato de llamar al cermine con un metodo. gracias si alguien puede ayudarme – Yusniel Hidalgo May 19 '16 at 00:51
0

Veo que estas usando CERMINE, es importante dar mas detalles, te puedo comentar que si estas usando Netbeans simplemente elimina el cache!

El cache se encuentra dentro del folder:

USUARIO/.netbeans/var/cache/index

Linux

~/.cache/netbeans/${netbeans_version}/index/

Mac OS:

~/Library/Caches/NetBeans/${netbeans_version}/
Jorgesys
  • 103,630
  • 13
  • 52
  • 124