Подтвердить что ты не робот

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

Мне нужно преобразовать PDF файл в изображения. Я использовал для тестирования "Total PDF Converter", который предлагает командную строку, но она условно-бесплатна, и мне нужно найти бесплатную альтернативу.

Кто-нибудь знает такой инструмент или даже бесплатную библиотеку С#?

4b9b3361

Ответ 1

Инструмент convert (или magick начиная с версии 7) из ImageMagick может сделать это (и многое другое).

В своей простейшей форме это просто

convert myfile.pdf myfile.png

или

magick myfile.pdf myfile.png

Ответ 2

Это старый вопрос, но, поскольку отсутствует ответ 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

Ответ 3

Вопрос довольно старый, но в последнее время я нашел это решение, которое сработало для меня: 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();
    }

Ответ 4

Вы можете проверить это бесплатное решение

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);

Ответ 5

Вы должны использовать iText sharp. Его порт java-проекта с открытым исходным кодом для управления PDF файлами. http://sourceforge.net/projects/itextsharp/

Ответ 6

2JPEG инструмент командной строки может это сделать, например:

2jpeg.exe -src "C:\In\*. pdf" -dst "C:\Out"

Ответ 7

Ответ @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