2010-06-17 50 views
14

Estoy tratando de convertir un documento PDF en un archivo PNG utilizando herramientas de línea de comandos de ImageMagick desde un sitio web ASP.NET. Creo un nuevo proceso de concha y ahve que ejecutar el siguiente comando:Error "Parámetro no válido" desde la conversión de ImageMagick en Windows

convert -density 96x96 "[FileNameAndPath].pdf" "[FileNameAndPath].png" 

Esto funciona bien cuando se prueba el sitio web en mi máquina local con el servidor ASP.NET Develeopment de VS y el comando también funciona bien cuando se introducen manualmente en el caparazón. Cuando se ejecuta desde el shell mediante programación creado en ASP.NET está el siguiente mensaje de error:

Invalid Parameter - 96x96 

¿Alguien sabe por qué sucede esto y qué hacer?

He probado el comando mientras estaba conectado en el servidor a través de RDP con una cuenta de usuario diferente que el proceso de ASP.NET. He utilizado exactamente los mismos archivos de instalación de ImageMagick y Ghostscript que en mi máquina local y he activado la adición de la ruta de instalación de ImageMagick a las variables de entorno durante la instalación. El servidor no se ha reiniciado desde entonces.

+0

¿Puede mostrar la línea de comando completa que no funciona, por favor? (Con nombres de archivo de la vida real) –

+0

¿Y está seguro de que puede llamar al ejecutable de ghostscript desde el shell creado mediante programación? –

+0

La línea de comando completa es convert -density 96x96 "C: \ inetpub \ wwwroot \ UserData \ Pdf \ f18196da-571c-45a6-b99b-615fb3edb454.pdf" "C: \ inetpub \ wwwroot \ UserData \ Pdf \ f18196da- 571c-45a6-b99b-615fb3edb454.png " Pensé que convertir llamaría a gs cuando el formato de entrada fuera PDF y la conversión funcionara desde el intérprete de comandos del shell. No probé eso. –

Respuesta

3

En Windows realmente existe un "convert.exe" en system32 - asegúrese de que su script no inicie ese (tal vez las rutas de entorno en su máquina de desarrollo están configuradas de manera diferente).

42

convert es también el nombre de un ejecutable de Windows que convierte el sistema de archivos FAT a NTFS. Cuando no se especifica la ruta completa de un archivo ejecutable, cita:

... el sistema busca primero en el directorio de trabajo actual y luego busca en la path environment variable, examinando cada directorio de izquierda a derecha, en busca de una nombre de archivo ejecutable que coincide con el nombre de comando dado.

"C: \ Windows \ System32" está generalmente presente en el inicio de la variable% PATH%, haciendo que la utilidad convertido de Windows para poner en marcha, lo que produce el error "parámetro no válido" como se esperaba.

intente especificar la ruta completa del convert.exe del ImageMagick así:

"C:\Program Files\ImageMagick\convert.exe" -density 96x96 "path_and_filename.pdf" "path_and_filename.png" 
+2

mi C: \ Program Files \ ImageMagick \ no contiene un convert.exe. ¿Alguien sabe a qué exe apuntar en las nuevas versiones de imagemagic? – ScottF

+3

Acabo de instalar la última versión y parece que se llama 'magick.exe'. –

+0

En *** cygwin *** usando _ImageMagick_ el mismo error – Kiquenet

1

sí! si inicia una ventana de comando de administrador, se establece de manera predeterminada en C: \ windows \ sytem32 \ ... siempre que no esté en ese directorio, el comando recuperará ImageMagick convert.exe

Mi problema fue que estaba usando el El comando "FORFILES" es complicado porque requiere el uso de "cmd/c" y pasa el comando de conversión con los parámetros @path y @file y hace un escape de barras ... no hace falta decir que me ha causado horas y horas de dolor de cabeza . Incluso analiza caracteres hexadecimales, como si tu ruta de archivo tiene la combinación 0x00, pensará que es un valor hexadecimal y destruirá tu ruta. Tenía un filepath llamado C:\ImageRes3000x3000 y FORFILES lo interpreta literalmente y causaba un extraño problema de ruta. Lo siento si esta es una publicación larga e inútil pero debe ser FYI, si alguien se encuentra con esto, tal vez les ayude. Dicho esto, FORFILES y "convert.exe" son una combinación de secuencia de comandos de línea de cambio de nombre de imagen potente y simple.

aquí está mi total de 3 líneas de guiones de imágenes cambio de nombre

robocopy D:\SRC_DIR\ D:\DEST_DIR\_staging *.jpg /e /MAXAGE:2 
FORFILES /P D:\DEST_DIR\_staging\ /S /M *.jpg /C "cmd /c convert.exe @path -quality 65 -resize 1500 D:\RESIZED_DIR\\@file" 
DEL D:\DEST_DIR\_staging\*.* /S /Q 
+0

Ruta del script? Sistema de ruta de Windows? 'cmd/c' será la ruta * C: \ windows \ sytem32 *? Donde la ruta de instalación _ImageMagick_? ¿Tienes más scripts trabajando con ** ImageMagick ** en la misma ruta? – Kiquenet

2

un par de opciones para la fijación del mismo:

  • Editar la variable de sistema Path a contener la ruta a Imagemagick ya que es primer contenido y luego agrega el resto después de eso. Esto hará que las ventanas siempre encuentren la imagemagic convert primero antes de que encuentre el otro programa de conversión. Así que algo como esto: C:\Program Files\ImageMagick-6.9.2-Q16;C:\Program Files\Haskell Platform\2014.2.0.0\lib\extralibs\bin;...

  • Otra opción es crear una carpeta dedicada en algún lugar de su máquina donde colocará atajos para algunos de estos conflictos de nombres. Luego, lo que hace es cambiar el nombre de esos accesos directos a nombres significativos, por ejemplo convert_image_magick, y luego agregar la ruta a esta carpeta a la ruta del sistema. Así que ahora como se golpeó pestaña más, que finalmente encontrar el programa adecuado que desea ejecutar

0

Como ya han dicho convert puntos a un programa diferente en su PATH. En su lugar, abra su comando con magick. Entonces, su comando sería:

magick convert -density 96x96 "[FileNameAndPath].pdf" "[FileNameAndPath].png" 
Cuestiones relacionadas