Преобразование PDF в JPG или PNG с использованием С# или командной строки

Вопрос:Мне нужно преобразовать PDF файл в изображения. Я использовал для тестирования "Total PDF Converter", который предлагает командную строку, но она условно-бесплатна, и мне нужно найти бесплатную альтернативу. Кто-нибудь знает такой инструмент или даже бесплатную библиотеку С#? Лучший ответ: Инструмент convert (или magick начиная с версии 7) из ImageMagick может сделать это (и многое другое). В

Вопрос:

Мне нужно преобразовать 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

Оцените статью
Добавить комментарий