cancel
Showing results for 
Search instead for 
Did you mean: 

Problema al indexar un PDF con un formulario

sapodoble_3589
Champ in-the-making
Champ in-the-making
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 2

sapodoble_3589
Champ in-the-making
Champ in-the-making
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
Champ in-the-making
Champ in-the-making
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))
Getting started

Tags


Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.