Ligne de commande: comment faire pivoter un fichier PDF à 90 degrés?

55

Lorsque je numérise des documents orientés paysage, les fichiers PDF de sortie sont au format portrait. Ainsi, tous les visualiseurs PDF affichent les documents numérisés en mode portrait.

À partir de la ligne de commande, comment faire pivoter un fichier PDF à 90 degrés?

J'ai essayé de chercher et trouvé plusieurs solutions, mais j'ai eu du mal à trouver ce qui ressemblait à une solution faisant autorité [1] qui utilise un outil Linux / Unix stable / robuste.


note de bas de page [1]

Par exemple, voici un échantillon de certaines des solutions que j'ai trouvées au hasard:

  • "utilisez simplement Adobe Acrobat Pro pour faire pivoter le fichier, puis enregistrez le fichier"
  • "utiliser pdfjam"
  • "utiliser pdftk"
  • "utiliser $ {PROGRAM_NAME} de Poppler"
  • "utilise le convertisseur d'Imagemagick" - mais tous les commentaires étaient très négatifs et indiquaient "la qualité de l'image est ruinée"
  • "ouvrez le fichier dans un visualiseur PDF, puis faites-le pivoter, puis imprimez-le à l'aide d'une imprimante PDF telle que CUTEPDF ou PDFPRINTER, etc."
  • "utiliser $ {PROGRAM_NAME}" puis j'ai recherché "$ {PROGRAM_NAME}" et il y a quelque chose à propos de "Fedora a supprimé $ {PROGRAM_NAME} en raison de problèmes de licence"
Trevor Boyd Smith
la source
5
Il n’existe pas de "solutions faisant autorité", mais vous devez garder à l’esprit la méthode utilisée par les différentes solutions: Manipulation directe de la structure PDF (pdftk, Adobe Acrobat, etc.), conversion en une image puis conversion en PDF (par exemple Conversion d’Imagemagick, impression avec une imprimante PDF, etc.). Ce dernier est évidemment une mauvaise idée.
dirkt
Comment sont ces solution au hasard ? Comment avez-vous été déçu par chacun d'eux? Les avez-vous réellement essayées?
simlev

Réponses:

50

Il suffit d'utiliser pdftk.

  1. Pour la rotation dans le sens des aiguilles d'une montre:

    pdftk input.pdf cat 1-endeast output output.pdf
    
  2. Pour la rotation anti-horaire:

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

En ce qui concerne l'installation de pdftk sur Fedora, j'ai trouvé ce lien .

utilisateur163859
la source
4
La page de manuel de pdftk indique plus d'options pour la rotation: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 sortie est pivotée mais toujours suffisamment petite pour s'adapter à l'orientation d'origine. Inutile.
JohnMudd
@JohnMudd Qu'entendez-vous par "assez petit pour s'adapter à l'orientation d'origine"? Je suppose que vous avez maintenant un problème avec la visionneuse PDF, pas avec la rotation des pages.
user163859
Mon PDF original était une page de format lettre qui pivotait de 90 degrés. La hauteur de la page a donc été réduite de 11 "à 8,5". N'a pas changé après avoir corrigé la rotation. J'ai trouvé que cela était vrai avec de nombreux outils en ligne. Peut-être pas un problème de conversion après tout. J'ai trouvé une option de mise à l'échelle lors de la visualisation / impression de PDF pivoté et qui l'a corrigée. Désolé, j'étais tellement frustré à ce point que je venais d'imprimer et de passer à autre chose et que je ne notais pas les étapes exactes que j'avais prises.
JohnMudd
1
pdftkest supprimé dans Ubuntu à partir de 18.04. Ubuntu lui-même suggère d'installer un composant logiciel enfichable, qui ne fonctionne que dans des situations simples (mes fichiers n'ont pas été trouvés, peut-être parce qu'ils se trouvaient en dehors de mon répertoire personnel?). J'ai déménagé à pdfjam ... --angle 270....
Stéphane Gourichon le
43

Je suis juste tombé sur ce fil et j'ai vu qu'il n'y avait pas encore de bonne solution mentionnée. J'ai trouvé que (au moins sur Debian et Ubuntu) pdfjam est livré avec les commandes suivantes:

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

Je pense que c'est l'approche la plus facile et la plus rapide. Ce sont des scripts utilisant correctement la commande pdfjam. Btw. le pdfjam est un paquet virtuel qui vient avectexlive-extra-utils

derschueddi
la source
4
On dirait que 90 va dans le sens anti-horaire et 270 dans le sens des aiguilles d'une montre - vous devriez peut-être le mentionner.
Aaron Hall
2
pdf90 est en effet une mince enveloppe. Pourtant, il force une convention de suffixe. J'ai donc directement utilisé pdfjam:pdfjam --outfile myoutputfile.pdf --angle 270 --fitpaper true --rotateoversize true myinputfile.pdf
Stéphane Gourichon le
16

Vous pouvez utiliser ImageMagick: displayou convert- par exemple, pour le faire pivoter dans le sens des aiguilles d'une montre, utilisez

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

Utilisez -90 pour une rotation dans le sens antihoraire.

NB: Utilisez cette méthode uniquement lorsque l'image d'origine est une image bitmap (par exemple, produite par numérisation). Si l'image d'origine n'est pas un bitmap, cette méthode la convertira en une seule et la qualité en souffrira. Dans ce dernier cas, veuillez utiliser l'une des méthodes décrites dans les autres réponses.

NickD
la source
11
Cela convertira d'abord le texte PDF en une image, donc la taille augmentera et la qualité baissera (sauf si ce n'était déjà qu'une numérisation).
Aviv
1
Oui, c’est un rappel utile, mais dans ce cas, le PO indique qu’il numérise les documents.
NickD
12
Le résultat pdf est de très basse qualité.
Ivan Romanov
Cette méthode n'est utile que pour les originaux numérisés: ce sont déjà des bitmaps. Pour les PDF ordinaires, voir le commentaire de @ aviv ci-dessus et utilisez peut-être la méthode dans l'autre réponse.
NickD
13

Dans Linux Mint 18.3 (je crois également dans d’autres distributions dérivées de Debian), vous disposez d’un outil de ligne de commande simple nommé QPDF.

Vous pouvez utiliser: qpdf in.pdf out.pdf --rotate==[+|-]angle[:page-range].

De la documentation :

--rotate = [+ | -] angle [: plage de pages]

Appliquez une rotation aux pages spécifiées. La partie plage de pages de la valeur d'option a le même format que les plages de pages de la Section 3.5, «Options de sélection de page». Si la plage de pages est omise, la rotation est appliquée à toutes les pages. La partie angle du paramètre peut être 90, 180 ou 270. Si précédé de + ou -, l'angle est ajouté ou soustrait aux rotations d'origine des pages spécifiées. Sinon, les rotations des pages sont définies sur la valeur exacte. Par exemple, la commande fait qpdf in.pdf out.pdf --rotate=+90:2,4,6 --rotate=180:7-8pivoter les pages 2, 4 et 6 de 90 degrés dans le sens des aiguilles d'une montre par rapport à leur rotation d'origine et force la rotation des pages 7 à 9 à 180 degrés quelle que soit leur rotation d'origine. La commande fait qpdf in.pdf out.pdf --rotate=180pivoter toutes les pages de 180 degrés.

Royi
la source
3
Spécifier la plage de pages semble être obligatoire, du moins dans ma version actuelle de qpdf (8.0.2).
Xtreme Biker
Il semble au moins ne plus être le cas (9.0.2): qpdf in.pdf out.pdf --rotate==-90fonctionne bien pour toutes les pages.
iNyar
12

pdftk n'est plus disponible sur Ubuntu 18.04 en raison de certaines dépendances déconseillées.

La meilleure solution que j'ai trouvée était l'outil pdfshuffler (graphique) .

Installez-le et lancez-le. Ouvrez le fichier pdf souhaité, cliquez avec le bouton droit de la souris sur la page et faites-les pivoter individuellement. Il rassemble également des fichiers PDF et quelques autres choses intéressantes.

sudo apt install pdfshuffler
tronic
la source
1
Devez-vous faire pivoter chaque page manuellement? C'est un briseur d'affaire. Je dois faire pivoter un livre PDF de plusieurs centaines de pages pour le visualiser plus grand (plus grand) sur un Kindle. MISE À JOUR : Vous venez de l'essayer, non, vous pouvez Ctrl-A pour sélectionner toutes les pages, puis les faire pivoter en une seule étape.
Gerry Lufwansa
6

Pour améliorer la résolution de sortie (72 DPI par défaut), j'ai obtenu de bons résultats avec:

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

C'était pour un .pdf d'un document numérisé. J'ai trouvé que -density 300la qualité réduite quelque peu par rapport à -density 200.

Greg Ben
la source
L’addition des densités 300, 600 et même 1200 n’a que peu amélioré la qualité de sortie.
JohnMudd
1

Bien qu'il ait ses limites, j'utilise assez souvent PDFedit, en particulier pour la rotation des numérisations PDF. Alors que la conversion d'ImageMagick (avec des valeurs plutôt élevées) atteint une assez bonne qualité, elle gonfle également le fichier (original: 155 Ko, copie tournée de 180 °: 1,2 Mio). PDFedit fait pivoter la même image avec une qualité inchangée sans modifier notablement la taille du fichier.

ToraKamo
la source
semble très prometteur! J'ai également remarqué le problème avec le changement radical de la taille du fichier auquel vous faites référence.
Trevor Boyd Smith
0

J'utilise cette commande pour faire pivoter automatiquement les fichiers pdf afin qu'ils deviennent verticaux s'ils ne le sont pas en premier lieu:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dAutoRotatePages=/All -sOutputFile="$outputFile" "$file"
SebMa
la source
Cela n'a eu aucun effet.
Colin 't Hart
@ Colin'tHart Ma commande ne fait que restaurer le document afin qu'il devienne vertical s'il n'était pas vertical au départ, pour forcer l'utilisation de la rotation pdf90ou, pdf180ou à la pdf270place, voir cette réponse
SebMa