Ghostscript 问题

Ghostscript 问题

使用预览包生成文档中图像的单独 PDF 已经介绍过,例如,在此主题中。但是,我想了解如何使用 Ghostscript 输出每个单独的页面。回顾一下,我使用的命令是

\usepackage[active, pdftex, tightpage]{preview}

随着

\begin{preview}
\begin{tikzpicture}
\end{tikzpicture}
\end{preview}

在链接的讨论中,建议使用此命令

gs -opics%2d.pdf -sDEVICE=pdfwrite file.pdf

然而,存在两个问题。

  1. 该命令似乎不起作用。仅生成一个 pdf 文件,并且该文件有多页。
  2. 生成的文件似乎比原始文件小得多。我对 GS 的压缩有点担心。对于需要打印的文件来说,这是一件值得担心的事情吗?如果是这样,你如何让 GS 输出的内容与原始文件完全没有压缩?

答案1

您可以使用 pdftk 执行此操作:

pdftk foo.pdf burst output foo_p%03d.pdf

我认为这里不存在有损压缩的问题。GS 不会做任何类似的事情。但是,它可能没有嵌入字体,或者它只是对字体进行了子集设置。要检查这一点,您可以使用 pdffonts。也有可能您用来生成原始 pdf 的任何软件都只是生成了低效的代码。

答案2

Q1:是的,该-ofilename%d.ext格式不适用于pdfwritepswritegs 设备。您必须使用-dFirstPage=n -dLastPage=n来拉出第 n 页。不过,正如 Ben 所建议的那样,使用类似 pdftk 的东西可能更容易。

Q2:通常文件看起来更小,只是因为 gs 在生成高效 PDF 方面做得更好。但是,如果有位图图像,它可能会进行下采样或有损编码。以下选项应该可以避免这种情况:

-dPDFSETTINGS=/prepress  -dAutoRotatePages=/None
-dDownsampleColorImages=false -dDownsampleGrayImages=false -dDownsampleMonoImages=false
-dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode
-dAutoFilterGrayImages=false  -dGrayImageFilter=/FlateEncode

相关内容