如何更改PDF页面方向?(需要使用Ghostscript或PostScript解决方案)

27

如何更改PDF文档中单个页面的方向?

我正在使用最新版本的Ghostscript。

2个回答

60
为什么您需要使用Ghostscript?是否可以使用其他在命令行下运行的自由开源软件工具,如pdftk?
无论如何,以下是使用Ghostscript旋转页面的方法。但是,这可能无法满足您的意图,因为您不能仅强制旋转单个页面的方向。它依赖于内部Ghostscript算法,该算法尝试根据PDF中文本流的流向自动旋转页面:
* -dAutoRotatePages = / None - 保留每个页面的方向;
* -dAutoRotatePages = / All - 旋转所有页面(或无页面),具体取决于“多数决”;
* -dAutoRotatePages = / PageByPage - 单独自动旋转页面。
将其中之一添加到您正在使用的Ghostscript命令行中。
如果页面上没有文本(或设置了自动页面旋转/None),则Ghostscript会使用setpagedevice设置。您可以使用-c开关将这些setpagedevice参数传递到Ghostscript命令行,例如:
* -c "<</Orientation 3>> setpagedevice" - 设置横向方向;
* -c "<</Orientation 0>> setpagedevice" - 设置竖向方向;
* -c "<</Orientation 2>> setpagedevice" - 设置倒置方向;
* -c "<</Orientation 1>> setpagedevice" - 设置海景方向。
可能需要在提取页面时为每个页面设置方向。我不认为在将它们合并回到统一文档时会起作用(我从未测试过)。
无论如何,我建议您也看一下pdftk(也适用于Windows)。这是一个可以旋转PDF页面等等的命令行工具。对于您指定的目的而言,比Ghostscript更易于使用,速度也更快。特别是,它可以旋转PDF文档内的单个页面,同时保持其他页面不变。例如:
pdftk A=in.pdf           \
  cat A1-3 A4west A5-end \
  output out.pdf
该命令将输出未旋转的页面1、2和3以及页面5、6,...到最后一页,但会将第4页旋转90度(使页面头朝向“西方”)。(但是,请注意,此命令可能会导致意外结果,具体取决于输入页面的原始方向:您应通过运行pdfinfo -l 1000 input.pdf检查输入PDF的所有页面的方向,然后检查rot输出的值:如果您看到不同于0的值,如90180270,则这些页面已经预先旋转......)

更多详细信息请参见此处:http://www.accesspdf.com/pdftk/


我的意思是,“特定的.pdf文件会改变事情吗?” - AncientSwordRage
1
@KurtPfeifle 在看到 pdftk 在某些输入文件上冻结后,我开始使用 Ghostscript 来完成各种任务。 - Andy
1
@mirabilos:好的,我现在已经添加了一个示例。(这个答案现在值得你点赞了吗?:) 如果你看看我的其他答案,通常我会为我推荐的所有命令行工具添加示例... - Kurt Pfeifle
你们中有人知道在浏览时如何返回上一页吗? - AntiqTech
曾经是一个免费的功能。 - thistleknot
显示剩余2条评论

3

对于我来说,除了-dNORANGEPAGESIZE以外,没有其他东西能够完美地工作。


8
你需要更详细地阐述答案! - Hichem BOUSSETTA
我不知道为什么,但这对我也起了作用,再加上-dAutoRotatePages=/All,使页面自动正确旋转。 - Trevor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接