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


52

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

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

我尝试搜索并找到了很多解决方案,但是我很难找到使用稳定/健壮的linux / unix工具的权威解决方案[1]。


脚注[1]

例如,以下是我发现的一些偶然性解决方案的示例:

  • “只需使用Adobe Acrobat Pro旋转文件,然后保存文件”
  • “使用pdfjam”
  • “使用pdftk”
  • “使用Poppler的$ {PROGRAM_NAME}”
  • “使用Imagemagick的转换”-但随后所有评论都非常负面,并指出“图像质量被破坏”
  • “在PDF查看器中打开文件,然后旋转,然后使用CUTEPDF或PDFPRINTER等PDF打印机进行打印”
  • “使用$ {PROGRAM_NAME}”,然后我搜索了“ $ {PROGRAM_NAME}”,其中有些内容是“由于许可问题,Fedora删除了$ {PROGRAM_NAME}”

5
没有“授权解决方案”,但是您应该记住各种解决方案使用哪种方法:直接操纵PDF结构(pdftk,Adobe Acrobat和其他程序),转换为图像,然后转换回PDF(例如, Imagemagick的转换,使用PDF打印机进行打印等)。后者显然是一个坏主意。
dirkt

那些偶然的解决方案如何?您对每个人都感到失望吗?你真的尝试过吗?
simlev

Answers:


48

只需使用pdftk。

  1. 顺时针旋转:

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

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

关于在Fedora上pdftk的安装,我找到了此链接


4
pdftk的手册页上列出了更多的旋转选项:The page rotation setting can cause pdftk to rotate pages and documents. Each option sets the page rotation as follows (in degrees): north: 0, east: 90, south: 180, west: 270, left: -90, right: +90, down: +180. left, right, and down make relative adjustments to a page's rotation.
Tapper

输出已旋转,但仍然缩放到足以适合原始方向的程度。没有帮助。
JohnMudd '18年

@JohnMudd“按比例缩小以适合原始方向”是什么意思?我想您现在遇到了PDF查看器的问题,而不是页面的旋转问题。
user163859

我的原始PDF是将信件尺寸的页面旋转90度,因此页面高度从11英寸减少到8.5英寸。校正旋转后没有变化。发现许多在线工具都是如此。毕竟转换可能不是问题。我在查看/打印旋转的PDF时发现了缩放选项,并进行了修复。抱歉,那时候我很沮丧,以至于我只是打印并继续前进,没有注意到我所采取的确切步骤。
JohnMudd

1
pdftk已在Ubuntu 18.04及更高版本中删除。Ubuntu本身建议安装一个快照,该快照仅在简单情况下有效(找不到我的文件,可能是因为它们在我的主目录之外?)。我搬到了pdfjam ... --angle 270...
13StéphaneGourichon

42

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

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

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


4
看起来90逆时针旋转,而270顺时针旋转-也许您应该提一下。
亚伦·霍尔

2
pdf90确实是一个薄包装。但是,它强制执行后缀约定。所以我直接用pdfjam:pdfjam --outfile myoutputfile.pdf --angle 270 --fitpaper true --rotateoversize true myinputfile.pdf
斯特凡纳·古里科

16

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

convert -rotate 90 <file>.pdf <rotated-file>.pdf

使用-90逆时针旋转。

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


11
这将首先将PDF文本转换为图像,因此大小会增加,质量会下降(除非它已经只是扫描)。
阿维夫

1
的确是的,这是一个有用的提醒,但是在这种情况下,OP声明他正在扫描文档。
NickD

12
结果pdf质量非常低。
伊万·罗曼诺夫

此方法仅适用于扫描的原稿:它们已经是位图。对于普通的PDF,请参见上面的@aviv注释,也可以在其他答案中使用该方法。
NickD


12

由于某些不赞成使用的依赖关系,pdftk在Ubuntu 18.04上不再可用。

我发现最好的解决方案是(图形)工具pdfshuffler

安装并运行它。打开所需的pdf文件,右键单击页面,然后分别旋转每个文件。它还可以整理pdf和其他一些不错的东西。

sudo apt install pdfshuffler

1
您是否需要手动旋转每页?这是一个破坏交易的行为。我需要旋转一本长达数百页的PDF图书,以便在Kindle上更好(更大)地查看它。更新:刚刚尝试过,不,您可以按Ctrl-A选择所有页面,然后一步一步旋转它们。
格里·卢旺萨

12

在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度。


3
至少在我当前的qpdf版本(8.0.2)中,指定页面范围似乎是强制性的。
Xtreme Biker

6

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

convert -rotate -90 -density 200 input.pdf output.pdf

这是用于扫描文档的.pdf。我发现-density 300质量降低多少-density 200


增加密度300、600甚至1200只会对输出质量产生轻微的改善。
JohnMudd

1

尽管它确实有其局限性,但我还是经常使用PDFedit,尤其是对于PDF扫描的旋转。虽然ImageMagick的转换(使用相当高的密度值)可以达到很好的质量,但它也会使文件膨胀(原始文件:155 kiB,180°旋转副本:1.2 MiB)。PDFedit可以在不显着更改文件大小的情况下以不变的质量旋转同一图像。


听起来很有前途!我也注意到彻底改变文件大小的问题。
Trevor Boyd Smith,

0

我首先使用以下命令自动旋转pdf文件,使其一开始不垂直:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dAutoRotatePages=/All -sOutputFile="$outputFile" "$file"

这具有零影响。
Colin't Hart

@ Colin'tHart我的命令只恢复文件成为直立下来,如果它在第一个地方是不能直立,迫使旋转使用pdf90pdf180pdf270替代,看到这个答案
SebMa
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.