Итак, я использую Matthew Ephraim's GhostscriptSharp , который представляет собой простую оболочку C # для неуправляемой библиотеки Win32 Ghostscript в моем ASP.Net MVC проект. Немного предыстории:
Я пытаюсь попросить пользователя загрузить PDF-файл, а затем преобразовать этот документ в изображение, которое я затем могу сохранить в любом каталоге, который я выберу (а также сделаю некоторые другие ООП, чтобы привязать это новое изображение к моему сайту).
Я решил использовать класс оболочки г-на Эфраима ( GhostscriptSharp), потому что он был достаточно простым в использовании и дает мне относительно чистый доступ к API DLL.
Чтобы проверить это, я создал фиктивное консольное приложение C #, чтобы убедиться, что я могу загрузить DLL, получить к ней доступ, передать ей файл PDF на локальный диск, а затем заставить его записать JPG на тот же локальный диск. После нескольких опытов по обучению я добился успеха. Я бы передал ему C: \ INPUT.pdf, он передал бы мне C: \ OUTPUT.jpg.
Однако после интеграции кода GhostScriptSharp, который у меня был в консольном приложении, в мой проект ASP.NET MVC до точки, в которой я вызывал DLL с помощью P / invoke, Ghostscript возвращает код int / error -100
, что является фатальной ошибкой (в исходном коде GhostScript называется E_Fatal
). Я получаю тот же результат как с файлом, который загружен через форму HTML, так и с теми же жестко заданными путями, которые я использовал в своем рабочем консольном приложении.
Для справки, строки, которые являются исключением выброшены 93-97 в GhostScriptSharp.cs (который находится в функции CallApi
):
int result = InitAPI(gsInstancePtr, args.Length, args);
if (result < 0) {
throw new ExternalException("Ghostscript conversion error", result);
}
Очевидно, исключение выбрасывается, потому что результат
равен -100
.
Когда вызывается InitAPI, экземпляр ptr является допустимым int
(хотя я не знаю, правильный экземпляр GS или нет), args имеет длину 20 (это строка []
) допустимых параметров GhostScript (включая правильно экранированные пути к моим входным и выходным файлам).
Короче говоря, что я делаю не так ? Код ошибки -100
кажется универсальным, потому что нет документации, в которой указывается, что здесь может быть не так.
Любая помощь приветствуется, заранее спасибо.