Как конвертировать 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#, который работает только на сервере, поэтому он потерпит неудачу по другим причинам.