Pasar .txt a .xls problema con tipos Mime

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

Pasar .txt a .xls problema con tipos Mime

Hola a todos,

os cuento el problema que tengo a ver que se os ocurre. Necesito pasar un .txt a .xls de forma automática. Para ello he hecho una regla del tipo Copiar el contenido a una carpeta y transformar. El tema es que cuando se ejecuta, sale un error del siguiente tipo.

Por favor corrija los errores siguientes y pulse Finalizar.
No se ha podido crear la acción debido a un error: 00250035 Transformer for 'text/plain' source mime type and 'application/vnd.ms-excel' target mime type was not found. Operation can't be performed

He probado a ejecutar la misma regla pero pasando a .pdf y se ejecuta sin problemas.
Además, en el fichero C:\Alfresco\tomcat\webapps\alfresco\WEB-INF\classes\alfresco\mimetype\mimetype-map.xml tengo algo de este estilo

<mimetype mimetype="application/vnd.ms-excel" display="Microsoft Excel">
            <extension display="Excel Spreadsheet" default="true">xls</extension>
            <extension display="Excel Template">xlt</extension>
            <extension display="Excel Macro">xlm</extension>
         </mimetype>

¿Que puede estar pasando?
Saludos!!
9 Replies
pjcaracuel_2349
Active Member II

Re: Pasar .txt a .xls problema con tipos Mime

Buenas,

Una causa podria ser que ese tipo de transformacion que quieres hacer no este soportada/implementada. Esto lo puedes ver en el siguiente fichero:
webapps\alfresco\WEB-INF\classes\alfresco\content-services-context.xml.

TE paso una enlace a la wiki donde te explican mas en profundidad el tema de las transformaciones,

http://wiki.alfresco.com/wiki/Content_Transformations

Un Saludo
titanikoktf
Member II

Re: Pasar .txt a .xls problema con tipos Mime

Muchas gracias Pedro por tu respuesta, lo tengo a punto de caramelo, pero no consigo terminalo.

Voy a explicar un poco más el asunto porque solucioné ese problema pero surgen otros cientos. El tema era que queremos hacer un índice de los documentos que se guardan en cada espacio. Por eso quería pasarlo de .txt a .xls. La solución que he tomado es hacer un .csv separado con ; y automáticamente se abre con excel. Ese
indice lo he generado con el siguiente script.


var indice = script.parent.childByNamePath( "IndiceVTROV.csv" );
// Precondiciones
if ( indice == null )
indice = script.parent.createFile( "IndiceVTROV.csv" );
//Renglón añadido para indicar que el tipo de archivo es excel
indice.mimetype="text/csv";

//Establecemos en la variable salida el nombre de cada columna
salida += "Título ; Descripción ; Creador ; Fuente ; Descriptores ; Cadena de búsqueda ; Enlace al origen del documento ; Tipo de Documento ; Nombre del producto/proyecto/empresa ; Comentarios ; Revisado Por ; Valoración \r ";

//Declaramos todas las variables para cada documento
var nombre  = "";
var descripcion = "";
var creador = "";
var fechacreacion = "";
var fuente = "";
var descriptores = "";
var cadenabusqueda = "";
var enlace = "";
var tipo = "";
var nombreproyecto = "";
var comentarios = "";
var revisadopor = "";
var valoracion = "";

//EN VT2 metemos el nodo VT ROV
hijoVT2 = userhome.children[9].children[2].properties.name; //Ruta para acceder a VT ROV

//Recorremos todos los hijos de VT ROV –> userhome.children[10].children[2]
for each(n in userhome.children[10].children[2].children)
{  
    if (n.isDocument) //Si es documento??
    {
  nombre = n.properties.name; //Sacamos el nombre
  descripcion = n.properties.description;
  creador = n.properties.creator;
  fuente = n.properties["sc:fuente"];
  descriptores = n.properties["sc:descriptores"];
  cadenabusqueda = n.properties["sc:cadenabusqueda"];
  enlace = n.properties["sc:enlace"];
  tipo = n.properties["sc:tipodocumentos"];
  nombreproyecto = n.properties["sc:proyectoproductoempresa"];
  comentarios = n.properties["sc:comentarios"];
  revisadopor = n.properties["sc:revisadopor"];
  valoracion = n.properties["sc:valoracion"];

  salida += nombre + ";";
  salida += descripcion + ";";
  salida += creador + ";"; 
  salida += fuente + ";"; 
  salida += descriptores + ";";
  salida += cadenabusqueda + ";";
  salida += enlace + ";";
  salida += tipo + ";";
  salida += nombreproyecto + ";";
  salida += comentarios + ";";
  salida += revisadopor + ";";
  salida += valoracion + "\r";
  }
}
 
//Guardamos todo en el fichero
indice.content = salida;
indice.save();
indice.content;

Problemas que tengo:
1) El script se ejecuta mediante una regla llamada cuando se modifica algo dentro del espacio en cuestión. Entonces uso 
hijoVT2 = userhome.children[9].children[2].properties.name; //Ruta para acceder a VT ROV
para sacar el spacio que lo llama. Entonces para cada espacio que creen tengo que cambias el script, buscar la ruta de quien lo llama y cambiarlo. Alguien sabe como obtener la ruta de nodo que llama al script??

2) Al guardar en el fichero, no me reconoce los caracteres especiales tipo ñ, tildes, etc. Como puedo cambiar la codificación?? Probe con una sentencia que encontré
indice.mimetype="text/csv"; 
indice.encoding="ISO-8859-1";
pero no pita Alguien conoce como cambiar la codificación?

Muchísimas gracias de antemano. Todo ayuda será agradecida de corazón!
yakon_8894
Member II

Re: Pasar .txt a .xls problema con tipos Mime

Hola titanikoktf,

a ver si puedo responder a tus dos dudas:

1) Para acceder al nodo sobre el que se ejecuta un script tienes el valor document. Tiene las misma propiedades que una variable de tipo Node, por lo que podrás acceder a su parent y a sus metadatos sin problemas.

2) Cuando he tenido que crear algún nodo y asignarle un encoding siempre le pongo 'UTF-8' y nunca he tenido problemas con las tildes, ñ's, etc. Aunque también depende del visor que uses para leer el documento. Si lo abres con el Office no se como se comportará, pero los csv que he tenido que hacer los abro siempre con OpenOffice o Gedit y no he tenido problemas.

Espero que te sirva de algo

Un saludo,
Iago
titanikoktf
Member II

Re: Pasar .txt a .xls problema con tipos Mime

Buenas Iago,

muchisisisimas gracias. Lo del document funcionó al pelo. De hecho me ha hecho entender un poco mejor como funciona la API de Javascript, andaba más perdido que na na!

(Ahora viene el pero), pero no consigo hacer funcionar el UTF-8.
He probado lo siguiente

var indice = document.parent.childByNamePath( "InrdiceVTROVdirecto.csv" );
// Precondiciones
if ( indice == null )
indice = document.parent.createFile( "InrdiceVTROVdirecto.csv" );
//Renglón añadido para indicar que el tipo de archivo es excel
indice.mimetype="text/csv";
indice.encoding='UTF-8';
pero no me funcionó, se queda pillao y no avanza. Probé también a hacer el encoding de las variables que uso antes de hacer el save en el fichero, pero tampoco rula, lo guarda con otros símbolos. La pregunta es: ¿alguien sabe cómo se usa el encoding?

Saludos y muchísimas gracias de antemano.
yakon_8894
Member II

Re: Pasar .txt a .xls problema con tipos Mime

Buenas titanikoktf,

has probado el método createNode en vez de createFile? He echo una pequeña prueba de concepto con un script sencillo y no he tenido problemas con las tildes ni con ñ's.

El script es:

var indice = companyhome.childByNamePath( "InrdiceVTROVdirecto.csv" );
// Precondiciones
if ( indice == null )
indice = companyhome.createNode("InrdiceVTROVdirecto.csv","cm:content");

var salida = "Nombre;Apellidos\n";
salida += "Pepe;Araña\n";
salida += "Perico;Fernández González~";

indice.content = salida;
indice.save();

El csv que me genera alfresco ya tiene el mimetype correcto y la codificación a UTF-8 sin tener que configurarla yo. Además he abierto el csv con OpenOffice y todos los caracteres se ven bien.

PD: La versión con la que probé fue Alfresco 3.4 enterprise

Saludos,
Iago
titanikoktf
Member II

Re: Pasar .txt a .xls problema con tipos Mime

Ostras tu! Que bueno! Lo pruebo el lunes nada más llegar y te comento!
Otra cosa que aprendí hoy!

Saludos y muchas gracias!
titanikoktf
Member II

Re: Pasar .txt a .xls problema con tipos Mime

Buenas titanikoktf,

has probado el método createNode en vez de createFile? He echo una pequeña prueba de concepto con un script sencillo y no he tenido problemas con las tildes ni con ñ's.

El script es:

var indice = companyhome.childByNamePath( "InrdiceVTROVdirecto.csv" );
// Precondiciones
if ( indice == null )
indice = companyhome.createNode("InrdiceVTROVdirecto.csv","cm:content");

var salida = "Nombre;Apellidos\n";
salida += "Pepe;Araña\n";
salida += "Perico;Fernández González~";

indice.content = salida;
indice.save();

El csv que me genera alfresco ya tiene el mimetype correcto y la codificación a UTF-8 sin tener que configurarla yo. Además he abierto el csv con OpenOffice y todos los caracteres se ven bien.

PD: La versión con la que probé fue Alfresco 3.4 enterprise

Saludos,
Iago

Hola Iago y a todos!
He probado el script que me comentas y sigo teniendo los mismos problemas. Es posible que sea por alguna configuración global?? Estoy buscando por esta línea a ver si tengo suerte.
Además, estoy buscando ejemplos de como usar http://wiki.alfresco.com/wiki/3.4_JavaScript_API#ScriptContent_API ya que me pierdo. Pero por aquí también puedo encontrarle solución!

Saludos y muchísimas gracias
titanikoktf
Member II

Re: Pasar .txt a .xls problema con tipos Mime

Hola de nuevo,

tras dar algunas doscientas vueltas por el foro en inglés, he encontrado que es posible que sea por la base de datos. He probado el resto de cosas, haciendo lo que dice Iago en el mensaje anterior y a usar el documento.encoding = 'UTF-8', y alguna más que encontré por ahí como cambiar el collation dentro de las tablas alf_node y alf_node_properties y sigue sin funcionar. He hecho la instalación de Alfreco 3.4b con la bbdd que trae por defecto, ¿sabéis si está en UTF-8? Lo digo porque en alfresco-global.properties he encontrado esto
db.url=jdbc:mysql://localhost:3307/${db.name}?useUnicode=true&characterEncoding=utf8
por lo que tengo dudas….
La pregunta es, si en mi documento tengo todos los metadatos en español y con tildes, porque al ejecutar un script y meterlos en un .csv no copia las tilde bien???
Creéis que esto http://forums.alfresco.com/en/viewtopic.php?t=10286#p83587 funcionará?? Y si funcionaría, como ejecuto el scrip???

Un saludo y muchas gracias de antemanoª
yakon_8894
Member II

Re: Pasar .txt a .xls problema con tipos Mime

Buenas,

La base de datos la creaste tú con el fichero db_setup.sql que trae el paquete de Alfresco o te la creó el instalador?

Lo digo por que en el fichero db_setup.sql ya se indica que el collate sea utf8:

create database alf_db default character set utf8 collate utf8_bin;

grant all on alf_db.* to 'alfresco'@'localhost' identified by 'alfresco' with grant option;

grant all on alf_db.* to 'alfresco'@'localhost.localdomain' identified by 'alfresco' with grant option;

Yo he probado en Ubuntu 10.10 con un Alfresco 3.4 y la base de datos creada con esas sentencias que te indico.