25

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

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

4

2 回答 2

52

为什么需要使用 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 度(因此页眉面向“西”)。(但是,请注意,此命令可能会导致意外结果,具体取决于输入页面的原始方向:您应该通过运行检查输入 PDF 的所有页面的方向,pdfinfo -l 1000 input.pdf然后检查rot输出的值:如果您查看090180和不同的值270,这些页面已经预先旋转...)

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

于 2010-06-24T08:07:22.867 回答
4

没有什么比 -dNORANGEPAGESIZE 对我来说很完美了。

于 2019-04-17T22:26:08.173 回答