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

Sta*_*bie 20 pdf postscript ghostscript

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

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

Kur*_*fle 40

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

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

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

如果页面上没有文本(或者如果设置了自动页面旋转/None),则Ghostscript将使用这些setpagedevice设置.您可以setpagedevice使用以下-c开关在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
Run Code Online (Sandbox Code Playgroud)

此命令将输出第1,2和3页以及第5页,第6页......最后一次未旋转,但将第4页旋转90度(因此页眉面向"西").(但请注意,此命令可能会导致意外结果,具体取决于输入页面的原始方向:您应该通过运行pdfinfo -l 1000 input.pdf检查输入PDF的所有页面的方向,然后检查rot输出的值:如果您从不同的价值观0,比如90,180270,这些页面都已经预先旋转...)

有关详细信息,请参见此处:http://www.accesspdf.com/pdftk/.