Linia poleceń: Jak obrócić plik PDF o 90 stopni?

52

Kiedy skanuję dokumenty zorientowane poziomo, wyjściowe pliki PDF są pionowe, więc wszystkie przeglądarki plików PDF wyświetlają zeskanowane dokumenty w orientacji pionowej.

Jak obrócić plik PDF o 90 stopni z wiersza poleceń?

Próbowałem wyszukać i znalazłem kilka rozwiązań, ale miałem problem ze znalezieniem czegoś, co wyglądało na autorytatywne rozwiązanie [1], które używa stabilnego / solidnego narzędzia linux / unix.


przypis [1]

Na przykład oto próbka niektórych przypadkowych rozwiązań, które znalazłem:

  • „wystarczy użyć Adobe Acrobat Pro, aby obrócić plik, a następnie zapisać plik”
  • „użyj pdfjam”
  • „użyj pdftk”
  • „użyj $ {PROGRAM_NAME} z Poppler”
  • „użyj konwersji Imagemagick” - ale wtedy wszystkie komentarze były bardzo negatywne i stwierdzały „jakość obrazu jest zrujnowana”
  • „otwórz plik w przeglądarce PDF, następnie obróć, a następnie wydrukuj za pomocą drukarki PDF, takiej jak CUTEPDF lub PDFPRINTER itp.”
  • „użyj $ {PROGRAM_NAME}”, a potem szukałem „$ {PROGRAM_NAME}” i jest coś o „Fedora usunęła $ {PROGRAM_NAME} z powodu problemów z licencją”
Trevor Boyd Smith
źródło
5
Nie ma „autorskich rozwiązań”, ale należy pamiętać, jaką metodę stosują różne rozwiązania: Bezpośrednia manipulacja strukturą PDF (pdftk, Adobe Acrobat i inne programy), konwersja do obrazu, a następnie konwersja z powrotem do PDF (np. Konwersja Imagemagick, drukowanie za pomocą drukarki PDF itp.). Ten ostatni jest oczywiście złym pomysłem.
reż
Jakie są te przypadkowe rozwiązania ? Jak byłeś rozczarowany każdym z nich? Czy rzeczywiście je wypróbowałeś?
simlev

Odpowiedzi:

48

Wystarczy użyć pdftk.

  1. Do obracania w prawo:

    pdftk input.pdf cat 1-endeast output output.pdf
    
  2. Do obracania w lewo:

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

Jeśli chodzi o instalację pdftk na Fedorze, znalazłem ten link .

użytkownik163859
źródło
4
Strona podręcznika użytkownika pdftk zawiera więcej opcji obracania: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
Wyjście jest obrócone, ale nadal wystarczająco skalowane, aby pasowało do pierwotnej orientacji. Niepomocne.
JohnMudd,
@JohnMudd Co rozumiesz przez „skalowane wystarczająco małe, aby pasowało do oryginalnej orientacji”? Podejrzewam, że masz teraz problem z przeglądarką PDF, a nie z rotacją stron.
user163859
Mój oryginalny plik PDF miał wielkość strony obróconą o 90 stopni, więc wysokość strony została zmniejszona z 11 do 8,5. Nie zmienił się po skorygowaniu obrotu. Stwierdzono, że jest to prawdą w przypadku wielu narzędzi online. W końcu może to nie być problem z konwersją. Znalazłem opcję skalowania podczas przeglądania / drukowania obróconego pliku PDF i to naprawiło. Przepraszam, byłem tak sfrustrowany, że po prostu wydrukowałem i ruszyłem dalej i nie zauważyłem dokładnie, jakie kroki podjąłem.
JohnMudd
1
pdftkjest usuwany w Ubuntu 18.04 i nowszych. Sam Ubuntu sugeruje zainstalowanie przystawki, która działa tylko w prostych sytuacjach (nie znalazłem moich plików, być może dlatego, że znajdowały się poza moim katalogiem domowym?). Przeprowadziłem się do pdfjam ... --angle 270....
Stéphane Gourichon
42

Właśnie natknąłem się na ten wątek i zobaczyłem, że nie wspomniano jeszcze o dobrym rozwiązaniu. Odkryłem, że (przynajmniej w Debianie i Ubuntu) pdfjam zawiera następujące polecenia:

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

Myślę, że to najłatwiejsze i najszybsze podejście. Są to skrypty poprawnie korzystające z polecenia pdfjam. Btw. pdfjam to pakiet wirtualny, który jest w komplecietexlive-extra-utils

derschueddi
źródło
4
Wygląda na to, że 90 idzie w lewo, a 270 w prawo - być może powinieneś o tym wspomnieć.
Aaron Hall,
2
pdf90 to rzeczywiście cienkie opakowanie. Wymusza jednak konwencję sufiksów. Więc użyłem pdfjam bezpośrednio:pdfjam --outfile myoutputfile.pdf --angle 270 --fitpaper true --rotateoversize true myinputfile.pdf
Stéphane Gourichon
16

Możesz użyć ImageMagick: displaylub convert- np. Obrócić go zgodnie z ruchem wskazówek zegara

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

Użyj -90 do obrotu w lewo.

Uwaga: Z tej metody należy korzystać tylko wtedy, gdy oryginalny obraz jest mapą bitową (np. Utworzoną przez skanowanie). Jeśli oryginalny obraz nie jest bitmapą, ta metoda przekonwertuje go na jeden, co pogorszy jakość. W drugim przypadku skorzystaj z jednej z metod podanych w pozostałych odpowiedziach.

NickD
źródło
11
Spowoduje to najpierw konwersję tekstu PDF na obraz, dzięki czemu rozmiar wzrośnie, a jakość spadnie (chyba że był to tylko skan).
aviv
1
Tak, to rzeczywiście przydatne przypomnienie, ale w tym przypadku OP stwierdza, że ​​skanuje dokumenty.
NickD
12
Wynik pdf jest bardzo niskiej jakości.
Ivan Romanov,
Ta metoda jest dobra tylko w przypadku zeskanowanych oryginałów: są to już mapy bitowe. W przypadku zwykłych plików PDF zapoznaj się z komentarzem @ aviv powyżej i być może użyj metody z innej odpowiedzi.
NickD
12

pdftk nie jest już dostępny w systemie Ubuntu 18.04 z powodu przestarzałych zależności.

Najlepszym rozwiązaniem, jakie znalazłem, było (graficzne) narzędzie pdfshuffler .

Zainstaluj i uruchom. Otwórz żądany plik pdf, kliknij prawym przyciskiem myszy stronę i obróć każdy z osobna. Zestawia również pliki PDF i inne fajne rzeczy.

sudo apt install pdfshuffler
tronic
źródło
1
Czy musisz ręcznie obracać każdą stronę? To przełamuje umowę. Muszę obrócić książkę PDF o długości setek stron, aby wyświetlić ją lepiej (większą) na Kindle. AKTUALIZACJA : Właśnie wypróbowałem, nie, możesz Ctrl-A, aby zaznaczyć wszystkie strony, a następnie obrócić je wszystkie w jednym kroku.
Gerry Lufwansa
12

W Linux Mint 18.3 (również wierzę w inne dystrybucje Debiana) masz proste narzędzie wiersza poleceń o nazwie QPDF.

Można użyć: qpdf in.pdf out.pdf --rotate==[+|-]angle[:page-range].

Z dokumentacji :

--rotate = [+ | -] kąt [: zakres stron]

Zastosuj obrót do określonych stron. Część wartości opcji w zakresie stron ma ten sam format, co zakresy stron w rozdziale 3.5, „Opcje wyboru strony”. Jeśli zakres stron zostanie pominięty, obrót zostanie zastosowany do wszystkich stron. Część kątowa parametru może wynosić 90, 180 lub 270. Jeśli poprzedza ją + lub -, kąt jest dodawany lub odejmowany od oryginalnych obrotów określonych stron. W przeciwnym razie obroty stron zostaną ustawione na dokładną wartość. Na przykład polecenie qpdf in.pdf out.pdf --rotate=+90:2,4,6 --rotate=180:7-8obróci strony 2, 4 i 6 o 90 stopni zgodnie z ruchem wskazówek zegara od ich pierwotnego obrotu i wymusi obrót stron od 7 do 9 do 180 stopni niezależnie od ich pierwotnego obrotu, a polecenie qpdf in.pdf out.pdf --rotate=180obróci wszystkie strony o 180 stopni.

Royi
źródło
3
Określanie zakresu stron wydaje się obowiązkowe, przynajmniej w mojej obecnej wersji qpdf (8.0.2).
Xtreme Biker
6

Aby poprawić rozdzielczość wyjściową (domyślnie 72 DPI), uzyskałem dobre wyniki dzięki:

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

To było dla .pdf zeskanowanego dokumentu. Stwierdziłem, że ta -density 300obniżona jakość jest nieco inna -density 200.

Greg Ben
źródło
Dodanie gęstości 300, 600, a nawet 1200 miało tylko niewielką poprawę jakości wyjściowej.
JohnMudd
1

Mimo że ma swoje ograniczenia, dość często używam PDFedit, szczególnie do obracania skanów PDF. Podczas gdy konwersja ImageMagick (przy użyciu raczej wartości o wysokiej gęstości) osiąga całkiem dobrą jakość, nadyma również plik (oryginał: 155 kiB, obrócona o 180 ° kopia: 1,2 MiB). PDFedit obraca ten sam obraz z niezmienioną jakością bez zauważalnej zmiany rozmiaru pliku.

ToraKamo
źródło
brzmi bardzo obiecująco! zauważyłem również problem z drastyczną zmianą rozmiaru pliku, o którym mówisz.
Trevor Boyd Smith
0

Korzystam z tego polecenia, aby automatycznie obracać pliki pdf, aby stały się pionowe, jeśli nie są one pionowe:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dAutoRotatePages=/All -sOutputFile="$outputFile" "$file"
SebMa
źródło
To miało zerowy efekt.
Colin 't Hart
@ Colin'tHart Moje polecenie przywraca tylko dokument, który ma stać pionowo w dół, gdyby nie było pionowo w pierwszej kolejności, aby wymusić użycie obrotu pdf90lub pdf180czy pdf270zamiast znaleźć tę odpowiedź
SebMa