PDF Extractor

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

PDF Extractor

Hola a todos,

Tengo un custom pdf extractor definido en custom-metadata-extrators-context.xml

<bean id="extracter.pdf" class="es.org.extractor.PDFCustomExtractor" parent="baseMetadataExtracter" >
        <property name="inheritDefaultMapping">
            <value>true</value>
        </property>
      <property name="mappingProperties">
            <bean class="org.springframework.beans.factory.config.PropertiesFactoryBean">
               <property name="location">
                  <value>classpath:alfresco/extension/custom-pdf-extractor-mappings.properties</value>
               </property>
            </bean>
        </property>
    </bean>

Hasta ahora, he trabajado con la versión Enterprise 3.1  y me ha funcionado todo correctamente, pero hemos actualizado a la versión 3.3 y el extractor ya no funciona… alguna idea??
2 Replies
cybermakoki
Member II

Re: PDF Extractor

Por cierto,

Voy a hacer mi pequeña aportación y os posteo aqui el extractor por si a alguien le interesa Smiley Happy



public class PDFCustomExtractor extends AbstractMappingMetadataExtracter
{

  private static final String KEY_KEYWORDS = "keywords";
  public static String[] SUPPORTED_MIMETYPES = { "application/pdf" };
  private static Log log = LogFactory.getLog(PDFCustomExtractor.class);
  public PDFCustomExtractor()
  {
    super(new HashSet(Arrays.asList(SUPPORTED_MIMETYPES)));
  }

  public Map<String, Serializable> extractRaw(ContentReader reader)
    throws Throwable
  {
    Map rawProperties = newRawMap();

    PDDocument pdf = null;
    InputStream is = null;
    try
    {
      is = reader.getContentInputStream();

      pdf = PDDocument.load(is);
      if (pdf.isEncrypted()) {
        //break label337;
      }
      PDDocumentInformation docInfo = pdf.getDocumentInformation();

      putRawValue("author", docInfo.getAuthor(), rawProperties);
      putRawValue("title", docInfo.getTitle(), rawProperties);
      putRawValue("subject", docInfo.getSubject(), rawProperties);

      String keywords = docInfo.getKeywords();
      try
      {
        keywords = keywords.trim();
        while (keywords.charAt(0) == '"') {
          keywords = keywords.substring(1);
        }
        while (keywords.charAt(keywords.length() - 1) == '"') {
          keywords = keywords.substring(0, keywords.length() - 1);
        }
        keywords = keywords.trim();

        StringTokenizer stcomma = new StringTokenizer(keywords, ";");
        while (stcomma.hasMoreTokens()) {
          String token = stcomma.nextToken();
          StringTokenizer sttoken = new StringTokenizer(token, "=");

          putRawValue(sttoken.nextToken(), sttoken.nextToken(), rawProperties);
        }
      }
      catch (Exception x) {
         log.info("\n\nExtracter: " + x.toString() + ".\n");

      }

      if (keywords != null) {
         log.info("\n\nKeywords es:" + keywords + ".\n");

        putRawValue("keywords", keywords, rawProperties);
      }
      else {
        log.info("\n\nKeywords es null.\n");

      }

      try
      {
        Calendar created = docInfo.getCreationDate();
        label337: if (created != null)
        {
          putRawValue("created", created.getTime(), rawProperties);
        }

      }
      catch (IOException localIOException)
      {
      }

    }
    finally
    {
      if (is != null)
        try {
          is.close(); } catch (IOException localIOException1) {
        }
      if (pdf != null) {
        try {
          pdf.close(); } catch (Throwable e) { e.printStackTrace(); }

      }
    }

    log.info("\n\nPropiedades de vuelta:" + rawProperties.toString() + "\n");


    return rawProperties;
  }
}

En los keywords del pdf vendrian los datos separados por ; de la siguiente manera:

CODIGO=12345;FACTURA=fac_311;NOMBRE=XXXX

y el custom-pdf-extractor-mappings.properties seria algo como:

namespace.prefix.dm=extension.miModelo
CODIGO=dm:codigo
FACTURA=dm:factura
NOMBRE=dm:nombre

Un saludo!
cybermakoki
Member II

Re: PDF Extractor

Hola de nuevo,

Al final he conseguido que me extraiga datos del pdf pero solo cuando los añado con "Añadir contenido" si los hago por CIFS o FTP nada… vaya rollo Smiley Sad con lo bien que funcionaba la 3.1 …