I am looking for an open source command line tool to crop PDF file just like we can do in Adobe Acrobat Pro. I have tried PdfTk, ImageMagick, PyPDF, and GhostScript—all with no success so far.

  • Can you please describe what kind of cropping you can do with Adobe Acrobat pro? Because I do not have it and can therefore not tell what you are looking for.
    – xubuntix
    Apr 24, 2012 at 8:50
  • In Adobe Acrobat Pro we can use the margin controls to crop the PDF. we can provide the value's for the top, bottom, right and left to crop
    – Rakesh
    Apr 24, 2012 at 8:56

11 Answers 11


I would suggest you take a look at PDFcrop.

If you wish to crop a pdf with left, top, right and bottom margins of 5, 10, 20, and 30 pt (points), then run

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

in terminal. To actually crop something away, use negative values in the argument for crop. For example,

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

crops 50 pts from the left, top, right, bottom (in this order).

If you run only the command pdfcrop input, it will output a file titled input-crop.pdf with zero margins. I find this very handy when including pdf illustrations in documents.

Cropping multiple files

Unfortunately, pdfcrop cannot crop multiple files at the time. It is however easy to write a script that will crop all pdfs in the folder the script is located in.

Create a new empty file, and call it something.sh. Open it with a text editor and insert the following:

for FILE in ./*.pdf; do
  pdfcrop "${FILE}"

Save it, and close. Then right click the file, go to Properties > Permissions and check the field Allow executing file as program (or run chmod +x /path/to/something.sh in terminal). Now close the dialog. Run the script by double clicking it and choosing Run in Terminal. And new, zero-margin cropped version of all pdfs with suffix -crop will now be printed in the folder. If you want margins or other things, you can of course just open the script and add arguments after pdfcrop.

  • Note that instead of specifying negative margins, one can also use --bbox "<left> <bottom> <right> <top>". This allows to use the approach to determine the crop area described in my answer below.
    – bluenote10
    Mar 3, 2015 at 16:22
  • Is there a possibility of telling page number(which need to be cropped)?
    – L.K.
    Mar 13, 2017 at 12:04
  • I fear it's all or nothing. pdfcrop --help lists the available options. I cannot see anything there that would allow specifying a range of pages.
    – Rasmus
    Mar 13, 2017 at 15:20
  • 15
    Comparing the size of PDFCrop's output to its input, it looks as if pdfcrop only modifies the bounding boxes. It doesn't remove data. So this approach would be unsuitable to make the pdf smaller, or hide information.
    – init_js
    Apr 27, 2017 at 21:10
  • 2
    pdfcrop is super slow (on pdf with 550 pages), and blew my file up to ten times the size. This worked much better for me: tex.stackexchange.com/a/42259/193342
    – user313032
    Sep 23, 2021 at 0:01

Thanks for Rasmus, you can install pdfcrop from texlive-extra-utils package:

sudo apt-get install texlive-extra-utils

Then crop pdf files using pdf crop command as:

pdfcrop input.pdf output.pdf

use --help to see more amazing parameters like --margins

pdfcrop --margins 5 input.pdf output.pdf

which crop pdf with 5 bp from each side of page

  • 3
    The measurement is bp, which is slightly different from pt. See tex.stackexchange.com/questions/8260/….
    – koppor
    Sep 2, 2017 at 16:06
  • 5
    For me pdfcrop inflated the file size from 300x (from 7MB to 2GB). I had to do gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS="/ebook" -sOutputFile=output2.pdf output.pdf afterwards, which fixed the file size.
    – fiktor
    Feb 24, 2018 at 19:07
  • Thanks for the answer. I just wish texlive-extra-utils didn't require 87 dependencies (388 MB). I know, what does it matter in this day of terabytes of disk space, but still :)
    – piit79
    Feb 15, 2022 at 22:54

When I can't do something with pdftk, the next place I turn is PDFjam, which is a command-line wrapper for the pdfpages LaTeX package (hence you also need that and a TeX distro installed). For help on how to use it, I recommend the regular help screen:

pdfjam --help

as the man page is sparse and the Web page concentrates on examples.

To crop a PDF, the command you need is something like this:

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

This will output a file called input-cropped.pdf. The order of the trims should be left, bottom, right, top, as per \includegraphics from graphicx.

To give an idea of how it compares with PDFcrop, I had cause to crop a quite fancy PDF recently. My original was 675 kB, my cropped version via PDFjam was 1.2 MB, while a version cropped via PDFcrop was 4.5 MB. While both PDFjam and PDFcrop stripped out the embedded hyperlinks and bookmarks, PDFjam with the --keepinfo option preserved the document properties (e.g. title, author, subject).

  • 5
    Note: this does not really remove the content that becomes off-screen from the PDF, only hides it. Same as what @init_js comments on in the top-scored answer. Jul 31, 2018 at 16:25
  • This worked well for me. I didn't realize at first that pdfcrop of --margin '0' even takes away the whitespace it finds and the non-zero margin adjusts from there. My pdf had annoying crop marks on most of the pages so this pdfjam program was better for removing them. Feb 17, 2020 at 19:31
  • Any way to keep annotations as well? I found that they're gone after using either pdfcrop or pdfjam. Mar 4, 2021 at 7:51
  • This solution also removes the bookmark/index/table of content.
    – user202729
    Oct 6, 2021 at 7:02
  • @JanŻankowski sometimes that's exactly what you want, e.g. for printing into a bleed zone. Mar 2 at 11:46

You can also crop PDF files simply using Ghostscript. I have written a small script to simplify the process (inspired by this answer):


if [ $# -lt 5 ]
  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



echo "writing to: $outfile"

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

In order to determine the coordinates for cropping, I use gv, which prints the coordinates of the mouse cursor using the same units as Ghostscript. For example, here I determine the minimum coordinates for x/y (the values in the upper left corner):


Now the maximum coordinates:


And finally, I run the script pdf_crop_by_coordinates.sh test.pdf 45 429 38 419 producing a test_cropped.pdf which looks like that:


I have no idea though, how the Ghostscript solution compares to pdfcrop in terms of quality and correctness.

  • 3
    Flat out didn't work for me, surprising for a powerhouse like ghostscript. But pdfcrop did the job perfectly, and in one pass. The units are funky, need time to see if possible to config standard: pt, px or the like.
    – u2n
    Jan 13, 2020 at 19:25
  • For me at least, the second gs command (the one after echo "writing to: $outfile") may significantly decrease the resolution of any embedded images. Luckily, it may not be necessary, depending on what you do with your pdfs afterward. Mar 26 at 10:38
  • If you have problems with spaces in file names, add following lines before gs call: file=${file//\\} outfile=${outfile//\\}
    – Daniel
    Mar 29 at 8:19

Briss is not command line, but worth a look at.

  • This is a fantastic software and it retains my annotations!! The GUI lets you look at ALL pages of the PDF superimposed simultaneously!! Mar 4, 2021 at 8:05
  • It's Java-based and works fine
    – Peter T.
    May 7 at 18:35

If a graphical tool is also fine I would recommend krop: http://arminstraub.com/software/krop

  • This would be a perfect solution (it even handles separate crop for left and right pages), except that you can't type in the size of the crop rectangle anywhere, you can only select-drag. Apr 10 at 17:19

The pdfCropMargins program is a command-line application to automatically crop the margins of PDF files.

This program depends on either the Ghostscript program or the pdftoppm program being installed (and locatable) on the system. And analyze the page images with PIL to find bounding boxes, using the threshold 191.

install using

pip install pdfCropMargins

Run using

pdf-crop-margins -v -s -u your-file.pdf

For help

pdf-crop-margins -h | more


This may help you.
This is in accordance with the newer version of Ubuntu and life. This is Master PDF Editor. You can use it crop, add some stuff, etc.

This is before This is before This is after ctrl + k enter image description here


You could use a pypdf script from this page. But in the answer to this stackexchange question, there seem to be many options as well.

  • I am not able to get what the left top right bottom parameters are. are they points, inches, centimeters ?
    – Rakesh
    Apr 24, 2012 at 11:00
  • @Rakesh: See my answer for an explanation of the parameters and how to determine them easily.
    – bluenote10
    Mar 3, 2015 at 13:12

PDF CPU is a good option:

pdfcpu crop '0 0 17' in.pdf out.pdf



Using pdfjam you can set any option which comes from the package pdfpages originally, and so you can set --fitpaper true, it should adapt the the paper size to fit to the (first) input file.

I had a case to combine multiple JPG into a PDF and adding metadata as well and trim it to incoming jpg size. This will work for equal sizes of input JPGs to be cropped well and have no white margins:

# equal sizes of input images
pdfjam  Image_00001.jpg Image_00002.jpg Image_00003.jpg Image_00004.jpg Image_00005.jpg \
  --pdftitle   'My custom title' \
  --pdfsubject 'My custom subject' \
  --pdfkeywords 'keyword1; keyword2; keyword3; aso;' \
  --pdfauthor 'author1; author2;' \
  --fitpaper true --outfile 'Images_Combined.pdf'

pdfinfo 'Images_Combined.pdf' # testing results for meta data
# Title:           My custom title
# Subject:         My custom subject
# Keywords:        keyword1; keyword2; keyword3; aso;
# Author:          author1; author2;
# Creator:         LaTeX with hyperref
# Producer:        pdfTeX-1.40.22
# CreationDate:    Sun May  1 15:03:01 2022 CEST
# ModDate:         Sun May  1 15:03:01 2022 CEST
# …

Note: If you have different sizes of input JPG, it will fit the paper size to the first one and scale all remaining pages to be merged to the size of that first one, so some pages will have no white margins and some will have.

Edit: this was done from TeX Live 2021 with pdfjam --version 3.03 and package pdfpages from 2021/03/06

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .