#c# #linux #ghostscript
#c# #linux #ghostscript
Вопрос:
Я использую ghostscript GhostscriptRasterizer для преобразования страниц pdf в файлы png. Ниже приведен код c # .net core 3.0, который я использую, он отлично работает на моем компьютере с Windows. Однако, когда я переношу этот код на сервер Linux, я получаю сообщение об ошибке ниже. в этой строке:
rasterizer.Open(folder_path "/" pdf_filename, gvi, true);
Не удается загрузить разделяемую библиотеку ‘kernel32.dll — или одна из его зависимостей. Чтобы помочь диагностировать проблемы с загрузкой, рассмотрите возможность установки переменной среды LD_DEBUG: libkernel32.dll : не удается открыть общий объектный файл: Нет такого файла или каталога
Ниже приведен полный код.
using (var rasterizer = new GhostscriptRasterizer())
{
string binpath = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string gsDllPath = System.IO.Path.Combine(binpath, Environment.Is64BitProcess ? "gsdll64.dll" : "gsdll32.dll");
GhostscriptVersionInfo gvi = new GhostscriptVersionInfo(gsDllPath);
rasterizer.Open(folder_path "/" pdf_filename, gvi, true);
int PdfPages = rasterizer.PageCount;
for (int pageNumber = 1; pageNumber <= rasterizer.PageCount; pageNumber )
{
Image pdf2PNG = rasterizer.GetPage(200, 200, pageNumber);
string save_file_name = chart_id.ToString() "_" pageNumber.ToString() ".jpeg";
pdf2PNG.Save(System.IO.Path.Combine(folder_path, save_file_name), System.Drawing.Imaging.ImageFormat.Jpeg);
}
rasterizer.Close();
}
Я установил GhostScript на компьютер Linux, используя приведенную ниже команду.
sudo apt-get install ghostscript
Что я делаю не так? С моими ограниченными знаниями о ghostscript, я считаю gsdll64.dll
, что тот, который я использую в Windows, несовместим с Linux-машиной. Если я правильно понимаю, то где я могу получить соответствующий gsdll64.dll для linux-машины?
Комментарии:
1. Сообщение об ошибке Не удается загрузить разделяемую библиотеку ‘kernel32.dll » мне кажется, это подтверждает ваше подозрение, что это проблема с операционной системой, поскольку это, конечно же, системный файл Windows..
2. Используете ли вы Ghostscript.NET ? Потому что это вообще не включено net core.
3. У меня есть Ghostscript.NET.dll файл в папке bin. Однако я не уверен, используется ли этот файл вообще при выполнении. Как уже было сказано, тогда код отлично работает на компьютере с Windows.
4. У меня есть Ghostscript.NET.dll файл в папке bin. Однако я не уверен, используется ли этот файл вообще при выполнении — разве вы не используете GhostscriptRasterizer ? Вы можете проверить свои
using
утверждения в коде, чтобы подтвердить это. Код отлично работает на компьютере с Windows. да, но библиотека на самом деле не обновлялась за последние 4 года, поэтому на самом деле нет никаких шансов, что она будет работать на .Net Core.5. Итак, мне кажется, что ваш выбор таков: 1) запустите код на компьютере с Windows или 2) используйте совершенно другой подход, предполагая, что есть один доступный, который соответствует вашим потребностям.