Problema al indexar un PDF con un formulario

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
sapodoble_3589
Member II

Problema al indexar un PDF con un formulario

Hola de nuevo,
tenemos una carpeta donde almacenamos PDF con formularios que contienen datos.
Al intentar hacer una búsqueda de un documento en concreto, nos hemos topado con la sorpresa que no los campos de formulario no los indexa. Todo el documento lo indexa en el buscador perfectamente, epro si queremos buscar el texto que tenemos en un campo de formulario dentro del PDF no devuelve ningún resultado.
¿A alguién más le ha pasado ?
¿Alguna idea de cómo solucionarlo?

Un saludo y gracias de nuevo.
2 Replies
sapodoble_3589
Member II

Re: Problema al indexar un PDF con un formulario

Después de estar buscando por internet , sin demasiado éxito,  si a alguién más se le había planteado este problema, he decidido hecharle un vistazo a la forma en que alfresco indexa los PDF.
Al final me he encontrado que utiliza la librería pdfBox para convertir el PDF a texto e inyectarlo a Lucene.

Si no voy muy mal encaminado  la función que realiza el proceso de transformación es:
  org/alfresco/repo/content/transform/PdfBoxContentTransformer.java

Intentaré añadirle al texto que le pasa a lucene, los campos de los formularios al final del texto para que los indexe.
Os sigo contando.
sapodoble_3589
Member II

Re: Problema al indexar un PDF con un formulario

El problema:
  Cuando añadimos un documento PDF que contiene un formulario con datos ya almacenados no indexa dichos campos en el motor de búsqueda de alfresco.

Solución:
  El problema está en la forma en la que se transforma el PDF a texto para indexarlo en lucene. La conversión a texto se hace en la clase org/alfresco/repo/content/transform/PdfBoxContentTransformer.java, concretamente en la función transformInternal().
  En dicha transformación se utiliza la función PDFTextStripper() de la librería PDFBox para extraer el texto del PDF. Esta extracción omite los Fields del documento PDF.
  Para añadir los campos al documento, y que alfresco los indexe, añadiremos los campos al final del documento en texto.

           ………
           String text = stripper.getText(pdf);

           // AÑADIR CAMPOS DEL FORMULARIO
            PDDocumentCatalog docCatalog = pdf.getDocumentCatalog();
            PDAcroForm pdfForm = docCatalog.getAcroForm();
            List myList = pdfForm.getFields();

            // Obtenemos un Iterador y recorremos la lista de campos
            Iterator iter = myList.iterator();
            String AuxTest = new String("\n\n");
            while (iter.hasNext()){
                PDField field = (PDField)iter.next();
                AuxTest = AuxTest + new String(field.getPartialName() + ": " + field.getValue() + " \n");
            }

            // Añadimos al TEXTO del PDF los campos
            writer.putContent(text + AuxTest);

Si a alguién se le ocurre otra forma más correcta de hacerlo soy todo oídos Smiley Happy))