Converting LaTeX documents to .pdf

[ Note: Please be aware that this page has not been updated since 2010 and might thus contain (potentially highly) outdated information! ]

I've had a few problems in the past producing high-quality .pdf documents that would be accepted for publication smoothly (that is, from a typesetting point of view!) by various journals and/or conferences. Especially when producing papers for IEEE publications or for IEEE-sponsored conferences and workshops, very specific guidelines need to be followed when producing the final document for publication, usually in .pdf format.

One of the most irritating problems I encountered is that IEEE requires all fonts in the document to be "embedded subset". I have tried a number of ways to produce my .pdf files but until recently, I was always unable to have all fonts embedded. So you could typically rely on some externally-provided solution to this problem: for IEEE conferences for instance, the IEEE provides the PDFeXpress tool, that basically uploads your LaTeX files and does the entire compilation itself. The problem with this is that you can only convert or check your documents if you're planning to submit to a current conference (you can't just randomly convert your documents this way). And besides, I want to be fully in charge of my documents and don't want to depend on an online help system all the time, especially when I don't exactly know what they're doing to my files during compilation.

So I did a bit more fiddling around and finally found an easy way to achieve the desired result (i.e., embed all fonts!). The procedure basically uses the following steps:

article.tex => latex -> dvips -> GhostScript's pdfwrite (from GSview) => article.pdf

The main advantage of this procedure is that it only requires basic (and free!!) software: some LaTeX package (e.g., MiKTeX) and GSview (GhostScript), that's it! No need for Acrobat Distiller or (even worse!) some pricey Microsoft product! Also, I tend to make an intensive use of .eps figures and \psfrag inputs in my documents. Since "pdfLaTeX" and "dvi2pdf" don't seem to recognise .eps and \psfrag, the above procedure nicely circumvents this problem (i.e., you can use .eps and \psfrag as much as you like!!).

The details of the procedure are as follows:
  1. Create your .tex file, then LaTeX/BibTeX it:

         latex article.tex

  2. Convert the resulting .dvi file to .ps:

         dvips -Ppdf -G0 -ta4 article.dvi

    The -ta4 option specifies the paper format, you can use -tletter instead, or leave it out.

  3. Open the .ps file with GSview, then, under the "File" menu, select "Convert...". In the "Convert" popup, select "pdfwrite" under "Device", as well as an appropriate "Resolution" value (I usually use 600 or 720). Now here is the trick: still in the "Convert" popup, click on "Properties" and make sure that the "Property" fields have the following values:

    CompatibilityLevel 1.4
    PDFSETTINGS /prepress or /printer
    AutoRotatePages /None
    CompressPages true
    ASCII85EncodePages false
    UseFlateCompression true
    EmbedAllFonts true
    SubsetFonts true
    MaxSubsetPct 100
    ConvertCMYKImagesToRGB false
    AutoFilterColorImages true
    ColorImageFilter /DCTEncode
    EncodeColorImages true
    DownsampleColorImages true
    ColorImageDepth -1
    ColorImageResolution 300
    ColorImageDownsampleThreshold 1
    ColorImageDownsampleType /Bicubic
    AutoFilterGrayImages true
    GrayImageFilter /DCTEncode
    EncodeGrayImages true
    DownsampleGrayImages true
    GrayImageDownsampleThreshold 1
    GrayImageDownsampleType /Bicubic
    GrayImageDepth -1
    GrayImageResolution 300
    MonoImageFilter /CCITTFaxEncode
    EncodeMonoImages true
    DownsampleMonoImages true
    MonoImageDownsampleThreshold 1
    MonoImageDownsampleType /Bicubic
    MonoImageDepth -1
    MonoImageResolution 600

    These settings are a bit of a pain to enter manually, but they remain set after closing GSview, so it only has to be done once.

    Once the correct properties have been set, simply click "OK" in the "Convert" popup, then enter the name of the .pdf file (including the ".pdf" extension) to be created form the .ps file.

  4. The resulting .pdf file should have all fonts "embedded subset", and should successfully pass the IEEE PDFeXpress inspection. You can check the font status by opening your .pdf file with Acrobat Reader, opening "Document properties..." under the "File" menu, and checking that all fonts used in the document (under the "Fonts" label) have "embedded subset" next to them.


It seems like the configuration of dvips is crucial to the embedding of fonts in the resulting .pdf document. I've noticed that the contents of the localtexmf folder could make the difference between a successful or a failed completion of the above procedure. If you still have problems, try again after downloadding these files [120kB] into your X:\localtexmf\dvips\config folder. It worked for me...

The procedure described here has been tested and works on a Windows XP system using GSview 4.6, GhostScript 8.50 and MiKTeX 2.4 (dvips 5.94b and e-TeX 3.14159-2.2). I suspect that other versions of the same software packages should also work. And since this procedure only calls for non-proprietary programs downloadable free-of-charge from the web, I'm guessing that these steps should also achieve the desired results on a different operating system (Linux, Mac, etc.). Feel free to let me know if you get positive or negative results on your system.

The property settings given in the table above are copied from the "GhostScript Settings Reference for IEEE Xplore-Compatible PDFs", available from the IEEE PDFeXpress web site, except for the value set for the "PDFSETTINGS" property. Setting "PDFSETTINGS" to "[Not defined]", as given in this IEEE reference, failed to produce a proper .pdf file on my system.

Finally, it is likely that you don't need to set all the above parameters in order to obtain proper results. Obviously, you typically want to set "EmbedAllFonts" and "SubsetFonts" to "true", but simply doing this and leaving other settings to "[Not defined]" isn't enough.

And also...

Thanks to Matthew J. Probst for the following advice (August 2010): CompatibiltyLevel needs to be set to 1.4, or IEEE's PDF eXpress will fail the doc with the error: "Acrobat version is less than 5.0".