Copiar un fichero pdf a un espacio determinado de Alfresco

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

Copiar un fichero pdf a un espacio determinado de Alfresco

Buenas,

Tengo una jsp que genera documentos en pdf y quiero copiarlos automaticamente a un espacio predeterminado de Alfresco.

¿Cómo puedo hacer esto?

Saludos,
Lourdes
6 Replies
javi_gimeno
Member II

Re: Copiar un fichero pdf a un espacio determinado de Alfresco

Dentro del nodo donde generas esos pdf, podrías crearte una regla para mover esos documentos pdf al sitio donde quieras. Creando una regla, le estableces que el tipo mime del nodo sea application/pdf y que lo mueva a la carpeta nodo que tu quieras. Eso es de forma automática.
De forma manual, podrías crearte una accion que ejecutara un script de Javascript y moverlo mediante la api de javascript.

Saludos.
lourdes
Member II

Re: Copiar un fichero pdf a un espacio determinado de Alfresco

Buenas,

Ya lo consigo, pero cuando se copia automáticamente el pdf de un espacio a otro. En el nuevo espacio el fichero pdf aparece con todas sus páginas pero en blanco.

El script que estoy utilizando para crear la regla que copia es el siguiente:

// find the backup folder - create if not already exists

var strEspacioObsoletos = "Obsoletos";
var strDocumentName = document.name;


if (document.isDocument){

   // Seteamos el espacio de documentos Obsoletos
   var espacioObsoletos = space.childByNamePath(strEspacioObsoletos);
   if (espacioObsoletos == null && space.hasPermission("CreateChildren"))
   {
      // create the folder for the first time
      espacioObsoletos = space.createFolder(strEspacioObsoletos);
   }
   
   
   if (espacioObsoletos != null && espacioObsoletos.hasPermission("CreateChildren"))
   {
      // tomamos el documento Obsoleto
      var docObsoleto = espacioObsoletos.childByNamePath(strDocumentName);
      if (docObsoleto == null){
            docObsoleto = espacioObsoletos.createFile(strDocumentName);
            docObsoleto.addAspect("cm:versionable");
      }
     
      // check it out and update content on the working copy
       var workingCopy = docObsoleto.checkout();
       workingCopy.content = document.content;
      docObsoleto = workingCopy.checkin('Documento Obsoleto');

   }

}
¿Alguna idea?
venzia
Senior Member

Re: Copiar un fichero pdf a un espacio determinado de Alfresco

pues con un document.move(espacioObsoletos ); deberia funcionar (no es necesario realizar una copia literal del doc).
No obstante .. supongo q javi.gimeno se referia a que desde las reglas del espacio puedes crear una de tipo entrante que para todo el contenido pdf (o cualquier otra condicion) "mueva el contenido al espacio destino" Obsoletos ..
Ya es decision tuya, y en funcion de tus necesidades, por donde tiras, pues a nivel rendimiento no tengo muy claro cual es mejor opcion aunque la de usar un script siempre es mas flexible.
Saludos,
lourdes
Member II

Re: Copiar un fichero pdf a un espacio determinado de Alfresco

Buenas, yo es que necesito copiarlo, no moverlo, y además que la copia del directorio obsoletos tenga versionado….
¿Alguna otra idea?
venzia
Senior Member

Re: Copiar un fichero pdf a un espacio determinado de Alfresco

Cambias document.move(espacioObsoletos) .. por document.copy(espacioObsoletos).
Luego tienes dos opciones :
-O coges la copia con "var copia=document.copy(espacioObsoletos)" y luego le haces un "copia.addAspect("cm:versionable")" o ..
-En la carpeta obsoletos creas otra regla para que todo lo que entre en formato pdf se le agregue el aspecto versionable (o "se pueden hacer versiones").
Saludos,
francix
Member II

Re: Copiar un fichero pdf a un espacio determinado de Alfresco

Hola, el problema que tenemos (Lourdes y yo) es que queremos tener el documento "en vigor" en un espacio, y los documentos que quedan obsoletos en otro diferente (el tenerlos en espacios distintos es por temas de permisos - ver un documento y ver sus versiones - ). Escribimos el documento en un espacio, y mediante el script intentamos hacer el proceso de copia y versionado al espacio de "documentos obsoletos". Con este script funciona todo bien con ficheros de texto, pero con ficheros pdf (los que necesitamos versionar generalmente) nos encontramos con que los documentos versionados están en blanco.

var strTargetNode = "Obsoletos";
var strDocumentName = document.name;

// Solo para documentos (discrimina espacios)
if (document.isDocument){

   // Seteamos el espacio de documentos Obsoletos
   var targetNode = space.childByNamePath(strTargetNode);
   if (targetNode == null && space.hasPermission("CreateChildren"))
   {
      targetNode = space.createFolder(strTargetNode);
   }
   
   if (targetNode != null && targetNode.hasPermission("CreateChildren"))
   {
      var docObsoleto = targetNode.childByNamePath(strDocumentName);
     
      if (docObsoleto == null)
      {
         docObsoleto = document.copy(targetNode);
         docObsoleto.addAspect("cm:versionable");
      }
      if (docObsoleto != null && docObsoleto.isVersioned)
       {
         var workingCopy = docObsoleto.checkout();
         workingCopy.content = document.content;
         workingCopy.mimetype = document.mimetype;
         docObsoleto = workingCopy.checkin('Documento Obsoleto');
      }
   }
}

En el foro en inglés nos indican que usemos el método write en lugar de copiar la propiedad content directamente, pero aparte de que no hemos encontrado aún ningún ejemplo del método write (?), en el primer paso del script, cuando aún no existe versión obsoleta y lo que se hace es copiar el documento directamente, ya nos encontramos con el documento en blanco.

Otra duda que tenemos es si cuando se lanza un script con la actualización de un nodo (no con nuevo, sino al actualizar) se tiene acceso al contenido del documento antes y después de actualizarse o exclusivamente al contenido después de actualizarse.

Gracias, por la ayuda.