Конвертировать несколько PNG в один PDF
У меня есть 280 файлов PNG, которые я хочу объединить и преобразовать в один PDF.
Имена файлов PNG находятся в последовательности p000.png, p001.png и т. Д., И общее пространство составляет около 30 МБ.
Я сделал:
convert p00*.png to myfile.pdf
и это работало нормально. К счастью, в правильном порядке.
Но, когда я делаю:
conver p*.png to myfile.pdf
Он потребляет все мои 4 Гб памяти и половину моего обмена. Потом вылетает с ошибкой
convert: memory allocation failed `myfile.pdf' @ error/pdf.c/WritePDFImage/1595.
Есть идеи, как обойти эту проблему?
Я думаю, что достаточно хорошим решением было бы использовать convert
один файл за один раз в pdf, с тем же именем. Тогда используйте pdfunite
или же pdftk
объединить их. Но я не знаю, как использовать convert
в этом случае.
1 ответ
Imagemagick, кажется, очень сильно использует память. Рекомендуется использовать -limit для ограничения размера памяти, который будет использовать конвертируемый файл, он должен использовать кеш диска для всего остального, что ему нужно. Прочитайте объяснение здесь:
http://www.imagemagick.org/pipermail/magick-users/2002-March/001285.html
А вот как использовать параметр -limit: http://www.imagemagick.org/script/command-line-options.php
Если нет, вы можете сделать это так, как вы описываете, конвертировать каждое изображение в отдельности, а затем объединить их с другим инструментом. Что-то вроде
for name in p*.png; do convert $name `basename $name .png`.pdf; done
должен сделать это.
В основном он перебирает все файлы png, запускает конвертирование для них, единственное волшебство - это basename $name .png
часть, которая будет заменена именем файла минус часть.png, так что при присоединении к нему расширения.pdf имя файла имеет смысл.
Попробуйте сами, чтобы вы почувствовали, что делает basename:
basename something.png .png
echo `basename something.png .png`.pdf