命令行:如何将 PDF 文件旋转 90 度?

Tre*_*ith 111 command-line pdf pdftk poppler

当我扫描横向文档时,输出的 PDF 文件是纵向的,因此所有 PDF 查看器都以纵向显示扫描的文档。

从命令行,如何将 PDF 文件旋转 90 度?

我尝试搜索并找到了一堆解决方案,但我很难找到看起来像是使用稳定而强大的 Linux/Unix 工具的权威解决方案 [1]。


脚注 [1]

例如,这里是我发现的一些随意解决方案的示例:

  • “只需使用 Adob​​e Acrobat Pro 旋转文件然后保存文件”
  • “使用pdfjam”
  • “使用PDFtk”
  • “使用来自 Poppler 的 ${PROGRAM_NAME}”
  • “使用 ImageMagick 的转换”——但随后所有的评论都非常消极,并指出“图像质量被破坏了”
  • “在 PDF 查看器中打开文件,然后旋转,然后使用像 cutPDF 或 PDF 打印机等 PDF 打印机打印”
  • “使用 ${PROGRAM_NAME}”,然后我搜索了“${PROGRAM_NAME}”并且有一些关于“由于许可问题,Fedora 删除了 ${PROGRAM_NAME}”

小智 102

只需使用PDFtk。

  1. 顺时针旋转:

     pdftk input.pdf cat 1-endeast output output.pdf
    
    Run Code Online (Sandbox Code Playgroud)
  2. 逆时针旋转:

     pdftk input.pdf cat 1-endwest output output.pdf
    
    Run Code Online (Sandbox Code Playgroud)

关于在 Fedora 上安装 PDFtk,我找到了这些链接:

  • pdftk 的手册页说明了更多旋转选项:`页面旋转设置可以导致 pdftk 旋转页面和文档。每个选项设置页面旋转如下(以度为单位):北:0,东:90,南:180,西:270,左:-90,右:+90,向下:+180。向左、向右和向下对页面的旋转进行相对调整。` (9认同)
  • `pdftk` 在 Ubuntu 18.04 及更高版本中被删除。Ubuntu 本身建议安装一个 snap,它只适用于简单的情况(它没有找到我的文件,也许是因为它们在我的主目录之外?)。我搬到了`pdfjam ... --angle 270 ...`。 (2认同)

小智 80

我只是偶然发现了这个线程,发现还没有提到好的解决方案。我发现(至少在 Debian 和 Ubuntu 上)pdfjam 带有以下命令:

pdf90 input.pdf
pdf180 input.pdf
pdf270 input.pdf
Run Code Online (Sandbox Code Playgroud)

我认为这是最简单和最快的方法。这些是正确使用 pdfjam 命令的脚本。顺便提一句。pdfjam 是一个虚拟包,附带texlive-extra-utils

更新

上述命令从pdfjam3.02 版开始被删除,现在在包中可用(但未维护)pdfjam-extras。使用的直接命令pdfjam(如评论中所述)分别是:

pdfjam --landscape --angle 90 input.pdf
pdfjam --angle 180 input.pdf
pdfjam --landscape --angle 270 input.pdf
Run Code Online (Sandbox Code Playgroud)

  • 看起来 90 是逆时针方向,270 是顺时针方向 - 也许你应该提到这一点。 (11认同)
  • pdf90 确实是一个薄包装。然而,它强制使用后缀约定。所以我直接使用了pdfjam:`pdfjam --outfile myoutputfile.pdf --angle 270 --fitpaper true --rotateoversize true myinputfile.pdf` (7认同)

小智 52

在 Linux Mint 18.3(我也相信其他 Debian 派生发行版)中,您有一个名为qpdf.

您可以使用:qpdf in.pdf out.pdf --rotate=[+|-]angle[:page-range]

从文档

--rotate=[+|-]angle[:page-range]

对指定页面应用旋转。选项值的页面范围部分与第 3.5 节“页面选择选项”中的页面范围具有相同的格式。如果省略页面范围,则旋转应用于所有页面。参数的角度部分可以是 90、180 或 270。如果前面有 + 或 -,则角度将被添加到指定页面的原始旋转中或从中减去。否则页面的旋转设置为精确值。例如,该命令qpdf in.pdf out.pdf --rotate=+90:2,4,6 --rotate=180:7-8会将第 2、4 和 6 页从其原始旋转方向顺时针旋转 90 度,并强制将第 7 到 9 页旋转到 180 度,而不管其原始旋转如何,并且该命令qpdf in.pdf out.pdf --rotate=180会将所有页面旋转 180 度。

  • 指定页面范围似乎是强制性的,至少在我当前的 qpdf 版本 (8.0.2) 中。 (3认同)
  • 似乎至少不再是这种情况(9.0.2):`qpdf in.pdf out.pdf --rotate==-90` 适用于所有页面。 (3认同)
  • 唯一对我有用的解决方案。我尝试过的所有其他方法都不起作用。pdftk 没有产生任何输出。pdf90 和朋友们需要 192MB 的空间来存放所有 texlive-extra-utils 的东西。我只需要稍微调整一下命令行。如上所述,页面是强制性的。我用了这个:`qpdf input.pdf output.pdf --rotate=90:1` (2认同)
  • qpdf 看起来很棒。它可以按照答案中所述旋转页面,还可以使用以下语法连接文件:`qpdf --collat​​e --empty --pages a.pdf 1-3 back.pdf 1-4 -- c.pdf`。它没有依赖性,可以使用 `apt install qpdf` 安装,并且非常轻(根据 apt 大约需要 2KB)。 (2认同)

Nic*_*ckD 26

您可以使用 ImageMagick:displayconvert- 例如顺时针旋转使用

convert -rotate 90 <file>.pdf <rotated-file>.pdf
Run Code Online (Sandbox Code Playgroud)

使用 -90 进行逆时针旋转。

注意当原始图像是位图时(例如通过扫描产生)使用此方法。如果原始图像不是位图,则此方法会将其转换为位图,并且质量会受到影响。在后一种情况下,请使用其他答案中的一种方法。

  • 这将首先将 PDF 文本转换为图像,因此尺寸会增加而质量会下降(除非它已经只是扫描件)。 (17认同)
  • 结果pdf质量非常低。 (17认同)

小智 16

由于某些不推荐使用的依赖项,pdftk在 Ubuntu 18.04 上不再可用。

我发现的最佳解决方案是(图形)工具 pdfshuffler pdf编排器*.

安装(参见https://github.com/pdfarranger/pdfarranger 中的安装步骤)并运行它。打开所需的 PDF 文件,选择要旋转的文件,然后单击标题栏中的旋转按钮(或使用右键单击菜单)。它还可以连接 PDF 和其他一些不错的东西。

* pdfarranger 是废弃的 (?) pdfshuffler 的一个分支


小智 8

为了提高输出分辨率(默认为 72 DPI),我得到了很好的结果:

convert -rotate -90 -density 200 input.pdf output.pdf
Run Code Online (Sandbox Code Playgroud)

这是用于扫描文档的 .pdf 文件。我发现-density 300-density 200.


Gab*_*les 5

qpdf效果很好,速度超快!:

在 Ubuntu 20.04 上使用qpdf 版本 8.0.2 进行了测试(请参阅参考资料qpdf --version),但我怀疑它也可以在 Ubuntu 18.04、16.04 和 14.04 上正常工作,因为我qpdf在所有这些系统上也以其他方式使用过。

sudo apt update
sudo apt install qpdf

# Rotate in.pdf +90 deg and save as out.pdf
qpdf --rotate=+90 in.pdf out.pdf

# Rotate in.pdf -90 deg and save as out.pdf
qpdf --rotate=-90 in.pdf out.pdf

# Rotate in.pdf +/-180 deg and save as out.pdf
qpdf --rotate=+180 in.pdf out.pdf
Run Code Online (Sandbox Code Playgroud)

该手册页(man qpdf)显示非常小,但它做什么节目是非常重要的。这是它末尾的关键部分(添加了强调):

有关 qpdf 选项的摘要,请运行qpdf --help. 一个完整的手册中可以找到/usr/share/doc/qpdf/qpdf-manual.html/usr/share/doc/qpdf/qpdf-manual.pdf

因此,请阅读本地存储在您计算机上的完整手册!这是链接。将它们复制并粘贴到浏览器的地址栏中以打开它们:

  1. 在 Linux 上:
    1. PDF 格式的 QPDF 用户手册:file:///usr/share/doc/qpdf/qpdf-manual.pdf
    2. HTML 格式的 QPDF 用户手册:file:///usr/share/doc/qpdf/qpdf-manual.html

要查看帮助选项,请qpdf --help改为运行。或者,更好的是,管道到less

qpdf --help | less -RFX
Run Code Online (Sandbox Code Playgroud)

然后您可以按/并搜索--rotate。这是帮助页面的一个片段:

--rotate=[+|-]angle[:page-range]
                        rotate each specified page 90, 180, or 270 degrees;
                        rotate all pages if no page range is given
Run Code Online (Sandbox Code Playgroud)

和:

--rotate标志可用于指定将页面旋转 90、180 或 270 度的页面。页面范围以与--pages选项相同的格式指定,如下所述。重复该选项以旋转多组页面。如果角度前面有+-,则将其添加到原始旋转中或从中减去。否则,将旋转角度明确设置为给定值。

参考:

  1. qpdf --help | less -RFX
  2. @Royi的这个答案

有关的

  1. [我的回答]如何按页码或页码范围提取PDF页面:https : //askubuntu.com/questions/221962/how-can-i-extract-a-page-range-a-part-of- a-pdf/1318201#1318201