Командная строка: как вы поворачиваете PDF-файл на 90 градусов?

54

Когда я сканирую документы в альбомной ориентации, выходные файлы PDF имеют книжную ориентацию, поэтому все программы просмотра PDF отображают отсканированные документы в книжной ориентации.

Из командной строки, как вы поворачиваете PDF-файл на 90 градусов?

Я попытался выполнить поиск и нашел кучу решений, но мне было трудно найти то, что выглядело как авторитетное решение [1], в котором используется стабильный / надежный инструмент linux / unix.


сноска [1]

Например, вот выборка некоторых случайных решений, которые я нашел:

  • «Просто используйте Adobe Acrobat Pro, чтобы повернуть файл, а затем сохранить файл»
  • "использовать pdfjam"
  • "использовать pdftk"
  • "использовать $ {PROGRAM_NAME} из Poppler"
  • «использовать конвертирование Imagemagick» - но тогда все комментарии были очень негативными и утверждали «качество изображения разрушено»
  • «открыть файл в средстве просмотра PDF, затем повернуть, а затем распечатать на принтере PDF, таком как CUTEPDF, PDFPRINTER и т. д.»
  • «используйте $ {PROGRAM_NAME}», затем я искал «$ {PROGRAM_NAME}», и есть что-то вроде «Fedora удалила $ {PROGRAM_NAME} из-за проблем с лицензированием»
Тревор Бойд Смит
источник
5
Не существует «авторских решений», но вы должны помнить, какой метод используют различные решения: прямое манипулирование структурой PDF (pdftk, Adobe Acrobat и другие программы), преобразование в изображение, а затем преобразование обратно в PDF (например, Преобразование Imagemagick, печать на принтере PDF и т. Д.). Последнее явно плохая идея.
Диркт
Как эти случайные решения ? Как вы были разочарованы каждым из них? Вы действительно пробовали их?
simlev

Ответы:

48

Просто используйте pdftk.

  1. Для вращения по часовой стрелке:

    pdftk input.pdf cat 1-endeast output output.pdf
    
  2. Для вращения против часовой стрелки:

    pdftk input.pdf cat 1-endwest output output.pdf
    

По поводу установки pdftk на Fedora я нашел эту ссылку .

user163859
источник
4
На странице руководства pdftk представлены дополнительные параметры вращения:The page rotation setting can cause pdftk to rotate pages and documents. Each option sets the page rotation as follows (in degrees): north: 0, east: 90, south: 180, west: 270, left: -90, right: +90, down: +180. left, right, and down make relative adjustments to a page's rotation.
Tapper
Вывод поворачивается, но все еще масштабируется достаточно маленьким, чтобы соответствовать исходной ориентации. Не полезно.
JohnMudd
@JohnMudd Что вы подразумеваете под "достаточно малым, чтобы соответствовать исходной ориентации"? Полагаю, у вас сейчас есть проблема с программой просмотра PDF, а не с вращением страниц.
user163859
Мой оригинальный PDF был страницей размером с букву, повернутой на 90 градусов, поэтому высота страницы была уменьшена с 11 "до 8,5". Не изменился после исправления вращения. Нашел это, чтобы быть правдой со многими онлайн инструментами. Не может быть проблемой с преобразованием в конце концов. Я нашел параметр масштабирования при просмотре / печати повернутого PDF, и это исправило его. Извините, я был так расстроен в тот момент, что просто напечатал и пошел дальше и не заметил точных шагов, которые я предпринял.
JohnMudd
1
pdftkудаляется в Ubuntu 18.04 и выше. Сама Ubuntu предлагает установить оснастку, которая работает только в простых ситуациях (она не нашла мои файлы, возможно, потому что они были вне моего домашнего каталога?). Я переехал в pdfjam ... --angle 270....
Стефан Гурихон
43

Я просто наткнулся на эту ветку и увидел, что пока не найдено хорошего решения. Я обнаружил, что (по крайней мере, в Debian и Ubuntu) pdfjam поставляется со следующими командами:

pdf90 input.pdf
pdf180 input.pdf
pdf270 input.pdf

Я думаю, что это самый простой и быстрый подход. Это скрипты, использующие команду pdfjam правильно. Btw. pdfjam - это виртуальный пакет, который поставляется сtexlive-extra-utils

derschueddi
источник
4
Похоже, 90 идет против часовой стрелки, а 270 идет по часовой стрелке - возможно, вы должны упомянуть об этом.
Аарон Холл
2
pdf90 действительно тонкая оболочка. Тем не менее это форсирует конвенцию суффиксов. Так что я использовал pdfjam напрямую:pdfjam --outfile myoutputfile.pdf --angle 270 --fitpaper true --rotateoversize true myinputfile.pdf
Стефан Гурихон
16

Вы можете использовать ImageMagick: displayили convert- например, чтобы повернуть его по часовой стрелке, используйте

convert -rotate 90 <file>.pdf <rotated-file>.pdf

Используйте -90 для вращения против часовой стрелки.

NB только использовать этот метод , когда исходное изображение представляет собой растровый (например , производится путем сканирования). Если исходное изображение не является растровым изображением, этот метод преобразует его в одно и качество будет ухудшаться. В последнем случае, пожалуйста, используйте один из методов в других ответах.

NickD
источник
11
Сначала будет преобразован текст PDF в изображение, поэтому размер увеличится, а качество снизится (если только это не было только сканирование).
авив
1
Да, действительно, это полезное напоминание, но в этом случае ОП заявляет, что он сканирует документы.
NickD
12
Результат pdf очень низкого качества.
Иван Романов
Этот метод хорош только для отсканированных оригиналов: они уже являются растровыми изображениями. Для обычных PDF-файлов см. Комментарий @ aviv выше и, возможно, используйте метод в другом ответе.
NickD
13

В Linux Mint 18.3 (я верю и в другие производные от Debian) у вас есть простой инструмент командной строки с именем QPDF.

Вы можете использовать: qpdf in.pdf out.pdf --rotate==[+|-]angle[:page-range].

Из документации :

--rotate = [+ | -] Угол [: страница-диапазон]

Применить вращение к указанным страницам. Часть диапазона значений значения параметра имеет тот же формат, что и диапазоны страниц в Разделе 3.5, «Параметры выбора страницы». Если диапазон страниц не указан, поворот применяется ко всем страницам. Угловая часть параметра может быть либо 90, 180, либо 270. Если ей предшествует + или -, угол добавляется или вычитается из исходного поворота указанных страниц. В противном случае вращения страниц устанавливаются на точное значение. Например, команда qpdf in.pdf out.pdf --rotate=+90:2,4,6 --rotate=180:7-8будет поворачивать страницы 2, 4 и 6 на 90 градусов по часовой стрелке от их исходного поворота и принудительно qpdf in.pdf out.pdf --rotate=180поворачивать страницы с 7 по 9 на 180 градусов независимо от их первоначального поворота, а команда будет поворачивать все страницы на 180 градусов.

Royi
источник
3
Указание диапазона страниц кажется обязательным, по крайней мере, в моей текущей версии qpdf (8.0.2).
экстремальный байкер
По крайней мере, похоже, что это не так (9.0.2): qpdf in.pdf out.pdf --rotate==-90хорошо работает для всех страниц.
iNyar
12

pdftk больше не доступен в Ubuntu 18.04 из-за некоторых устаревших зависимостей.

Лучшим решением, которое я нашел, был (графический) инструмент pdfshuffler .

Установите и запустите его. Откройте нужный файл PDF, щелкните правой кнопкой мыши на странице и поверните каждый файл по отдельности. Он также сопоставляет PDF-файлы и некоторые другие приятные вещи.

sudo apt install pdfshuffler
троник
источник
1
Нужно ли поворачивать каждую страницу вручную? Это нарушает условия сделки. Мне нужно повернуть PDF-книгу длиной в сотню страниц, чтобы лучше рассмотреть ее на Kindle. ОБНОВЛЕНИЕ : только что попробовал, нет, вы можете Ctrl-A, чтобы выбрать все страницы, а затем повернуть их все за один шаг.
Джерри Lufwansa
6

Чтобы улучшить выходное разрешение (по умолчанию 72 DPI), я получил хорошие результаты с:

convert -rotate -90 -density 200 input.pdf output.pdf

Это было для .pdf отсканированного документа. Я обнаружил, что -density 300качество несколько снизилось по сравнению с -density 200.

Грег Бен
источник
Добавление плотности 300, 600 и даже 1200 привело к незначительному улучшению качества продукции.
JohnMudd
1

Хотя у него есть свои ограничения, я довольно часто использую PDFedit, особенно для ротации сканирований PDF. Хотя преобразование ImageMagick (с использованием довольно высоких значений плотности) обеспечивает довольно хорошее качество, оно также увеличивает размер файла (оригинал: 155 КБ, повернутая на 180 ° копия: 1,2 МБ). PDFedit вращает одно и то же изображение с неизменным качеством без заметного изменения размера файла.

ToraKamo
источник
звучит очень многообещающе! я также заметил проблему с резким изменением размера файла, на который вы ссылаетесь.
Тревор Бойд Смит
0

Я использую эту команду для автоматического поворота PDF-файлов, чтобы они были в вертикальном положении, если они не были в вертикальном положении:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dAutoRotatePages=/All -sOutputFile="$outputFile" "$file"
SebMa
источник
Это имело нулевой эффект.
Colin 't Hart
@ Команда Colin'tHart My только восстанавливает документ , чтобы стать вертикально вниз , если он не был в вертикальном положении , в первую очередь, чтобы заставить использовать вращение pdf90или pdf180или pdf270наоборот, увидеть этот ответ
SebMa