Riga di comando: come si ruota un file PDF di 90 gradi?


54

Quando eseguo la scansione di documenti orientati in orizzontale, i file PDF di output sono in verticale e quindi tutti i visualizzatori PDF visualizzano i documenti acquisiti in verticale.

Dalla riga di comando, come si ruota un file PDF di 90 gradi?

Ho provato a cercare e ho trovato un sacco di soluzioni ma ho avuto problemi a trovare quella che sembrava una soluzione autorevole [1] che utilizza uno strumento linux / unix stabile / robusto.


nota in calce [1]

Ad esempio, ecco un esempio di alcune delle soluzioni casuali che ho trovato:

  • "basta usare Adobe Acrobat Pro per ruotare il file e quindi salvare il file"
  • "usa pdfjam"
  • "usa pdftk"
  • "usa $ {PROGRAM_NAME} da Poppler"
  • "usa Imagemagick's convert" - ma poi tutti i commenti erano molto negativi e affermavano "la qualità dell'immagine è rovinata"
  • "apri il file in un visualizzatore PDF, quindi ruota, quindi stampa utilizzando una stampante PDF come CUTEPDF o PDFPRINTER o ecc."
  • "usa $ {PROGRAM_NAME}" poi ho cercato "$ {PROGRAM_NAME}" e c'è qualcosa su "Fedora ha rimosso $ {PROGRAM_NAME} a causa di problemi di licenza"

5
Non esistono "soluzioni autorevoli", ma è necessario tenere presente il metodo utilizzato dalle varie soluzioni: manipolazione diretta della struttura PDF (pdftk, Adobe Acrobat e altri programmi), conversione in un'immagine e riconversione in PDF (ad es. Conversione di Imagemagick, stampa con stampante PDF ecc.). Quest'ultima è ovviamente una cattiva idea.
Dirkt

Come sono quelle soluzioni a casaccio ? Come sei stato deluso da ognuno di loro? Li hai davvero provati?
simlev

Risposte:


48

Usa solo pdftk.

  1. Per ruotare in senso orario:

    pdftk input.pdf cat 1-endeast output output.pdf
    
  2. Per ruotare in senso antiorario:

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

Per quanto riguarda l'installazione di pdftk su Fedora, ho trovato questo link .


4
La pagina man di pdftk indica più opzioni per la rotazione: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

L'output viene ruotato ma comunque sufficientemente piccolo per adattarsi all'orientamento originale. Non d'aiuto.
JohnMudd,

@JohnMudd Cosa intendi con "ridimensionato abbastanza da adattarsi all'orientamento originale"? Suppongo che ora tu abbia un problema con il visualizzatore PDF, non con la rotazione delle pagine.
user163859,

Il mio PDF originale era una pagina formato lettera ruotata di 90 gradi, quindi l'altezza della pagina è stata ridotta da 11 "a 8,5". Non è cambiato dopo aver corretto la rotazione. Ho scoperto che questo è vero con molti strumenti online. Dopo tutto, potrebbe non essere un problema con la conversione. Ho trovato un'opzione di ridimensionamento durante la visualizzazione / stampa di PDF ruotati e questo è stato risolto. Mi dispiace, ero così frustrato a quel punto che ho appena stampato e continuato e non ho notato i passi esatti che ho fatto.
JohnMudd,

1
pdftkviene rimosso in Ubuntu 18.04 e versioni successive. Ubuntu stesso suggerisce di installare uno snap, che funziona solo in situazioni semplici (non ha trovato i miei file, forse perché erano al di fuori della mia home directory?). Mi sono trasferito a pdfjam ... --angle 270....
Stéphane Gourichon

43

Mi sono appena imbattuto in questo thread e ho visto che non esiste ancora una buona soluzione menzionata. Ho scoperto che (almeno su Debian e Ubuntu) pdfjam arriva con i seguenti comandi:

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

Penso che sia l'approccio più semplice e veloce. Questi sono script che usano correttamente il comando pdfjam. Btw. pdfjam è un pacchetto virtuale che viene fornito contexlive-extra-utils


4
Sembra che 90 vada in senso antiorario e 270 in senso orario - forse dovresti menzionarlo.
Aaron Hall il

2
pdf90 è davvero un wrapper sottile. Eppure forza una convenzione di suffisso. Quindi ho usato direttamente pdfjam:pdfjam --outfile myoutputfile.pdf --angle 270 --fitpaper true --rotateoversize true myinputfile.pdf
Stéphane Gourichon

16

È possibile utilizzare ImageMagick: displayoppure convert- ad es. Per ruotarlo in senso orario

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

Utilizzare -90 per una rotazione in senso antiorario.

NB Solo utilizzare questo metodo quando l'immagine originale è un bitmap (es prodotta mediante la scansione). Se l'immagine originale non è una bitmap, questo metodo la convertirà in una sola e la qualità ne risentirà. In quest'ultimo caso, utilizzare uno dei metodi nelle altre risposte.


11
Questo prima convertirà il testo PDF in un'immagine, quindi le dimensioni aumenteranno e la qualità diminuirà (a meno che non fosse già solo una scansione).
aviv

1
Sì, questo è un utile promemoria, ma in questo caso il PO afferma che sta scannerizzando i documenti.
NickD,

12
Risultato pdf è di qualità molto bassa.
Ivan Romanov,

Questo metodo è valido solo per gli originali scansionati: sono già bitmap. Per i PDF ordinari, vedere il commento di @ aviv sopra e forse usare il metodo nell'altra risposta.
NickD


13

In Linux Mint 18.3 (credo anche in altre distribuzioni derivate da Debian) hai un semplice strumento da riga di comando chiamato QPDF.

E 'possibile utilizzare: qpdf in.pdf out.pdf --rotate==[+|-]angle[:page-range].

Dalla documentazione :

--rotate = [+ | -] Angolo [: pagina-range]

Applica la rotazione alle pagine specificate. La parte dell'intervallo di pagine del valore dell'opzione ha lo stesso formato degli intervalli di pagine nella Sezione 3.5, «Opzioni di selezione delle pagine». Se l'intervallo di pagine viene omesso, la rotazione viene applicata a tutte le pagine. La parte angolare del parametro può essere 90, 180 o 270. Se preceduto da + o -, l'angolo viene aggiunto o sottratto dalle rotazioni originali delle pagine specificate. In caso contrario, le rotazioni delle pagine vengono impostate sul valore esatto. Ad esempio, il comando qpdf in.pdf out.pdf --rotate=+90:2,4,6 --rotate=180:7-8ruoterebbe le pagine 2, 4 e 6 di 90 gradi in senso orario dalla loro rotazione originale e forzerebbe la rotazione delle pagine da 7 a 9 a 180 gradi indipendentemente dalla loro rotazione originale, e il comando qpdf in.pdf out.pdf --rotate=180ruoterebbe tutte le pagine di 180 gradi.


3
Specificare l'intervallo di pagine sembra essere obbligatorio, almeno nella mia attuale versione di qpdf (8.0.2).
Xtreme Biker,

Sembra almeno non essere più il caso (9.0.2): qpdf in.pdf out.pdf --rotate==-90funziona bene per tutte le pagine.
iNyar

12

pdftk non è più disponibile su Ubuntu 18.04 a causa di alcune dipendenze deprecate.

La migliore soluzione che ho trovato era lo strumento (grafico) pdfshuffler .

Installalo ed eseguilo. Apri il file pdf desiderato, fai clic con il pulsante destro del mouse sulla pagina e ruotalo singolarmente. Raccoglie anche pdf e altre cose carine.

sudo apt install pdfshuffler

1
Devi ruotare ogni pagina manualmente? Questo è un rompicapo. Devo ruotare un libro PDF lungo centinaia di pagine per visualizzarlo meglio (più grande) su un Kindle. AGGIORNAMENTO : Ho appena provato, no, puoi Ctrl-A per selezionare tutte le pagine e ruotarle tutte in un solo passaggio.
Gerry Lufwansa,

6

Per migliorare la risoluzione di output (il valore predefinito è 72 DPI), ho ottenuto buoni risultati con:

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

Questo era per un .pdf di un documento scansionato. Ho trovato che la -density 300qualità ridotta in qualche modo contro -density 200.


L'aggiunta di densità 300, 600 e persino 1200 ha avuto solo un leggero miglioramento della qualità dell'output.
JohnMudd,

1

Sebbene abbia i suoi limiti, uso abbastanza spesso PDFedit, specialmente per la rotazione delle scansioni PDF. Mentre la conversione di ImageMagick (utilizzando valori di densità piuttosto elevata) raggiunge una qualità abbastanza buona, blocca anche il file (originale: 155 kiB, copia ruotata di 180 °: 1,2 MiB). PDFedit ruota la stessa immagine con una qualità invariata senza cambiare in modo evidente le dimensioni del file.


sembra molto promettente! ho anche notato il problema con la modifica drastica della dimensione del file a cui ti riferisci.
Trevor Boyd Smith,

0

Uso questo comando per ruotare automaticamente i file pdf in modo che diventino verticali se non sono verticali in primo luogo:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dAutoRotatePages=/All -sOutputFile="$outputFile" "$file"

Ciò non ha avuto alcun effetto.
Colin 't Hart,

@ Colin'tHart Il mio comando ripristina il documento solo per diventare verticale se non era in primo luogo verticale, per forzare l'uso della rotazione pdf90o, pdf180o pdf270invece, vedere questa risposta
SebMa
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.