Foro

PDF corruptos [Solu...
 
Avisos
Vaciar todo

El foro de caduceus.es ha sido migrado a meditecs.com. Descubre más sobre el cambio en este post.

🇬🇧 English speaker? Go to Meditecs forums in English!

[Resuelto] PDF corruptos [Solucionado]

7 Mensajes
2 Usuarios
0 Reacciones
2,938 Visitas
(@cristina_sorli_clemente)
Eminent Member
Registrado: hace 11 años
Respuestas: 17
Topic starter   [#27]

Buenas tardes!

tengo un problema con un canal de mirth desde hace bastante tiempo y es que cuando muevo PDF's a un destino, alguna vez se mueve corrupto y tengo que mover el fichero a mano (por putty) al destino para que pueda ser consultado. En el canal lo muevo a través del 'file writter' en 'destination' por smb. Casi siempre funciona, pero hay veces que se mueve corrupto... y no encuentro la causa de porqué se produce, no se si es un bug que tiene Mirth o que...

Entonces lo que se me ha ocurrido es realizar ese mismo comando de putty a través de mirth que es un 'cp', existe alguna manera de ejecutar un comando de este estilo?? ya que estamos.. se sabe porqué se mueve corrupto en alguna ocasión?

gracias y un saludo!



   
(@fjcarrasco)
Miembro Admin
Registrado: hace 13 años
Respuestas: 39
 

Hola, Cristina:

Se me ocurre que a veces no se le dé el tiempo suficiente para que la copia del fichero termine de realizarse. ¿Has notado que te ocurre con tamaños de ficheros superiores a la media o es completamente aleatorio?

En cualquier caso, como bien sugieres, me parece buena idea probar a ejecutar el comando directamente para ver si el problema se soluciona. Puedes definir la siguiente función dentro de un code template en Mirth Connect, con la que, además, puedes obtener la respuesta del comando ejecutado:

function executeCommand(cmd) {
  var res = "";
  try {
    var line = new java.lang.String();
    var p = java.lang.Runtime.getRuntime().exec(cmd);
    var bin = new java.io.BufferedReader(
      new java.io.InputStreamReader(p.getInputStream()));
    while ((line = bin.readLine()) != null)
      res += line.toString();
    bin.close();
  } catch (e) {
    res = "ERR: " + e.getMessage();
  }
  return res;
}

Una vez definida, puedes ejecutar esta función desde un conector de tipo JavaScript, y debería funcionar tanto en Windows como en Linux.

Por ejemplo, el siguiente código en un conector de tipo JavaScript en Windows mostraría por consola la típica respuesta 1 archivo(s) copiado(s):

logger.info(executeCommand('CMD /C COPY /Y "C:\tmp\informaticasana\foros\filetocopy.txt" "C:\tmp\informaticasana\foros\filecopied.txt"'));

Ya nos cuentas qué tal.

Un saludo y gracias a ti.



   
(@cristina_sorli_clemente)
Eminent Member
Registrado: hace 11 años
Respuestas: 17
Topic starter  

Hola Francisco,

Primero de todo gracias por tu respuesta. Lo que me comentas sobre el tiempo de creación del fichero, puede ser, ya que tal cual se deja el fichero en la carpeta lo cojo, así que se me ocurre que haya veces que el enlace ya esté y lo coja incompleto... Voy a probar a poner la opción que mire los ficheros a partir de 1000 o 2000 ms de su creación, a ver si seso lo soluciona. Sino probaré la ejecución del comando.

Gracias!



   
(@fjcarrasco)
Miembro Admin
Registrado: hace 13 años
Respuestas: 39
 

De nada, Cristina, para esto estamos. 😉

Ya nos cuentas cómo te ha ido.

Un saludo.



   
(@cristina_sorli_clemente)
Eminent Member
Registrado: hace 11 años
Respuestas: 17
Topic starter  

Buenas tardes!

He estado probando la función, he puesto en logger.info la línea tal cual me has escrito como ejemplo cambiando las rutas y el nombre del txt, y me muestra 'El sistema no puede encontrar el archivo especificado'

Copio pego tal cual lo tengo, a ver si es que me estoy dejando algo y no lo veo...

var cmd = 'CMD /C COPY /Y "C:\Tmp\cmd\prueba.txt" "C:\Tmp\cmd\prueba3.txt"';

logger.info(executeCommand(cmd));

prueba.txt es un fichero que tiene escritas unas líneas, nada más.

Gracias y saludos!



   
(@cristina_sorli_clemente)
Eminent Member
Registrado: hace 11 años
Respuestas: 17
Topic starter  

Ok! solucionado!

Como escrito .txt en el nombre, entonces para el interprete era prueba.txt.txt ...

Ha funcionado a la perfección!

gracias!!



   
(@fjcarrasco)
Miembro Admin
Registrado: hace 13 años
Respuestas: 39
 

Perfecto, me alegro de que hayas solucionado el problema. 😉

Un saludo y gracias a ti.



   
Compartir:
Scroll al inicio