为什么不应用 ICC 配置文件?

为什么不应用 ICC 配置文件?

我生成了一张图片:

在此处输入图片描述

如果色彩管理正常工作,您应该会看到蓝色(好!),否则它将是红色(坏……)。

但是,如果我将此图像包含在 PDF 中,ICC 配置文件将无法正确打印,而其他文件(如https://www.color.org/version4pdf.pdf打印正确)。我尝试使用 Evince、Okular、Adobe reader(linux 和 windows 版本):

在此处输入图片描述

知道我做错了什么吗?

下列的如何提高位图图片从原生格式到目标pdf文件的颜色一致性?我用了:

\documentclass[a4paper]{article}

\usepackage{graphicx}

\usepackage{etoolbox}

\makeatletter
  \let\GPT@colorspacefile\ltx@empty
  \define@key{Gin}{colorspacefile}{\def\GPT@colorspacefile{#1}}%

  \patchcmd\Gread@@pdftex
  {\pdfximage\GPT@RuleAttr}
  {%
    \ifx\GPT@colorspacefile\ltx@empty
     \else
      \immediate\pdfobj stream attr{/N 4}  file{\GPT@colorspacefile}%
      \@tempcnta\the\pdflastobj
    \fi
    \pdfximage\GPT@RuleAttr
    \ifx\GPT@colorspacefile\ltx@empty
     \else
      colorspace \@tempcnta
    \fi
  }%
  {}{}
\makeatother

\begin{document}

\noindent
\includegraphics[width=.5\linewidth]{should_be_blue.jpg}\includegraphics[width=.5\linewidth,colorspacefile={gbr.icc}]{./should_be_blue.jpg}

\end{document}

编辑

我也尝试过其他解决方案https://tex.stackexchange.com/a/146853/116348...这更奇怪,我现在得到的输出真的很糟糕:

在此处输入图片描述

在 Okular 和 evince 中...(但它似乎在 Adob​​e Reader 中起作用)知道发生了什么吗?

编辑

我找到了一个解决方案,使用img2pdfhttps://pypi.org/project/img2pdf/nix-shell -p img2pdf,如果你使用 nix,你可以使用 来获取它)。然后只需执行以下操作:

$ img2pdf yourfile.jpg -o yourfile.pdf

然后,只需\includegraphics包含.pdf而不是.jpg。已成功使用 Okular、Evince、acroread 进行测试(仅测试了 Linux 版本,但我希望它也能在 Windows 上运行)。无法使用 Firefox 和 Chromium(我猜它们不支持 PDF 的 ICC 配置文件)。

如果您不想浪费时间自己运行这些命令,您可以安装我的库robust-externalize(最近的 CTAN 中也可用),然后运行(使用-shell-escape,如果您不想使用 shell 转义,请参阅文档):

\documentclass{article}

\usepackage{graphicx}
\usepackage{robust-externalize}

\robExtConfigure{
  enable fallback to manual mode,
  new preset={img2pdf}{
    set compilation command={img2pdf "__ROBEXT_WAY_BACK____IMG_SOURCE_FILE__" -o "__ROBEXT_OUTPUT_PDF__"},
    set template={},
    command if no externalization/.code={%
      \robExtDisableTikzpictureOverwrite\evalPlaceholder{\includegraphics[__ROBEXT_INCLUDEGRAPHICS_OPTIONS__]{__IMG_SOURCE_FILE__}}%
    }%
  },
}

\NewDocumentCommand{\includegraphicsICC}{D<>{}O{}m}{%
  \cacheMe[
    img2pdf,
    set includegraphics options={#2},
    dependenciesList={#3},
    set placeholder={__IMG_SOURCE_FILE__}{#3}
  ]{}
}

\begin{document}

Compare:

\includegraphics[width=5cm]{should_be_blue.jpg}

With:

\includegraphicsICC[width=5cm]{should_be_blue.jpg}

\end{document}

% Local Variables:
% TeX-command-extra-options: "--shell-escape -halt-on-error"
% End:

在此处输入图片描述

然而,我很好奇上述方法为什么会失败。

相关内容