Línea de comando: ¿cómo rotar un archivo PDF 90 grados?

54

Cuando escaneo documentos orientados al paisaje, los archivos PDF de salida son verticales y, por lo tanto, todos los visores de PDF muestran los documentos escaneados en vertical.

Desde la línea de comando, ¿cómo gira un archivo PDF 90 grados?

Intenté buscar y encontré un montón de soluciones, pero tuve problemas para encontrar lo que parecía una solución autorizada [1] que usa una herramienta estable / robusta de Linux / Unix.


nota al pie [1]

Por ejemplo, aquí hay una muestra de algunas de las soluciones al azar que encontré:

  • "solo use Adobe Acrobat Pro para rotar el archivo y luego guardar el archivo"
  • "utilizar pdfjam"
  • "usar pdftk"
  • "usa $ {PROGRAM_NAME} de Poppler"
  • "use el convertidor de Imagemagick", pero todos los comentarios fueron muy negativos y decían "la calidad de la imagen está arruinada"
  • "abra el archivo en un visor de PDF, luego gírelo, luego imprímalo usando una impresora PDF como CUTEPDF o PDFPRINTER o etc."
  • "use $ {PROGRAM_NAME}", luego busqué "$ {PROGRAM_NAME}" y hay algo sobre "Fedora eliminó $ {PROGRAM_NAME} debido a problemas de licencia"
Trevor Boyd Smith
fuente
55
No hay "soluciones autorizadas", pero debe tener en cuenta qué método utilizan las diversas soluciones: manipulación directa de la estructura de PDF (pdftk, Adobe Acrobat y otros programas), convertir a una imagen y luego volver a convertir a PDF (p. Ej. Conversión de Imagemagick, impresión con impresora PDF, etc. Esto último es obviamente una mala idea.
dirkt
¿Cómo son esas soluciones al azar ? ¿Cómo te decepcionó cada uno de ellos? ¿ Realmente los probaste?
simlev

Respuestas:

48

Solo usa pdftk.

  1. Para girar en sentido horario:

    pdftk input.pdf cat 1-endeast output output.pdf
    
  2. Para girar en sentido antihorario:

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

Con respecto a la instalación de pdftk en Fedora, encontré este enlace .

usuario163859
fuente
44
La página de manual de pdftk establece más opciones para rotar: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
La salida se gira pero sigue siendo lo suficientemente pequeña como para ajustarse a la orientación original. No es útil.
JohnMudd
@JohnMudd ¿Qué quieres decir con "escalado lo suficientemente pequeño como para ajustarse a la orientación original"? Supongo que ahora tiene un problema con el visor de PDF, no con la rotación de páginas.
user163859
Mi PDF original era una página de tamaño carta girada 90 grados, por lo que la altura de la página se redujo de 11 "a 8.5". No cambió después de corregir la rotación. Descubrí que esto es cierto con muchas herramientas en línea. Podría no ser un problema con la conversión después de todo. Encontré una opción de escala mientras visualizaba / imprimía PDF rotado y eso lo solucionó. Lo siento, estaba tan frustrado en ese punto que simplemente imprimí y seguí adelante y no noté los pasos exactos que tomé.
JohnMudd
1
pdftkse elimina en Ubuntu 18.04 y superior. Ubuntu mismo sugiere instalar un complemento, que funciona solo en situaciones simples (¿no encontró mis archivos, tal vez porque estaban fuera de mi directorio de inicio?). Me mudé a pdfjam ... --angle 270....
Stéphane Gourichon
43

Me topé con este hilo y vi que todavía no se menciona una buena solución. Descubrí que (al menos en Debian y Ubuntu) pdfjam viene con los siguientes comandos:

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

Creo que ese es el enfoque más fácil y rápido. Estos son scripts que usan el comando pdfjam correctamente. Por cierto. pdfjam es un paquete virtual que viene contexlive-extra-utils

derschueddi
fuente
44
Parece que 90 va en sentido antihorario y 270 va en sentido horario, tal vez deberías mencionar eso.
Aaron Hall
2
pdf90 es de hecho una envoltura delgada. Sin embargo, obliga a una convención de sufijos. Entonces utilicé pdfjam directamente:pdfjam --outfile myoutputfile.pdf --angle 270 --fitpaper true --rotateoversize true myinputfile.pdf
Stéphane Gourichon
16

Puede usar ImageMagick: displayo convert, por ejemplo, para rotarlo en sentido horario

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

Use -90 para una rotación en sentido antihorario.

Nota: solo use este método cuando la imagen original sea un mapa de bits (por ejemplo, producido por escaneo) Si la imagen original no es un mapa de bits, este método la convertirá en uno y la calidad se verá afectada. En el último caso, utilice uno de los métodos en las otras respuestas.

NickD
fuente
11
Esto convertirá primero el texto PDF en una imagen, por lo que el tamaño aumentará y la calidad disminuirá (a menos que ya sea solo un escaneo).
aviv
1
Sí, de hecho, es un recordatorio útil, pero en este caso el OP dice que está escaneando los documentos.
NickD
12
Resultado pdf es de muy baja calidad.
Ivan Romanov
Este método solo es bueno para los originales escaneados: ya son mapas de bits. Para archivos PDF comunes, vea el comentario de @ aviv arriba y tal vez use el método en la otra respuesta.
NickD
13

En Linux Mint 18.3 (también creo en otras distribuciones derivadas de Debian) tiene una herramienta de línea de comando simple llamada QPDF.

Se puede utilizar: qpdf in.pdf out.pdf --rotate==[+|-]angle[:page-range].

De la documentación :

--rotate = [+ | -] ángulo [: rango de página]

Aplicar rotación a las páginas especificadas. La parte del rango de página del valor de la opción tiene el mismo formato que los rangos de página en la Sección 3.5, “Opciones de selección de página”. Si se omite el rango de páginas, la rotación se aplica a todas las páginas. La parte del ángulo del parámetro puede ser 90, 180 o 270. Si está precedido por + o -, el ángulo se suma o resta de las rotaciones originales de las páginas especificadas. De lo contrario, las rotaciones de las páginas se establecen en el valor exacto. Por ejemplo, el comando qpdf in.pdf out.pdf --rotate=+90:2,4,6 --rotate=180:7-8rotaría las páginas 2, 4 y 6 90 grados en sentido horario desde su rotación original y forzaría la rotación de las páginas 7 a 9 a 180 grados independientemente de su rotación original, y el comando qpdf in.pdf out.pdf --rotate=180rotaría todas las páginas 180 grados.

Royi
fuente
3
Especificar el rango de páginas parece ser obligatorio, al menos en mi versión actual de qpdf (8.0.2).
Xtreme Biker
Parece que al menos ya no es el caso (9.0.2): qpdf in.pdf out.pdf --rotate==-90funciona bien para todas las páginas.
iNyar hace
12

pdftk ya no está disponible en Ubuntu 18.04 debido a algunas dependencias obsoletas.

La mejor solución que encontré fue la herramienta (gráfica) pdfshuffler .

Instalarlo y ejecutarlo. Abra el archivo pdf deseado, haga clic derecho en la página y gire cada uno individualmente. También recopila archivos PDF y algunas otras cosas buenas.

sudo apt install pdfshuffler
tronic
fuente
1
¿Tiene que rotar cada página manualmente? Eso es un factor decisivo. Necesito rotar un libro PDF de cientos de páginas para verlo mejor (más grande) en un Kindle. ACTUALIZACIÓN : Acabo de intentarlo, no, puedes Ctrl-A para seleccionar todas las páginas y luego rotarlas todas en un solo paso.
Gerry Lufwansa el
6

Para mejorar la resolución de salida (el valor predeterminado es 72 DPI), obtuve buenos resultados con:

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

Esto fue para un .pdf de un documento escaneado. Encontré que la -density 300calidad reducida algo versus -density 200.

Greg Ben
fuente
Agregar densidad 300, 600 e incluso 1200 tuvo solo una ligera mejora en la calidad de salida.
JohnMudd
1

Aunque tiene sus limitaciones, a menudo uso PDFedit, especialmente para la rotación de escaneos PDF. Si bien la conversión de ImageMagick (utilizando valores de densidad bastante alta) logra una calidad bastante buena, también hincha el archivo (original: 155 kiB, copia girada 180 °: 1.2 MiB). PDFedit gira la misma imagen con una calidad sin cambios sin cambiar notablemente el tamaño del archivo.

ToraKamo
fuente
suena muy prometedor! También noté el problema al cambiar drásticamente el tamaño del archivo al que se refiere.
Trevor Boyd Smith
0

Utilizo este comando para rotar automáticamente los archivos pdf para que estén en posición vertical si no lo están en primer lugar:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dAutoRotatePages=/All -sOutputFile="$outputFile" "$file"
SebMa
fuente
Esto tuvo cero efecto.
Colin 't Hart
@ Colin'tHart Mi comando sólo restaura el documento se convierta en posición vertical hacia abajo si no era en posición vertical, en primer lugar, para forzar el uso de rotación pdf90o pdf180, o pdf270en su lugar, ver esta respuesta
SebMa