给定一个 PDF 文档,如何更改单个页面方向?
我正在使用最新版本的 Ghostscript。
为什么需要使用 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
输出的值:如果您查看0
与90
、180
和不同的值270
,这些页面已经预先旋转...)
有关详细信息,请参见此处:http ://www.accesspdf.com/pdftk/ 。
没有什么比 -dNORANGEPAGESIZE 对我来说很完美了。