AskalotLearnalot Ответов: 1

Как конвертировать PDF в изображение с помощью graphicsmagick в C# ASP.NET


Я пытаюсь конвертировать pdf в tiff(каждая страница будет представлять собой файл изображения). Я не смог найти ни одного примера, чтобы сделать это с помощью библиотеки.
Вот что у меня есть до сих пор.
string inputPdf = @"C:\Users\Desktop\pdfconverttes\name.pdf";
           string outputPng = @"C:\Users\Desktop\pdfconverttes\name.tif";
           using (MagickImage images = new MagickImage())
           {
               images.Read(inputPdf);
               using (MagickImage  vertical = images.AppendVertically())//this works with imagemagick not graphicsmagick.
               {
                   vertical.Format = MagickFormat.Tiff;
                   vertical.Density = new Density(300);
                   vertical.Write(outputPng);
               }
           }

Это изображение создает одно изображение, в котором есть все страницы pdf.

Что я уже пробовал:

Что я пытался создать несколько образов:
using ImageMagick;
 MagickReadSettings settings = new MagickReadSettings();
            // Settings the density to 300 dpi will create an image with a better quality
            settings.Density = new Density(300);

            using (MagickImageCollection images = new MagickImageCollection())
            {
                // Add all the pages of the pdf file to the collection
                images.Read(@"C:\Users\Desktop\pdfconverttes\name.pdf", settings);

                int page = 1;
                foreach (MagickImage image in images)
                {
                    // Write page to file that contains the page number
                    image.Write(@"C: \Users\Desktop\pdfconverttes\name.png" + page + ".png");
                    // Writing to a specific format works the same as for a single image
                    image.Format = MagickFormat.Ptif;
                    image.Write(@"C: \Users\Desktop\pdfconverttes\name.tif" + page + ".tif");
                    page++;
                }
            }

Необработанное Исключение: ImageMagick.MagickCoderErrorException: Ошибка WriteBlob
Это использование ImageMagick.
Побочный вопрос: Есть ли способ избежать покупки GhostScript для использования ImageMagick

Richard MacCutchan

image.Write(@"C: \Users\Desktop\pdfconverttes\name.png" + page + ".png");
Это пространство после C: это может быть проблемой. Кроме того, вы не можете записывать данные на диск пользователя в ASP.NET.

AskalotLearnalot

вау, спасибо..можете ли вы опубликовать в качестве ответа. "Кроме того, вы не можете писать на диск пользователя в ASP.NET-ты имеешь в виду плохую практику?

Afzaal Ahmad Zeeshan

Это означает, что ваш ASP.NET веб-приложение не имеет доступа к компьютеру пользователя (включая его жесткие диски). Самое лучшее, что можно сделать, - это разрешить пользователям загружать файл, который браузер позволит им сохранить на своем устройстве.

В противном случае веб-приложение не может получить доступ к компьютеру пользователя из-за песочницы, применяемой браузерами по соображениям безопасности и конфиденциальности.

Richard MacCutchan

Я имею в виду, что это предотвращается безопасностью браузера. Подумайте об этом: если веб-сайт может хранить или изменять файлы в системе пользователя, то они могут нанести неисчислимый ущерб. Кроме того, поскольку код, который вы используете, - это C#, который работает только на сервере, поэтому он потерпит неудачу по другим причинам.

1 Ответов

Рейтинг:
11

AskalotLearnalot

Удалите пробел из обоих путей после c: как предложил @RichardMacCutchan