Ответ 1
Инструмент convert
(или magick
начиная с версии 7) из ImageMagick может сделать это (и многое другое).
В своей простейшей форме это просто
convert myfile.pdf myfile.png
или
magick myfile.pdf myfile.png
Мне нужно преобразовать PDF файл в изображения. Я использовал для тестирования "Total PDF Converter", который предлагает командную строку, но она условно-бесплатна, и мне нужно найти бесплатную альтернативу.
Кто-нибудь знает такой инструмент или даже бесплатную библиотеку С#?
Инструмент convert
(или magick
начиная с версии 7) из ImageMagick может сделать это (и многое другое).
В своей простейшей форме это просто
convert myfile.pdf myfile.png
или
magick myfile.pdf myfile.png
Это старый вопрос, но, поскольку отсутствует ответ 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
Вопрос довольно старый, но в последнее время я нашел это решение, которое сработало для меня: 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();
}
Вы можете проверить это бесплатное решение
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);
Вы должны использовать iText sharp. Его порт java-проекта с открытым исходным кодом для управления PDF файлами. http://sourceforge.net/projects/itextsharp/
2JPEG инструмент командной строки может это сделать, например:
2jpeg.exe -src "C:\In\*. pdf" -dst "C:\Out"
Ответ @Thomas не сработал в моем случае. Я предполагаю, что это работает, только если у вас есть изображения в вашем PDF. В моем случае сработало pdftoppm
(источник с https://askubuntu.com/a/50180/37527):
pdftoppm input.pdf outputname -png
Это выведет каждую страницу в PDF-формате в формате outputname-01.png
, где 01
является индексом страницы.
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