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

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

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

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

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


脚注 [1]

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

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

答案1

使用PDFtk。

  1. 对于顺时针旋转:

     pdftk input.pdf cat 1-endeast output output.pdf
    
  2. 对于逆时针旋转:

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

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

答案2

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

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

我认为这是最简单、最快的方法。这些是正确使用 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

答案3

在 Linux Mint 18.3 中(我相信其他 Debian 派生发行版也是如此),您有一个简单的命令行工具,名为qpdf

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

从文档中

--rotate=[+|-]角度[:页面范围]

对指定页面应用旋转。选项值的页面范围部分与第 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 度。

在您的情况下,要将 PDF 中的所有页面顺时针旋转 90 度,您可以执行以下操作:

qpdf --rotate=+90 in.pdf out.pdf

答案4

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

手册页(man qpdf) 展示非常很少,但它们确实表明了很重要。这是最后的关键部分(强调):

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

因此,请阅读存储在您计算机本地的完整手册!这是链接。将它们复制并粘贴到浏览器的地址栏中以打开它们。您还可以在此处在线查看手册:https://qpdf.readthedocs.io/

  1. Linux 上的本地 QPDF 手册位置:
    1. QPDF PDF 格式的用户手册:文件:///usr/share/doc/qpdf/qpdf-manual.pdf
    2. HTML 格式的 QPDF 用户手册:文件:///usr/share/doc/qpdf/qpdf-manual.html

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

qpdf --help | less -RFX

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

--rotate=[+|-]angle[:page-range]
                        rotate each specified page 90, 180, or 270 degrees;
                        rotate all pages if no page range is given

和:

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

参考:

  1. qpdf --help | less -RFX
  2. @Royi 的回答
  3. 量子PDF在 GitHub 上
  4. 手动的QPDF(比man页面更广泛)

有关的

  1. 我的答案:如何按页码或页码范围提取PDF页面

相关内容