【发布时间】:2011-03-06 14:37:30
【问题描述】:
给定一个 PDF 文档,如何更改单个页面的方向?
我正在使用最新版本的 Ghostscript。
【问题讨论】:
标签: pdf postscript ghostscript
给定一个 PDF 文档,如何更改单个页面的方向?
我正在使用最新版本的 Ghostscript。
【问题讨论】:
标签: pdf postscript ghostscript
没有什么比 -dNORANGEPAGESIZE 对我来说很完美。
【讨论】:
您为什么要求使用 Ghostscript?是否可以使用在命令行上运行的其他免费开源软件工具,例如pdftk?
无论如何,这里是使用 Ghostscript 旋转页面的方法。但是,这可能不符合您的意图,因为您不能强制仅针对单个页面的特定方向。它依赖于内部的 Ghostscript 算法,该算法会根据 PDF 中的文本流自动尝试旋转页面:
* -dAutoRotatePages=/None -- 保留每一页的方向;
* -dAutoRotatePages=/All -- 根据一种“多数决定”旋转所有页面(或不旋转);
* -dAutoRotatePages=/PageByPage -- 单独自动旋转页面。
将其中之一添加到您正在使用的 Ghostscript 命令行中。
如果页面上没有文本(或者如果将自动页面旋转设置为/None),则Ghostscript 使用setpagedevice 设置。您可以使用 -c 开关在 Ghostscript 命令行上传递此类 setpagedevice 参数,如下所示:
* -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 不同的值,例如 90、180 和 270,则这些页面已经预先旋转...)
更多详情请看这里:http://www.accesspdf.com/pdftk/。
【讨论】:
gs -sDEVICE=pdfwrite -sOutputFile="page2rot.pdf" -dNOPAUSE -dEPSCrop -c "<</Orientation 0>> setpagedevice" -f "page2.pdf" -c quit你能看到这个问题吗?