Невозможно конвертировать PDF в любой формат изображения в C # с Imagemagick - PullRequest
3 голосов
/ 26 марта 2019

это мой первый вопрос, поэтому, пожалуйста, не обращайте на меня внимание :) В любом случае, давайте вернемся к этому:

Для приложения мне нужно преобразовать файл PDF в файл изображения (Конкретный формат не имеет значения, но желательно png или jpg).Чтобы сделать это, я пытаюсь использовать ImageMagick, но когда я пытаюсь что-то преобразовать, он выдаст ошибку.Теперь, после некоторых исследований, я пришел к выводу, что мне нужно установить Ghostscript, который я пытался получить из диспетчера пакетов NuGet, интегрированного в Visual Studio 2017. В любом случае, когда я пытаюсь установить указанный пакет, он выдает следующую ошибку:

Код серьезности Описание Подавление строки файла проекта> Ошибка состояния Не удалось добавить ссылку на «gsdll32».Пожалуйста, убедитесь, что файл доступен, и что он является действительной> сборкой или компонентом COM.

Я пытаюсь сделать это с помощью Visual Studio 2017 с C #.Я использую следующие API: +Magick.NET-Q16-AnyCPU V7.11.1 +GhostScriptSharp V1.3.1.4 +Ghostscript V9.2.0 (Throws error)

В случае, если требуется понять, что я пытаюсь, вот код, который я пытаюсь скомпилировать:

using ImageMagick.Configuration;
using ImageMagick.Defines;
using ImageMagick.ImageOptimizers;
using ImageMagick;

using GhostscriptSharp;
using GhostscriptSharp.Settings;
        public MagickImageCollection PDFOutput;
        public Image Current;
        public org.pdfclown.documents.Page CurrentPage;

        private void BtnConvert_Click(object sender, EventArgs e)
        {
            if(openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    ImageMagick.MagickNET.Initialize();
                    MagickReadSettings Settings = new MagickReadSettings();
                    Settings.Density = new Density(300, 300);
                    Settings.Format = MagickFormat.Jpg;

                    using (MagickImageCollection Images = new MagickImageCollection())
                    {
                        Images.Add(openFileDialog1.FileName);
                        int Page = 1;
                        int i = 0;
                        foreach(MagickImage Image in Images)
                        {
                            Image.Write("FilePage #" + Page);
                            PDFOutput[i] = Image;
                            Page++;
                            i++;
                        }
                        MessageBox.Show(PDFOutput.Count.ToString());
                    }
                }
                catch(Exception E)
                {
                    MessageBox.Show(E.Message);
                }

Я что-то упускаю из-за установки GhostScipt?Работает ли это только при прямой загрузке с веб-сайта GhostScript?

Я надеюсь, что предоставил достаточно контекста для своей проблемы, и я буду с нетерпением ждать ответов на этот вопрос.

Большое спасибо заранее !!

С уважением, Мелвин

1 Ответ

3 голосов
/ 26 марта 2019

Да GhostScript лицензируется таким образом, что люди не включают его в свои оболочки / нюгеты.Вы должны убедиться, что у вас есть dll.

Как правило, вы должны загрузить его (gsdll32.dll), добавить его в проект и вывести на свой путь вывода (или что-нибудь подобное, например, установить его), такчто ваше приложение может найти gsdll32.dll и загрузить его.

Также обратите внимание, что вам потребуется соответствующая битность, а также

...