Apple pdfKit 中的错误是由 xelatex 触发的,而不是由 pdflatex 触发的

Apple pdfKit 中的错误是由 xelatex 触发的,而不是由 pdflatex 触发的

这似乎是苹果 pdfKit 的一个 bug。然而,由于这个问题仅有的如果xelatex使用的话就会发生这种情况(与 配合得很好pdflatex),我希望这里有人可以帮助提供某种解决方法,使其能够在装有 Apple pdfKit 的 Mac 上运行。

自从 High Sierra 以来,我在使用 Apple 的 pdfKit 时遇到了很多问题,我真的不想等待他们来修复它。

要求:

我需要使用,xelatex因为我正在使用 iOS 字体。

我需要一个模糊版本的图像,以便将其包含在 pdf 文档中。对于下面介绍的 MWE,我使用包中的 pdf并使用ImageMagickmwe创建(详细信息如下)两个 .png 文件。一个是图像,另一个是。convertnormal.pngblur.png

结果:

创建正常图像和模糊图像后:

    \includegraphics{normal.png}
    \includegraphics{blur.png}
    \includegraphics{normal.png}

根据使用的引擎产生以下结果:

  1. 使用pdflatex结果如下正确的视图(在 TeXShop、Preview 和 Acrobat 中),其中显示所有三幅图像:正常、模糊、正常。

在此处输入图片描述

  1. 使用xelatex产生以下视图(在 TeXShop 和预览中),其中模糊图像是不是显示:

在此处输入图片描述

笔记:

  • 无论使用哪个选项,Acrobat 中的视图都很好!也就是说,Acrobat总是显示三幅图像。
  • iOS 和 Safari 浏览器上的 Dropbox 应用也能够正常显示。我认为 Safari 会使用与 Preview 相同的 pdfKit,但似乎存在差异。

系统:

列出文件pdflatex

 *File List*
 article.cls    2019/12/20 v1.4l Standard LaTeX document class
  size10.clo    2019/12/20 v1.4l Standard LaTeX file (size option)
graphicx.sty    2019/11/30 v1.2a Enhanced LaTeX Graphics (DPC,SPQR)
  keyval.sty    2014/10/28 v1.15 key=value parser (DPC)
graphics.sty    2019/11/30 v1.4a Standard LaTeX Graphics (DPC,SPQR)
    trig.sty    2016/01/03 v1.10 sin cos tan (DPC)
graphics.cfg    2016/06/04 v1.11 sample graphics configuration
  pdftex.def    2018/01/08 v1.0l Graphics/color driver for pdftex
   iftex.sty    2020/03/06 v1.0d TeX engine tests
l3backend-pdfmode.def    2020-08-07 L3 backend support: PDF mode
supp-pdf.mkii
epstopdf-base.sty    2020-01-24 v2.11 Base part for package epstopdf
epstopdf-sys.cfg    2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Live
  normal.png    Graphic file (type png)
    blur.png    Graphic file (type png)
  normal.png    Graphic file (type png)
 ***********

列出文件xelatex

 *File List*
 article.cls    2019/12/20 v1.4l Standard LaTeX document class
  size10.clo    2019/12/20 v1.4l Standard LaTeX file (size option)
graphicx.sty    2019/11/30 v1.2a Enhanced LaTeX Graphics (DPC,SPQR)
  keyval.sty    2014/10/28 v1.15 key=value parser (DPC)
graphics.sty    2019/11/30 v1.4a Standard LaTeX Graphics (DPC,SPQR)
    trig.sty    2016/01/03 v1.10 sin cos tan (DPC)
graphics.cfg    2016/06/04 v1.11 sample graphics configuration
   xetex.def    2017/06/24 v5.0h Graphics/color driver for xetex
   iftex.sty    2020/03/06 v1.0d TeX engine tests
l3backend-xdvipdfmx.def    2020-08-07 L3 backend support: xdvipdfmx
  ts1cmr.fd    2019/12/16 v2.5j Standard LaTeX font definitions
  normal.png    Graphic file (type bmp)
    blur.png    Graphic file (type bmp)
  normal.png    Graphic file (type bmp)
 ***********

代码:

在运行下面的 MWE 之前,您需要创建两个必要的图像:

 cp /usr/local/texlive/2020/texmf-dist/tex/latex/mwe/example-grid-100x100bp.pdf normal.pdf
 convert                            normal.pdf normal.png
 convert -filter Gaussian -blur 0x2 normal.pdf blur.png 

该问题并不特定于某个图像,因此您可以根据需要使用自己喜欢的图像。


\documentclass{article}
\usepackage{graphicx}

\usepackage{iftex}
\ifXeTeX
    \def\EngineUsed{xelatex}%
\else
    \def\EngineUsed{pdflatex}%
\fi

%\listfiles
\begin{document}
    Output using \EngineUsed.
    \par
    %% ----------------------------------
    \fbox{%
        \includegraphics{normal.png}
        \includegraphics{blur.png}
        \includegraphics{normal.png}%
    }%
\end{document}

答案1

在支持用于模糊图像的 SoftMask 的 16 位灰度图像的 FlateDecode 预测过滤器方面肯定存在一些问题(无论是在 PDFKit 还是 dvipdfmx 中)。

作为此问题的解决方法,使用以下 dvipdfmx 选项应该会有所帮助

-C 0x20

或者,您可以插入以下 \special 指令(在第一页)

\special{dvipdfmx:config C 0x20}

在您的 TeX 文件中控制 dvipdfmx 行为。

相关内容