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

问题描述 投票:17回答:2

给定PDF文档,如何更改单个页面方向?

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

pdf postscript ghostscript
2个回答
36
投票

为什么要求使用Ghostscript?使用命令行上运行的另一个免费的开源软件工具是否可以接受,例如pdftk

无论如何,这里是如何使用Ghostscript旋转页面。但是,这可能不适用于您的意图,因为您不能仅针对单个页面强制使用某个方向。它依赖于内部Ghostscript算法,该算法尝试自动旋转页面,具体取决于PDF中的文本流: * -dAutoRotatePages=/None - 保留每页的方向; * -dAutoRotatePages=/All - 根据“多数决定”的类型轮换所有页面(或没有页面); * -dAutoRotatePages=/PageByPage - 单独自动旋转页面。

将其中一个添加到您正在使用的Ghostscript命令行中。

如果页面上没有文本(或者如果自动页面旋转设置为/None),则Ghostscript使用setpagedevice设置。你可以使用setpagedevice开关在Ghostscript命令行上传递这样的-c参数,如下所示: * -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/


0
投票

除了-dNORANGEPAGESIZE之外别无他物。

© www.soinside.com 2019 - 2024. All rights reserved.