Outil de ligne de commande pour rogner des fichiers PDF

101

Je cherche un outil de ligne de commande open source pour rogner un fichier PDF, comme nous pouvons le faire dans Adobe Acrobat Pro. J'ai essayé PdfTk, ImageMagick, PyPDF et GhostScript, tous sans succès jusqu'à présent.

Rakesh
la source
Pouvez-vous décrire le type de recadrage que vous pouvez effectuer avec Adobe Acrobat pro? Parce que je ne l'ai pas et ne peux donc pas dire ce que vous recherchez.
xubuntix
Dans Adobe Acrobat Pro, nous pouvons utiliser les contrôles de marge pour rogner le PDF. nous pouvons fournir la valeur pour le haut, le bas, la droite et la gauche pour recadrer
Rakesh

Réponses:

124

Je vous suggère de jeter un coup d'œil à PDFcrop .

Si vous souhaitez rogner un fichier PDF avec des marges gauche, supérieure, droite et inférieure de 5, 10, 20 et 30 points (points), exécutez

pdfcrop --margins '5 10 20 30' input.pdf output.pdf

dans le terminal. Pour rogner quelque chose, utilisez des valeurs négatives dans l'argument de rogner. Par exemple,

pdfcrop --margins '-50 -50 -50 -50' input.pdf output.pdf

cultures 50 pts de la gauche, en haut, à droite, en bas (dans cet ordre).

Si vous exécutez uniquement la commande pdfcrop input, un fichier intitulé input-crop.pdf sera généré avec des marges nulles. Je trouve cela très pratique pour inclure des illustrations pdf dans des documents.

Recadrer plusieurs fichiers

Malheureusement, pdfcrop ne peut pas découper plusieurs fichiers à la fois. Il est cependant facile d'écrire un script qui coupera tous les fichiers PDF du dossier dans lequel se trouve le script.

Créez un nouveau fichier vide et appelez-le something.sh. Ouvrez-le avec un éditeur de texte et insérez ce qui suit:

#!/bin/bash
for FILE in ./*.pdf; do
  pdfcrop "${FILE}"
done

Enregistrez-le et fermez-le. Puis cliquez avec le bouton droit sur le fichier, allez à Propriétés> Autorisations et cochez la case Autoriser l'exécution du fichier en tant que programme . Fermez maintenant la boîte de dialogue. Exécutez le script en double-cliquant dessus et en choisissant Exécuter dans un terminal . Et la nouvelle version recadrée sans marge de tous les fichiers PDF portant le suffixe -crop sera maintenant imprimée dans le dossier. Si vous voulez des marges ou autre chose, vous pouvez bien sûr simplement ouvrir le script et ajouter des arguments après pdfcrop.

Rasmus
la source
Notez qu'au lieu de spécifier des marges négatives, vous pouvez également utiliser --bbox "<left> <bottom> <right> <top>". Ceci permet d'utiliser l'approche pour déterminer la zone de culture décrite dans ma réponse ci-dessous .
bluenote10
Existe-t-il une possibilité de dire le numéro de page (qui doit être recadré)?
LK
Je crains que ce soit tout ou rien. pdfcrop --helpliste les options disponibles. Je ne vois rien qui permette de spécifier une plage de pages.
Rasmus
7
En comparant la taille de la sortie de PDFCrop à son entrée, il semble que pdfcrop ne modifie que les cadres de sélection. Cela ne supprime pas les données. Cette approche ne serait donc pas appropriée pour rendre le fichier PDF plus petit ou pour masquer des informations.
init_js
Comme un charme! même avec les marges le pdf nécessaire!
jojo
36

Merci à Rasmus, vous pouvez installer pdfcrop à partir du paquet texlive-extra-utils:

sudo apt-get install texlive-extra-utils

Recadrez ensuite les fichiers pdf en utilisant la commande de recadrage pdf en tant que

pdfcrop input.pdf output.pdf

utiliser --helppour voir des paramètres plus étonnants comme--margins

pdfcrop --margins 5 input.pdf output.pdf

quelle culture pdf avec 5 pb de chaque côté de la page

sarigalin
la source
1
La mesure est bplégèrement différente de pt. Voir tex.stackexchange.com/questions/8260/… .
Koppor
2
Pour moi, pdfcrop a gonflé la taille du fichier de 300x (de 7 Mo à 2 Go). Je devais le faire gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS="/ebook" -sOutputFile=output2.pdf output.pdfaprès, ce qui fixait la taille du fichier.
fiktor
17

Vous pouvez également rogner des fichiers PDF simplement en utilisant Ghostscript. J'ai écrit un petit script pour simplifier le processus (inspiré par cette réponse ):

#!/bin/bash

if [ $# -lt 5 ]
then
  echo "Usage: `basename $0` <pdf-file> <x_min> <x_max> <y_min> <y_max>"
  echo "Notes:"
  echo " - all coordinates are absolute; no calculation of width/height necessary"
  echo " - use 'gv' to determine the coordinates"
  exit 65
fi

file="$1"
xmin="$2"
xmax="$3"
ymin="$4"
ymax="$5"

base="${file%.*}"
outfile="${base}_cropped.pdf"

echo "writing to: $outfile"

gs \
  -o $outfile \
  -sDEVICE=pdfwrite \
  -c "[/CropBox [$xmin $ymin $xmax $ymax] /PAGES pdfmark" \
  -f $file

Afin de déterminer les coordonnées de recadrage, j’utilise gv, qui affiche les coordonnées du curseur de la souris en utilisant les mêmes unités que Ghostscript. Par exemple, ici, je détermine les coordonnées minimales pour x / y (les valeurs dans le coin supérieur gauche):

crop1

Maintenant les coordonnées maximales:

crop2

Et enfin, je lance le script en pdf_crop_by_coordinates.sh test.pdf 45 429 38 419produisant un test_cropped.pdfqui ressemble à ça:

résultat

Je n'ai toutefois aucune idée pdfcropde la qualité et de l'exactitude de la solution Ghostscript .

bluenote10
la source
15

Quand je ne peux pas faire quelque chose avec pdftk, je me tourne maintenant vers PDFjam , qui est un wrapper de ligne de commande pour le paquet pdfpages LaTeX (vous avez donc également besoin de cela et d'une distribution TeX installée). Pour obtenir de l'aide sur son utilisation, je recommande l'écran d'aide régulier:

pdfjam --help

car la page de manuel est clairsemée et la page Web se concentre sur des exemples.

Pour rogner un fichier PDF, la commande dont vous avez besoin ressemble à ceci:

pdfjam --keepinfo --trim "10mm 15mm 10mm 15mm" --clip true --suffix "cropped" input.pdf

Cela produira un fichier appelé input-cropped.pdf. L'ordre des garnitures doit être à gauche, en bas, à droite, en haut, comme indiqué\includegraphics dans graphicx .

Pour donner une idée de la façon dont il se compare à PDFcrop, j’ai eu raison de recadrer un PDF assez sophistiqué récemment. Mon original était de 675 ko, ma version recadrée via PDFjam était de 1,2 Mo, tandis qu'une version recadrée via PDFcrop était de 4,5 Mo. Tandis que PDFjam et PDFcrop supprimaient les liens hypertexte et les signets incorporés, PDFjam avec l' --keepinfooption préservait les propriétés du document (par exemple, le titre, l'auteur, le sujet).

Alex Ball
la source
1
Remarque: cela ne supprime pas vraiment le contenu du PDF qui se trouve hors écran, il le cache seulement. Identique à ce que @init_js commente dans la réponse la mieux notée.
Jan Żankowski
3

Cela peut vous aider.
Ceci est conforme à la nouvelle version d'Ubuntu et de la vie. C'est Master PDF Editor . Vous pouvez l'utiliser pour rogner, ajouter des trucs, etc.

Exemple:
Ceci est avant C'est avant Ceci est après ctrl + k entrez la description de l'image ici

Shamina
la source
3

Briss n'est pas en ligne de commande, mais mérite d'être examiné.

Weberjn
la source
2

Vous pouvez utiliser un script pypdf à partir de cette page . Mais dans la réponse à cette question , il semble y avoir beaucoup d'options.

xubuntix
la source
Je ne peux pas obtenir quels sont les paramètres gauche en haut à droite. sont-ils des points, des pouces, des centimètres?
Rakesh le
@Rakesh: Voir ma réponse pour une explication des paramètres et pour les déterminer facilement.
bluenote10
2

Le programme pdfCropMargins est une application en ligne de commande permettant de rogner automatiquement les marges des fichiers PDF.

Ce programme dépend du programme Ghostscript ou du programme pdftoppm en cours d'installation (et localisable) sur le système. Et analysez les images de page avec PIL pour trouver des cadres de sélection, en utilisant le seuil 191.

installer en utilisant

pip installer pdfCropMargins

Courir en utilisant

pdf-crop-margins -v -s -u votre-fichier.pdf

Pour aider

pdf-crop-margins -h | plus

CharmiChokshi
la source