1. Introduction
PDF files are widely used for document sharing and archiving. However, sometimes, it may be necessary to adjust the contents of pages for better readability or presentation. The Linux ecosystem has many command-line tools that provide efficient ways to manipulate PDF files for this purpose.
In this tutorial, we’ll explore how to rotate pages in a PDF file leveraging tools such as PDFtk, QPDF, and PDFjam, each with its unique approach.
2. Using PDFtk
PDFtk (PDF Toolkit) is a command-line tool for manipulating PDF documents. It enables us to merge, split, watermark, rotate, and even encrypt PDF files, among other operations.
2.1. Installation
We can install the pdftk command from the local package manager.
On Debian, we can use APT:
$ sudo apt install pdftk
Alternatively, on Arch Linux, we can use Pacman:
$ sudo pacman -S pdftk
Finally, on Fedora, we can leverage DNF:
$ sudo dnf install pdftk
After successful installation, let’s look at how to use the pdftk command to rotate pages.
2.2. Basic Document Rotation
To rotate pages in a PDF file using pdftk, we can use the cat operation and the north, south, east, and west options to specify the direction of rotation.
Let’s look at a basic example of rotating pages in a sample.pdf file using pdftk:
$ pdftk sample.pdf cat 1-endwest output output.pdf
We’re using 1-endwest option to rotate all pages 90 degrees anticlockwise (west). The output option specifies the name of the output PDF file.
Let’s look at some other examples of customizations:
- endeast rotates the pages 90 degrees clockwise (east)
- endsouth rotates the pages 180 degrees (south)
- endnorth rotates the pages 180 degrees (north)
Naturally, we might want to only handle some pages.
2.3. Page Subset Rotation
In addition, we can also rotate specific pages and ignore the others. To do this, we must specify the cat operation’s page range.
For instance, let’s rotate the third page by 90 degrees clockwise:
$ pdftk sample.pdf cat 1-2 3east 4-end output output.pdf
Moreover, we can also rotate multiple pages in the PDF:
$ pdftk sample.pdf cat 1-3east 4-end output output.pdf
The command above rotates pages 1 to 3 90 degrees clockwise, and the rest retain their original orientation.
In addition, we can use keywords such as even and odd to rotate only the relevant pages:
$ pdftk sample.pdf cat eveneast output output.pdf
Critically, the command above removes all even pages and rotates all odd pages.
Finally, we can go further and rotate all odd pages to the west and all even pages to the east:
$ pdftk A=sample.pdf shuffle AoddWest AevenEast output output.pdf
In this case, we assign the sample.pdf input file to the variable A, and then we rotate all even pages 90 degrees clockwise, and all odd pages 90 degrees anticlockwise.
The shuffle option collates pages from input PDFs to create a new output PDF.
3. Using QDPF
QDPF is a PDF conversion tool that can perform various functions such as merging, splitting, rotation, linearization, encryption, conversion to different formats, and more. Furthermore, it also has several options for inspecting or checking PDF files, some of which are useful primarily to PDF developers and creators.
So, let’s first look at how to install QPDF on Linux. Below, we’ve covered how to install it in different Linux distros.
3.1. Installation
The qpdf command is usually available for installation from the local package manager.
On Ubuntu, we can use APT:
$ sudo apt install qpdf
On the other hand, on Arch Linux, we use Pacman:
$ sudo pacman -S qpdf
Finally, on Fedora, we usually leverage DNF:
$ sudo dnf install qpdf
At this point, we should have qpdf available as a command.
3.2. Basic Document Rotation
Next, let’s use the qpdf command to rotate pages in the input sample.pdf file.
As an illustration, we rotate all pages 90 degrees clockwise:
$ qpdf sample.pdf --rotate=90 -- output.pdf
We’re using the –rotate option to set the rotation angle.
Supported angles include 0, 90, 180, and 270 for clockwise rotations and their negative counterparts for anticlockwise rotations.
3.3. Page Subset Rotation
Moreover, we can use the –rotate option multiple times to rotate select pages in varying directions:
$ qpdf --rotate=90:2,4,6 --rotate=180:3,5 sample.pdf output.pdf
Here, we’re rotating pages 2, 4, and 6 90 degrees clockwise, and then, pages 3 and 5 180 degrees clockwise.
Finally, we can also rotate even and odd pages in different directions:
$ qpdf sample.pdf output_odd_even.pdf --rotate=90:1-z:even --rotate=-90:1-z:odd
Here, we’re rotating all even pages clockwise (90) and all odd pages anticlockwise (-90).
3.4. Encrypted Document Rotation
In case we’re dealing with an encrypted PDF file, we can use the qpdf command to first decrypt the file:
$ qpdf --decrypt --password=$PASSWORD sample.pdf output_no_pass.pdf
Then, we can rotate all pages in the output_no_pass.pdf file, 90 degrees anticlockwise:
$ qpdf output_no_pass.pdf --rotate=-90 -- output.pdf
We can modify the command to perform more advanced rotations.
4. Using PDFjam
PDFjam is a free and open-source tool that enables users to manipulate and handle PDF documents in various ways. It serves as a front-end to several tools in the TeX Live distribution, offering a user-friendly interface for regular PDF-related tasks.
Let’s find out how to install PDFjam on different Linux distros.
4.1. Installation
We can install the pdfjam command on Debian from the APT package manager:
$ sudo apt-get install texlive-extra-utils
Conversely, on Arch Linux, we employ Pacman:
$ sudo pacman -S texlive-pdfjam-7
Finally, On Fedora Linux, we can use DNF:
$ sudo dnf install texlive-pdfjam-7
Let’s use the pdfjam command to rotate pages in the sample.pdf file.
4.2. Basic Document Rotation
First, we leverage the pdfjam command to rotate all pages anticlockwise:
$ pdfjam sample.pdf --angle -90 -o output.pdf
----
pdfjam: This is pdfjam version 3.03.
pdfjam: Reading any site-wide or user-specific defaults...
(none found)
pdfjam: Effective call for this run of pdfjam:
/usr/bin/pdfjam --angle '-90' --outfile output.pdf -- sample.pdf -
pdfjam: Calling /usr/bin/pdflatex...
pdfjam: Finished. Output was written to 'output.pdf'.
We’re using the –angle option to specify the angle of anticlockwise rotation and the –landscape option ensures that every page has a landscape orientation.
Then, the -o option specifies the name of our output PDF file.
With the pdfjam command, we can specify any angle of rotation, but it only supports landscape and portrait orientations. Notably, only the page contents rotate within the page orientation we specify.
Further, pdfjam version 3.03 is used in this example, and the commands might be slightly different in earlier versions of the PDFjam.
5. Conclusion
In this article, we’ve looked at several Linux command-line tools that can rotate pages within a PDF file.
In addition, we ran a few examples showing how to rotate specific pages in different directions. We also looked at how to first decrypt an encrypted PDF file, and then rotate the pages using the qpdf command.