Wednesday, February 29, 2012

IEEE Journal Publication

If you're like me, it's relatively late at night and you're trying to submit a camera-ready paper for a conference.  You've used LaTeX so it fits the formatting requirements exactly.  Or so you thought.  Upon trying to jump through the PDFExpress hoops, you get the dreaded:

Error   Font ZapfDingbats is not embedded (40x) 
Exasperated, you search the Internet and find a "brilliant" solution.  It's a couple of steps long, and it seems like it does the trick.  You plug along, resubmit the file, and sure enough, there are no embedded font issues.  But this time, it says some mumbo-jumbo about the file being too large.  Right about now, you start pulling your hair out (it took 90 minutes just to conform to IEEE standards, another 2 hours to find the "brilliant" solution, and it's now 15 minutes past the due date for the conference submission).  Another hour of searching, another step closer to the solution:  Look in Adobe under the "File Properties" menu, under "Fonts" to see if all the fonts are embedded.  Nope.  They aren't there.  There's an interesting article here about changing some of TeXShop's internal commands to try and rectify the situation.  But that doesn't do the trick in your case.

So here's the answer, and you can put your hair back in.

Sometimes, when including external figures/tables/whatever, the figure-producing program doesn't embed the fonts, which are then not embedded in the final PDF.  In my case, I use R to create figures, and the captions or something must be causing some severe issues.  Sure enough, looking at these PDF files individually with Adobe confirms my suspicion.  After a little more digging (thanks A Blog for your genius), I found that you can imbed the fonts using a dirty hack involving changing the file to an eps file and then back to pdf.  This doesn't change the picture quality, but does embeds the fonts.  Here's the code from the website, changed a little bit for Mac commands (I just changed pdftops to pdf2ps):
#!/bin/bash
export GS_OPTIONS='-dEmbedAllFonts=true -dPDFSETTINGS=/printer' cp $1 $1.old pdf2ps $1 tmp.ps ps2eps tmp.ps
epstopdf tmp.eps
mv tmp.pdf $1 rm tmp.ps tmp.eps
Run this program on all your external PDF files (it won't increase the file size significantly—in fact, in my case it decreased the file size), and then re-typeset with your favorite pdflatex editor.  And voila, you run the file through the PDFExpress PDF checker and you get:
Status*: PDF Passed PDF Check; PDF is IEEE Xplore-compatible
That's music to my ears.

2 comments:

  1. Ha! I didn't really understand this post, but I will say this: I love that you used "voila." I hate when people write "WALLA!" or some such nonsense. I am such a snob. :)

    ReplyDelete
  2. You are a lifesaver! I came across the exact same problem: R figures in a Latex text, and doing a search with the exact term "Font ZapfDingbats is not embedded" on Google, this your page is the UNIQUE result. You just saved a few hours of my life. Thank you so much from Brazil! Et je parle "voila" aussi... :D

    ReplyDelete