В прошлый раз я использовал convert
для такой задачи я явно указал размер места назначения через изменение размеров:
$ i=150; convert a.png b.png -compress jpeg -quality 70 \
-density ${i}x${i} -units PixelsPerInch \
-resize $((i*827/100))x$((i*1169/100)) \
-repage $((i*827/100))x$((i*1169/100)) multipage.pdf
convert
команда не всегда использует DPI в качестве единицы плотности/формата страниц по умолчанию, таким образом мы явно указываем DPI с -units
опция (иначе можно получить различные результаты с различными комбинациями версий/формата ввода). Новый размер (указанный через -resize
) размер страницы DIN A4 в пикселях. Изменить размер аргумент указывает максимальный размер страницы. Какое разрешение и качество для выбора точно зависят от варианта использования - я выбрал 150 DPI и среднее качество для оставления некоторого свободного места, в то время как это не выглядит слишком плохо при печати на бумаге.
Отметьте это convert
по умолчанию не изменяет соотношение сторон с изменить размер операцией:
Измените размер вместит изображение в требуемый размер. Это НЕ заполняется, требуемый размер поля.
В зависимости от версии ImageMagick и включенных форматов ввода могло бы быть нормально опускать -repage
опция. Но иногда это требуется, и без той опции заголовок PDF мог бы содержать слишком небольшие размеры. В любом случае, -repage
не должен причинять боль.
Вычисления используют целочисленную арифметику с тех пор bash
только поддержки это. С zsh
выражения могут быть упрощены - т.е. заменены $((i*8.27))x$((i*11.69))
.
Если файлы PNG являются двухуровневыми (черно-белый иначе штриховая графика), отображает затем img2pdf
инструмент приводит к превосходящим результатам по ImageMagick convert
. Это означает img2pdf
быстрее и приводит к меньшему PDFs.
Пример:
$ img2pdf -o multipage.pdf a.png b.png
или:
$ img2pdf --pagesize A4 -o multipage.pdf a.png b.png
Если у Вас есть аналогичная система, которую можно использовать в качестве руководства для наблюдения, каково корректное владение для всех файлов, то можно загрузиться в спасательный режим, опуститься до корневой оболочки и вручную восстановить корректное владение во все файлы в /usr
.
Самый быстрый путь может состоять в том, чтобы переустановить Вашу ОС или восстановить от резервного копирования.
В Ubuntu или подобный, затем нет никакого пароля root по умолчанию (учетная запись отключена), который является, почему Вы не можете su
.
Так как Вы полили из шланга полномочия на единственной вещи, которая предоставляет Вам корневой доступ уровня, Вы будете нуждаться в некоторой помощи СНАРУЖИ текущей программной среды для фиксации этого.
Я предлагаю, чтобы самый легкий путь состоял в том, чтобы загрузить LiveCD для Вашего дистрибутива, смонтировать Ваш диск и изменить полномочия файла с помощью chmod
Вы перечислили оттуда.
Вы могли также попытаться загрузиться в однопользовательский режим для получения корневой оболочки.
Знайте что обычно все вещи в /usr/
каталог должен принадлежать root
таким образом, необходимо просто смочь сделать рекурсивное chown
зафиксировать независимо от того, что Вы повредились. (Редактирование: На по-видимому под управлением комментарии @Gilles chown
повреждения setuid и setgid биты, таким образом, необходимо будет вручную выдержать сравнение с существующей системой для восстановления всех тех, после того как Вы фиксируете владение снова.)
Однако очень немногие должны быть 4111
. Тот дополнительный является специальным предложением полномочия, но это заставляет его выполниться как корень, даже когда выполнено как пользователь! Только sudo
и выбору немного команд нужно установить этот бит полномочий. Если Вы не выполняли a chmod
для запуска с Вас, вероятно, не должны фиксировать это вообще, все полномочия должны уже быть корректными. Не выполняйте большое chmod
операция, не зная то, что все полномочия, как предполагается.
sudo chown -R root /usr/
?
– Adam
19.07.2011, 17:35
/usr
на LivdCD необходимо смонтировать его где-нибудь и работать против того пути, сказать /mnt/mydrive/usr
. Затем необходимо будет зафиксировать setuid, обдумал /mnt/mydrive/usr/bin/sudo
. Затем просмотрите/usr на livecd и посмотрите, существуют ли какие-либо другие владения кроме корня. find /usr -not -uid 0
и измените их для соответствия. Затем ищите вещи, которые имеют другой setuid или setgid набор битов и удостоверяются, что они соответствуют также. Если бы у Вас есть реальная система Ubunutu для сравнения с этим, было бы лучшим.
– Caleb
19.07.2011, 17:39
(setq template-auto-insert t)
Выполните следующие действия в терминале: [1179312]chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
Это должно исправить команду [1178894]sudo[1178895] и в мгновение ока вы должны снова войти в систему.[1178442].
В режиме восстановления Ubuntu введите следующие команды .. Это исправлена для меня ..
mount -o remount,rw /
mount --all
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
restart
Надеюсь, это исправит вашу проблему. (Или кто-то еще)
Я нашел этот здесь в этом Сообщение блога .
Это намного проще, чем предлагают другие ответы. Нет необходимости форматировать, перезагружать или использовать live CD.
su root # then enter your password to switch to root user
chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
exit # to get back to the original user
Это самый простой способ решить эту проблему. Объяснение, sudo поврежден (я знаю, что поврежденный - неправильный термин, но он не работает, поэтому нам нужно избегать использования sudo)
Я тестировал этот метод на Linux mint. Это система, подобная Ubuntu. Сообщите мне, что этот метод не работает ни в одной другой ОС. Обновим ответ соответственно.
Спасибо
chown
нетchmod
. Начиная со всего в/usr
папка должна бытьroot:root
, это должно быть легкой фиксацией, не кропотливой фиксацией это achmod
ударьте означал бы. – Caleb 19.07.2011, 16:53chown
сбрасывает setxid биты. Существует несколько файлов в/usr
это не принадлежит полностью; больше это находится в другой группе (особенно setgid программы в/usr/bin
). – Gilles 'SO- stop being evil' 19.07.2011, 17:12