Мне нужна программа/sdk/программное обеспечение для преобразования файла PDF в изображения. Мне требуются следующие функции в этом конвертере:
Проверьте, является ли файл PDF цветным или черно-белым. Если pdf-файл BW, есть возможность конвертировать pdf-файл в изображения .tiff. Если файл PDF цветной, есть возможность конвертировать файл PDF в изображения .png. Это преобразование должно быть быстрым и, если возможно, иметь возможность многопоточности. Это может быть бесплатный инструмент (с открытым исходным кодом) или платное решение, которое я могу интегрировать с Visual Studio 2010 C#. Это означает, что интерфейс командной строки будет работать.
Чтобы проверить, является ли 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);
}
Немного больше информации о классах, используемых в коде, можно найти здесь: