奇怪的问题,ghostscript 和 pdf 文件

Posted

技术标签:

【中文标题】奇怪的问题,ghostscript 和 pdf 文件【英文标题】:Weird problem, with ghostscript and pdf files 【发布时间】:2010-02-09 14:10:44 【问题描述】:

我正在使用 ghostscript 从 postscript 文件创建 pdf 文件。我的 PS 文件没有方向说明,所以当我想创建横向 pdf 文件时,我使用 ghostscript 来旋转页面。问题是,ghostscript 只旋转第一页,当我的 pdf 文件超过 1 页时,其他文件没有正确旋转。这是我正在使用的命令:

cat $psinput | gs -sPAPERSIZE=a4 -sDEVICE=pdfwrite -sOuputFile="/tmp/pdf" \
        -dAutoRotatePages="/None" -c "<< /Orientation 3 >> setpagedevice" \
        90 rotate 0 -595 translate -dNOPAUSE -dEPSCrop  -f - -c -quit

有人知道如何纠正这个问题吗?

【问题讨论】:

@kofucii:-dAutoRotatePages="/None" 可以不带引号:-dAutoRotatePages=/None-sOuputFile=/tmp/pdf 也一样。不过,不确定这是否会导致您悲伤或无害。 -- 但是,-c-construct 绝对是错误放置和错误引用的! 它应该在最后,就在 -f - 输入数据语句之前,如下所示:... -dNOPAUSE -dEPSCrop -c "&lt;&lt;/Orientation 3&gt;&gt; setpagedevice 90 rotate 0 -595 translate" -f - -c quit 【参考方案1】:

没有看到您的实际$psinput,很难给出明确的建议。您的 $psinput,通过 stdin 到 Ghostscript,可能包含多个 PS 文件...您是否尝试过使用这些选项之一

-dOrient1=true -dOrient1=false

在你的命令行中?另外,在我看来,您应该将 90 rotate 0 -595 translate 命令放在与-c 一起使用的引号内,然后定位输入 (-f - ) 到处理的最后:

-c "&lt;&lt;/Orientation 3&gt;&gt; setpagedevice 90 rotate 0 -595 translate" -f - -c quit

你也试过用

-c ".setpdfwrite &lt;&lt;//AutoRotatePages /PageByPage&gt;&gt; setdistillerparams"-c ".setpdfwrite &lt;&lt;//AutoRotatePages /All&gt;&gt; setdistillerparams"-c ".setpdfwrite &lt;&lt;//AutoRotatePages /None&gt;&gt; setdistillerparams"

在您的命令行上(有或没有您的原始旋转代码)?

【讨论】:

【参考方案2】:

如果您一定不能使用 ghostscript 进行旋转,您可以使用 pdftk 或 impose 代替。

【讨论】:

以上是关于奇怪的问题,ghostscript 和 pdf 文件的主要内容,如果未能解决你的问题,请参考以下文章

Ghostscript - 错误的 CMYK 颜色转换 - 100% 黄色转换为 98% 黄色?

来自 Ghostscript 的页面超出范围错误的 PDF 尺寸

从给定坐标提取 PDF 文本

GhostScript 和 PDF/A?

Ghostscript 和 PDF 字体错误

未嵌入字体的 Ghostscript 和 PDF