AnsweredAssumed Answered

No funciona extractor de metadatos en versión 3.4

Question asked by cybermakoki on Mar 2, 2011
Latest reply on Mar 2, 2011 by cybermakoki
Hola,

Bueno, por vigésimo quinta vez ya… he vuelto a tener problemas con Alfresco migrando de versión…

Hemos actualizado de la versión 3.1.1 a la versión 3.4 (haciendo los saltos de versiones correspondientes).

En la versión 3.1.1 tenia 2 extractores de metadatos definidos, uno para excel y otro para pdf, los dos funcionando perfectamente.

Os pongo aqui la configuración y el extractor:

   <bean id="extracter.pdf" class="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>
   
   <bean id="extracter.off" class="extractor.MyOfficeMetadataExtractor" 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-office-extractor-mappings.properties</value>
               </property>
            </bean>
        </property>
    </bean>


y el código:



public class PDFCustomExtractor extends AbstractMappingMetadataExtracter
{
  private static final String KEY_AUTHOR = "author";
  private static final String KEY_TITLE = "title";
  private static final String KEY_SUBJECT = "subject";
  private static final String KEY_CREATED = "created";
  private static final String KEY_KEYWORDS = "keywords";
  public static String[] SUPPORTED_MIMETYPES = { MimetypeMap.MIMETYPE_PDF };
  private static Log log = LogFactory.getLog(PDFCustomExtractor.class);
 
  public PDFCustomExtractor()
  {
     
    super(new HashSet<String>(Arrays.asList(SUPPORTED_MIMETYPES)));
   
  }

  public Map<String, Serializable> extractRaw(ContentReader reader)
    throws Throwable
  {
    Map<String, Serializable> 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;
  }
}

Lo que no entiendo es porque el de Excel funciona, y el de PDF no, cuando en la versión 3.1.1 ha estado funcionando siempre bien…

Yo me desespero ya con esto, de verdad, podria escribir un libro con todos los problemas que he tenido con Alfresco…

Outcomes