Не ясно, что Вы подразумеваете "под качественной потерей". Это могло означать много разных вещей. Вы могли отправить некоторые образцы для иллюстрирования? Возможно, сократите тот же раздел из версий низкого качества и хорошего качества (как PNG для предотвращения дальнейшей качественной потери).
Возможно, необходимо использовать -density
сделать преобразование на уровне более высоких точек на дюйм:
convert -density 300 file.pdf page_%04d.jpg
(Можно предварительно ожидать -units PixelsPerInch
или -units PixelsPerCentimeter
при необходимости. Мои значения по умолчанию копии к пкс/дюйм)
Обновление: Поскольку Вы указали, gscan2pdf
(способ, которым Вы используете его) просто обертка для pdfimages
(от poppler). pdfimages
не делает того же самого это convert
делает при предоставлении PDF как вход.
convert
берет PDF, представляет его в некотором разрешении и использует полученное растровое изображение в качестве исходного изображения.
pdfimages
просматривает PDF для встроенных растровых изображений и экспортирует каждого в файл. Это просто игнорирует любой текст или векторные команды рисования в PDF.
В результате, если то, что Вы имеете, является PDF, это - просто обертка вокруг серии битовых массивов, pdfimages
сделает намного лучшее задание извлечения их, потому что это получает Вас необработанные данные в его первоначальном размере. Вы, вероятно, также хотите использовать -j
опция к pdfimages
, потому что PDF может содержать необработанные данные JPEG. По умолчанию, pdfimages
преобразовывает все в формат PNM и преобразование JPEG> PPM>, JPEG является процессом с потерями.
Так, попробуйте
pdfimages -j file.pdf page
Вы можете или, возможно, не должны следовать за этим с a convert
кому: .jpg
шаг (в зависимости от того, что растровый формат PDF использовал).
Я попробовал эту команду на PDF, который я сделал сам из последовательности изображений JPEG. Извлеченные JPEGs были байтом для байта, идентичным исходным изображениям. Вы не можете получить более высокое качество, чем это.
Вы могли просто скопировать все с
cp -rf
и затем удалите скрытые каталоги в месте назначения с
find -type d -name '.*' -and -not -name '.' -print0 | xargs -0 rm -rf
С другой стороны, если у Вас есть некоторый усовершенствованный tar (например, tar GNU), Вы могли бы попытаться использовать tar для исключения некоторых шаблонов. Но я боюсь, что это не возможно только исключить скрытые каталоги, но включать скрытые файлы.
Например, что-то вроде этого:
tar --exclude=PATTERN -f - -c * | tar -C destination -f - -x
Btw, tar GNU имеет зоопарк, исключают параметры стиля. Мой фаворит
--exclude-vcs
Хорошие варианты для копирования дерева каталогов за исключением некоторых файлов:
rsync: это - в основном CP плюс тонна возможностей исключения.
rsync -a --exclude='.*' /source/ /destination
мир: это имеет некоторые возможности исключения, и это находится в POSIX, так должно быть доступным везде (за исключением того, что некоторые дистрибутивы Linux не включают его в свою стандартную установку по некоторым причинам).
cd /source && mkdir -p /destination && \
pax -rw -pp -s '!.*/\..*!!' . /destination
альтернативно к cp
Вы могли использовать rsync
с --exclude=PATTERN
.