在 ps2pdf 中禁用抗锯齿

在 ps2pdf 中禁用抗锯齿

我自己生成了 EPS 文件。在 EPS 文件中,我设置了选项\interpolate false。我将它们包含在 TikZ 中的 LaTeX 源中includegraphics(因为我希望其中几个彼此靠近。)

然后我运行标准步骤:

latex src.tex
dvips -Ppdf src.dvi
ps2pdf src.ps

在文本编辑器中,我看到 PostScript 源文件保留了完整的 EPS 文件文本。甚至我的注释也保留在里面(应该如此)。所以那\interpolate false行也保留了下来。当我用 Evince(GNOME pdf 查看器)打开 PostScript 源时,确实没有插值。为了检查,我使用编辑器设置\interpolate true并重新打开了 PostScript 文件,并确认现在 Evince 确实可以插值图像。这表明至少 Evince 理解这个选项。

但是当我打开src.pdfps2pdf 输出的文件时,我看到输出无论如何都是插值的(抗锯齿)!我还用文本编辑器打开了 PDF 文件,发现只保留了 EPS 图像的最基本参数(如宽度或高度)。\interpolate false已被删除。

从上面的结果来看,我发现问题不在于includegraphicsLaTeX 的任何步骤,甚至不在于我的 pdf 查看器。问题出在 ps2pdf 上。

在其文档,似乎有AntiAliasColorImagesAntiAliasGrayImagesAntiAliasMonoImages,但接下来却说:

(note 0) This parameter can be set and queried, but currently has no effect. 

因此,当我运行以下命令时,没有任何区别:

ps2pdf -dAntiAliasGrayImages=false -dAntiAliasMonoImages=false src.ps

我想看看是否有办法解决这个问题。对我来说,PDF 文件中不出现抗锯齿现象非常重要。

答案1

/InterpolatePDF 文件的图像词典中的键的默认值为false,请参阅PDF 规范, 部分8.9.5.3 图像插值。因此,添加/Interpolate false只会使默认值明确。很可能,抗锯齿是由 PDF 查看器完成的,因此应在那里将其关闭。

另请注意以下描述附带的注释/Interpolate

符合标准的阅读器可以选择不实现 PDF 的此功能,或者可以使用其希望的任何特定插值实现。

测试/Interpolate

pdftex.def包的驱动程序graphics支持布尔键,它将其设置映射到图像字典中的interpolate键。默认值(false)和启用的键显示了预期的结果/Interpolate图像在 AR9 或 xpdf 3.03 或 evince 3.4.0 中:

\documentclass{article}        
\pagestyle{empty}
\usepackage{graphicx}
\begin{document}
\centering
\includegraphics[width=.48\linewidth]{uJ9k7.png}\hfill
\includegraphics[width=.48\linewidth, interpolate]{uJ9k7.png}
\end{document}

结果

相关内容