Конвертер PDF в изображения

Мне нужна программа/sdk/программное обеспечение для преобразования файла PDF в изображения. Мне требуются следующие функции в этом конвертере:

Проверьте, является ли файл PDF цветным или черно-белым. Если pdf-файл BW, есть возможность конвертировать pdf-файл в изображения .tiff. Если файл PDF цветной, есть возможность конвертировать файл PDF в изображения .png. Это преобразование должно быть быстрым и, если возможно, иметь возможность многопоточности. Это может быть бесплатный инструмент (с открытым исходным кодом) или платное решение, которое я могу интегрировать с Visual Studio 2010 C#. Это означает, что интерфейс командной строки будет работать.

Ответы (2)

Чтобы проверить, является ли PDF цветным или черно-белым, вы можете использовать Ghostscript (бесплатный, с открытым исходным кодом, кросс-платформенный):

Пример командной строки:

gs -o - -sDEVICE=inkcov /path/to/your.pdf

Пример вывода:

Page 1
0.00000  0.00000  0.00000  0.02230 CMYK OK
Page 2
0.02360  0.02360  0.02360  0.02360 CMYK OK
Page 3
0.02525  0.02525  0.02525  0.00000 CMYK OK
Page 4
0.00000  0.00000  0.00000  0.01982 CMYK OK

Здесь вы можете видеть, что на странице 4 цвет не используется, а на страницах 1+2+3 используется. Этот случай особенно «неприятный» для тех, кто хочет сэкономить на цветных чернилах: поскольку все значения C, M, Y (и K) абсолютно одинаковы для каждой из страниц 1-3, они, возможно, могут показаться человеку глаз не как цветные страницы, а как («насыщенные») оттенки серого (если каждый отдельный пиксель смешивается с этими значениями цвета).

Другие идеи: как узнать, являются ли страницы PDF цветными или черно-белыми?


Чтобы преобразовать PDF в TIFF, вы можете использовать GhostScript (бесплатный, с открытым исходным кодом, кроссплатформенный):

в Windows:

gswin32c -dNOPAUSE -q -g300x300 -sDEVICE=tiffg4 -dBATCH -sOutputFile=output_file_name.tif input_file_name.pdf

на *никсе:

gs -dNOPAUSE -q -g300x300 -sDEVICE=tiffg4 -dBATCH -sOutputFile=output_file_name.tif input_file_name.pdf

Другие идеи: лучший способ конвертировать pdf-файлы в tiff-файлы


Чтобы преобразовать PDF в PNG, вы можете использовать ImageMagick (бесплатный, с открытым исходным кодом, кросс-платформенный):

convert foo.pdf pages-%03d.png

Если вас интересует коммерческий SDK для этого типа преобразования и обработки изображений, вы можете попробовать использовать LEADTOOLS Imaging SDK . Обратите внимание, что я являюсь сотрудником этого инструмента

Вы можете использовать нашу команду ImageColorTypeCommand , чтобы проверить, является ли изображение черно-белым, в оттенках серого или цветным. Вы можете реализовать это на C#, используя следующее:

using (RasterCodecs codecs = new RasterCodecs())
{
   RasterImage image = codecs.Load(@"path to file");
   ImageColorTypeCommand command = new ImageColorTypeCommand();
   command.Run(image);
   Console.WriteLine("Color Type = " + command.ColorType.ToString() + "\n" + "Confidence = " + command.Confidence.ToString());
}

Как только вы узнаете, что такое ImageColorType, вы можете просто сохранить файл, указав выходной формат следующим образом:

if(command.ColorType == ImageColorType.BlackAndWhite)
{
   codecs.Save(image, @"Save path for output", RasterImageFormat.Tif, 0);
}
else
{
   codecs.Save(image, @"Save path for output", RasterImageFormat.Png, 0);
}

Немного больше информации о классах, используемых в коде, можно найти здесь:

растровые кодеки

Растровое изображение