Por lo tanto, estoy usando Matthew Ephraim's GhostscriptSharp, que es un contenedor simple de C# para la DLL Win32 Ghostscript no administrada en mi proyecto ASP.Net MVC. Algunos antecedentes:¿Qué causa que Ghostscript devuelva un error de -100?
Lo que intento hacer es que un usuario cargue un PDF y luego convierta ese documento en una imagen que luego pueda guardar en el directorio que elija (así como también hacer otro OOP para empatar) esa nueva imagen en mi sitio).
Decidí usar la clase contenedora del Sr. Ephraim (GhostscriptSharp) porque era lo suficientemente simple de usar, y me da un acceso relativamente limpio a la API de la DLL.
Para probarlo, creé una aplicación de consola C# ficticia para asegurarme de que podía cargar la DLL, acceder a ella, entregarle un archivo PDF en el disco local y luego escribir un JPG en el mismo disco local. Después de algunas experiencias de aprendizaje, tuve éxito. Lo entregaría C: \ INPUT.pdf, me daría C: \ OUTPUT.jpg.
Sin embargo, después de integrar el código GhostScriptSharp que tenía en la aplicación de la consola en mi proyecto ASP.NET MVC al punto donde estaba llamando al DLL con P/invoke, Ghostscript vuelve con el código int/error -100
, que es un error fatal (se llama E_Fatal
en el código fuente de GhostScript). Obtengo el mismo resultado con el archivo que se carga a través del formulario HTML, y si le doy las mismas rutas exactas que utilicé en mi aplicación de la consola en funcionamiento.
Para referencia, las líneas que se produce la excepción son 93-97 en GhostScriptSharp.cs (que está en la función CallApi
):
int result = InitAPI(gsInstancePtr, args.Length, args);
if (result < 0) {
throw new ExternalException("Ghostscript conversion error", result);
}
Obviamente la excepción se produce porque result
es -100
.
Cuando InitAPI se llama, el PTR es un ejemplo válido int
(aunque no sé si la instancia de GS es correcta o no), args tiene una longitud de 20 (es una string[]
) de opciones de Ghostscript válidos (incluyendo las rutas escapadas correctamente a mis archivos de entrada &).
Para resumir, ¿qué estoy haciendo mal? El código de error -100
parece un cajón de sastre porque no hay documentación que indique qué podría estar yendo mal aquí.
Cualquier ayuda es muy apreciada, gracias de antemano.
En primer lugar, he escuchado que si estoy ejecutando la aplicación web con el servidor de desarrollo ASP.Net que opera con los permisos de mi usuario local, que soy administrador en mi máquina local y ahí es donde están los archivos ... Dos, antes en la aplicación incluso antes de usar GhostscriptSharp, mi aplicación crea los directorios específicos en los que entran el PDF y los JPG, por lo que también indicaría que tiene permisos de escritura correctos, ¿correcto? – Mattygabe
@Mattygabe - eso es cierto siempre que estés corriendo en Cassini. No estoy seguro de cuál podría ser el problema. – tvanfosson