如何阻止 Ghostscript 和 pdfwrite 将图像分解为多个 XObject?

Posted

技术标签:

【中文标题】如何阻止 Ghostscript 和 pdfwrite 将图像分解为多个 XObject?【英文标题】:How to stop Ghostscript and pdfwrite breaking up images into multiple XObjects? 【发布时间】:2013-03-11 23:48:01 【问题描述】:

编辑:我做了更多的调查,可以澄清问题,我也会把原来的问题留在下面。

似乎当使用具有多个条带的 TIFF 图像数据时,pdfwrite 会生成一个输出 PDF,每个条带一个 XObject。在我的例子中,每个条带有 25 行,因此整页图像被分解为 25 像素高的图像。这会很好,除非它会产生令人不快的视觉伪影。

使用 tiffcp 将文件还原为一个大条可解决此问题,但 Acrobat Distiller 不需要此解决方法,因为它默认将图像维护为一个大 XObject。

我们可以让 Ghostscript 做同样的事情吗?


我正在尝试使用 pdfwrite 而不是 Acrobat Distiller 将 PS 文件转换为 PDF。该文件包含许多使用 GetTiff 函数调用的扫描 TIFF 图像(我认为这最初是由 Xerox 提供的)。

Distiller 的输出很好,但 pdfwrite 似乎为每个图像生成多个垂直 XObject,而不是像 Distiller 那样只生成一个。它们都以完全相同的大小在 PDF 中显示如下:

104 0 obj
<</Subtype/Image
/ImageMask true
/Width 2550
/Height 25
/BitsPerComponent 1/Length 7975>>stream

有没有办法阻止这种行为?大量放大或打印时输出看起来不错,但在屏幕上以常规缩放比例显示图像之间的边界处会出现渲染伪影。

我只尝试了一个基本的命令行(除了 -sDEVICE 和 -sOutputFile 之外没有其他选项)以及各种图像选项,但到目前为止没有任何区别。我试过 9.05 和 8.54 版本。

【问题讨论】:

【参考方案1】:

Ghostscript 不会直接使用 TIFF 文件,因此您必须对它进行其他操作。我的怀疑是,无论您使用哪种工具转换为 PostScript,该工具都会生成多个图像。我对“GetTiff”“函数”一无所知,但我怀疑这就是问题所在。为什么不简单地使用 libtiff 呢?

Adobe Acrobat distiller 具有“连接”宽度和颜色空间相同且连续的连续图像的功能。

pdfwrite 不这样做。

【讨论】:

我之前没想过要尝试,但 tiff2ps 确实生成了使用这两种方法看起来都正确的图像。不过,我现在无法将它包含在我们的流程中,因此使用 tiffcp 转换图像是我们的解决方案。 Acrobat 拼接当然可以解释发生了什么,我认为你是正确的,它是 GetTiff 导致的问题 - 这是一个用 PS 编写的函数,包含在文件头中,我还没有完全理解它的专业知识。 为我的回复中的残暴拼写道歉,我刚下了跨大西洋航班,显然比我想象的更累!这是另一个您可能会感兴趣的 SO 答案的链接:***.com/questions/15211428/… 谢谢。如果您好奇(或其他看到此内容的人),GetTiff 似乎包含在一些施乐打印机中,例如 DocuSP 系列,我们在这里有很多。我们副本中的版权声明是 1998 年的,所以它已经存在了一段时间。

以上是关于如何阻止 Ghostscript 和 pdfwrite 将图像分解为多个 XObject?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Ghostscript 和 Ghostscript .NET 通过嵌入 IIC 配置文件生成正确的 PDF/A

未嵌入字体的 Ghostscript 和 PDF

Ghostscript 和 pxlcolor:如何在生成的 PCL 中生成额外的 PJL 条目

Ghostscript:如何包含它曾经包含的 Apple ImageWriter 驱动程序?

Ghostscript:如何将 STDIN 自动裁剪为“边界框”并写入 PDF?

如何在ghostscript中将svg、eps和ai转换为png