Вопрос:
Мне нужно преобразовать PDF файл в изображения. Я использовал для тестирования “Total PDF Converter”, который предлагает командную строку, но она условно-бесплатна, и мне нужно найти бесплатную альтернативу.
Кто-нибудь знает такой инструмент или даже бесплатную библиотеку С#?
Лучший ответ:
Инструмент convert (или magick начиная с версии 7) из ImageMagick может сделать это (и многое другое).
В своей простейшей форме это просто
convert myfile.pdf myfile.png
или
magick myfile.pdf myfile.png Ответ №1
Это старый вопрос, но, поскольку отсутствует ответ GhostScript, и нет никакой подсказки для экспорта многостраничного PDF, но я думаю, что добавление другого варианта в норму.
gs -dBATCH -dNOPAUSE -sDEVICE=pnggray -r300 -dUseCropBox -sOutputFile=item-%03d.png examples.pdf
Описание опций:
- dBatch и dNOPAUSE просто скажите gs для запуска в пакетном режиме, что означает
более или менее он не будет задавать никаких вопросов. Эти параметры также
важно, если вы хотите запустить команду в bash script. - sDEVICE указывает gs, какой выходной формат должен быть создан. pnggray для
оттенки серого, png16m для 24-битного цвета RGB. Если вы настаиваете на создании
Jpegs используют -sDEVICE=jpeg для создания цветных JPEG файлов. Используйте -dJPEGQ=N (N – целое число от 0 до 100, по умолчанию 75)
параметр для управления качеством Jpgeg. - -r300 устанавливает разрешение сканирования 300 dpi. Если вы предпочитаете меньший
размеры выходных данных используют -r70, или если вы используете pdf, вы используете высокое разрешение
-r600. Если у вас есть PDF с разрешением 300 точек на дюйм и укажите -r600, ваши изображения будут увеличены. - -dUseCropBox сообщите gs, чтобы использовать CropBox, если он определен. CropBox – это
указывает область интересов на странице. Если у вас есть pdf файл с
большой белый запас, и вы не хотите, чтобы этот запас на вашем выходе
вариант может помочь. - -sOutputFile определяет имя выходного файла. Часть% 03d.png
сообщает gs о включении счетчика для нескольких файлов. Двухстраничный pdf файл
приведет к созданию двух файлов с именем item-001.png и item-002.png. - Последний (неименованный параметр – это входной файл.)
Доступность:
Команда convert imagemagick использует команду gs внутри. Если вы можете конвертировать PDF с помощью imagemagick, у вас уже установлен gs.
Установить ghostscript:
RHEL:
yum install ghostscript
SLES:
zypper install ghostscript
Debian/Ubuntu:
sudo apt-get install ghostscript
Окна:
Вы можете найти двоичные файлы Windows в http://www.ghostscript.com/download/gsdnld.html
Ответ №2
Вопрос довольно старый, но в последнее время я нашел это решение, которое сработало для меня: https://github.com/jhabjan/Ghostscript.NET. Он также доступен как загрузка nuget.
Вот пример кода для преобразования всех страниц PDF в png-изображения:
private static void Test() { var localGhostscriptDll = Path.Combine(Environment.CurrentDirectory, «gsdll64.dll»); var localDllInfo = new GhostscriptVersionInfo(localGhostscriptDll); int desired_x_dpi = 96; int desired_y_dpi = 96; string inputPdfPath = «test.pdf»; string outputPath = Environment.CurrentDirectory; GhostscriptRasterizer _rasterizer = new GhostscriptRasterizer(); _rasterizer.Open(inputPdfPath, localDllInfo, false); for (int pageNumber = 1; pageNumber <= _rasterizer.PageCount; pageNumber++) { string pageFilePath = Path.Combine(outputPath, «Page-» + pageNumber.ToString() + «.png»); Image img = _rasterizer.GetPage(desired_x_dpi, desired_y_dpi, pageNumber); img.Save(pageFilePath, ImageFormat.Png); } _rasterizer.Close(); } Ответ №3
Вы можете проверить это бесплатное решение
http://www.codeproject.com/Articles/32274/How-To-Convert-PDF-to-Image-Using-Ghostscript-API
Он легко конвертирует PDF в изображения (один файл или несколько файлов)
является открытым исходным кодом и использует ghostscript (скачать бесплатно)
Пример использования:
converter = new PDFConverter(); converter.JPEGQuality = 90; converter.OutputFormat = «jpg»; string output = «output.jpg»; converter.Convert(«input.pdf», output); Ответ №4
Вы должны использовать iText sharp. Его порт java-проекта с открытым исходным кодом для управления PDF файлами.
Ответ №5
2JPEG инструмент командной строки может это сделать, например:
2jpeg.exe -src “C:In*. pdf” -dst “C:Out”
Ответ №6
Ответ @Thomas не сработал в моем случае. Я предполагаю, что это работает, только если у вас есть изображения в вашем PDF. В моем случае сработало pdftoppm (источник с https://askubuntu.com/a/50180/37527):
pdftoppm input.pdf outputname -png
Это выведет каждую страницу в PDF-формате в формате outputname-01.png, где 01 является индексом страницы.
Преобразование одной страницы PDF
pdftoppm input.pdf outputname -png -f {page} -singlefile
Замените {page} на номер страницы. Он проиндексирован на 1, поэтому -f 1 будет первой страницей.
Указание преобразованного разрешения изображения
Разрешение по умолчанию для этой команды составляет 150 DPI. Увеличение его приведет к увеличению размера файла и большей детализации.
Чтобы увеличить разрешение преобразованного PDF, добавьте параметры -rx {resolution} и -ry {resolution}. Например:
pdftoppm input.pdf outputname -png -rx 300 -ry 300