[Tex/LaTex] XeLaTeX Ghostscript call for EPS to PDF conversion failing

epsghostscriptpdfxetex

Updated with properly minimalistic example..

I've been wrestling with this for a while now. I had a setup using pdfLaTeX with epstopdf that works nicely, but I need mathspec so I've moved to XeLaTeX. All of my figures are now causing problems. Example below:

\documentclass[twoside,english,xetex]{article}
\usepackage{amsmath} 
\usepackage{mathspec}
\setmainfont{Linux Libertine}
\setmathsfont(Digits,Latin,Greek){Neo Euler}
\usepackage{graphicx}
\begin{document}

\section*{A heading}

Some maths.

\begin{equation}
\frac{V_{O}}{V_{I}}=-\frac{R_{F}}{R_{I}}
\end{equation}

And a figure.

\begin{figure}[hb]
\includegraphics{plotd}
\caption{A graph in EPS format}
\end{figure}

\end{document}

plotd calls a graph in EPS. File is available here http://ge.tt/4W5Mxsb1/v/0

It's not anything special, was created by Gnuplot. The error I'm getting out of XeLaTeX is as follows (the section where I think the error is likely to be:

LaTeX Font Warning: Font shape `EU1/NeoEuler(0)/m/it' undefined
(Font)              using `EU1/NeoEuler(0)/m/n' instead on input line 13.

<plotd.eps>
Overfull \hbox (16.34999pt too wide) in paragraph at lines 20--21
[][] 
[1] ("C:\Users\Li'lOne\Documents\p1l2\minim.aux")MiKTeX GPL Ghostscript 9.05: **** Could not open the file C:/Users/LilOne/AppData/Local/Temp//xdvipdfmx.b3cf3efa229c343a1415f680eef8e9a9 C:/Users/LilOne/Documents/p1l2/plotd.eps .
**** Unable to open the initial device, quitting.

** WARNING ** Couldn't open font map file "kanjix.map".
** WARNING ** Filtering file via command -->mgs.exe -q -dNOPAUSE -dBATCH -dEPSCrop -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -sOutputFile="C:/Users/Li'lOne/AppData/Local/Temp//xdvipdfmx.b3cf3efa229c343a1415f680eef8e9a9" "C:/Users/Li'lOne/Documents/p1l2/plotd.eps" -c quit<-- failed.
** WARNING ** Image format conversion for "C:/Users/Li'lOne/Documents/p1l2/plotd.eps" failed...
** ERROR ** pdf_ref_obj(): passed invalid object.

Output file removed.

Full log available here: http://pastebin.com/ymNYwsYn

Whilst I can use epstopdf by hand and convert each document, that will be a time consuming and not viable long term process. I have tried this on both Windows 7 using MikTeX 2.9 and Linux Mint 15 using the latest version of TeXLive (the above logs came from Windows but the errors are the same). My scripts are set to execute system commands so that isn't the issue.

I'd be very grateful for any advice you can offer.

Best Answer

The problem is that you are doing an \includegraphics{} on a EPS file that is invalid. When this happened to me, the EPS file hadn't changed in a year, so I have to assume it was the newer version of XeLaTeX that I was using (either a new bug, or the new version is less tolerant of sloppy EPS files.

How to find the EPS that causes this problem:

Sadly the error message doesn't indicate which EPS is to blame. You can comment out all the \includegraphics{} statements and add them back in until you narrow down the problem. I commented them all out to make use the the xelatex works, then I added them back a few at a time until I found the problem.

A more automatic way is: Instead of having xelatex generate the PDF file directly, have it generate the .xdv file, then use xdvipdfmx to generate the PDF. For some reason, breaking it down into two steps reveals the file name.

xelatex -no-pdf thefile
xdvipdfmx -V5 thefile

You'll see output like:

xdvipdfmx:warning: Error locating image file "02_aw_regthisprod.eps"
xdvipdfmx:warning: Failed to read image file: 02_aw_regthisprod.eps
xdvipdfmx:warning: Interpreting special command PSfile (ps:) failed.
xdvipdfmx:warning: >> at page="1111" position="(142.227, 70.2613)" (in PDF)
xdvipdfmx:warning: >> xxx "PSfile="02_aw_regthisprod.eps" llx=0 lly=0 urx=361 ury=583 rwi="

In this case 02_aw_regthisprod.eps was the problem.

NOTE: In my case, there were 3 EPS files that caused the problem. All 3 were full-page inserts. It may be the dimensions of the image that causes the problem.

How to fix the problem:

For me, it was a matter of converting the EPS to PDF.

Step 1: Convert the file:

epspdf 02_aw_regthisprod.eps

Step 2: Edit the filename used for the \includegraphics{} statement:

OLD: \includegraphics{03_Informit_ad.eps}
NEW: \includegraphics{03_Informit_ad.pdf}

That solved the problem for me. I hope it works for you!

Related Question