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

时间:2010-06-22 02:05:48

标签: pdf postscript ghostscript

鉴于PDF文档,如何更改单个页面方向?

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

2 个答案:

答案 0 :(得分:35)

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

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

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

如果页面上有 没有 文本(或者如果自动页面旋转设置为/None),则Ghostscript使用{{1设置。您可以使用setpagedevice开关在Ghostscript命令行上传递此类setpagedevice参数,如下所示:
* -c - 设置风景方向;
* -c "<</Orientation 3>> setpagedevice" - 设置人像方向;
* -c "<</Orientation 0>> setpagedevice" - 设置颠倒方向;
* -c "<</Orientation 2>> setpagedevice" - 设置 seascape 方向。

提取页面时,您可能需要为每个页面设置方向。我不认为将它们合并回统一文档时会起作用(我从未测试过这个)。

在任何情况下,我都建议您同时查看-c "<</Orientation 1>> setpagedevice"(也适用于Windows)。它是一个可以从PDF旋转页面的命令行工具,等等。比Ghostscript更容易使用,用于您的声明目的,也更快。特别是,它可以旋转PDF文档中的单个页面,而不会触及其他页面。的 实施例

pdftk

此命令将输出第1,2和3页以及第5页,第6页......最后一次未旋转,但将第4页旋转90度(因此页眉朝向“西”)。 (但是,请注意,此命令可能会导致意外结果,具体取决于输入页面的原始方向:您应该通过运行pdftk A=in.pdf \ cat A1-3 A4west A5-end \ output out.pdf 检查输入PDF的所有页面的方向,然后检查pdfinfo -l 1000 input.pdf输出的值:如果您看到与rot不同的值,例如090180,则这些页面已经预先轮换。 ..)

有关详情,请参阅此处:http://www.accesspdf.com/pdftk/

答案 1 :(得分:0)

-dNORANGEPAGESIZE对我来说最合适。