Saturday, April 9, 2011

Saving EPS files from Powerpoint

The newer versions of Microsoft Powerpoint (2007+) offer a simple and intuitive interface to quickly create nice illustrations. It would be really nice if you could use this to create diagrams for paper submissions to conferences/journals.
If you want to import pptx diagrams into your papers, typically, the best way is to export as pdf (Microsoft has an export to pdf plugin). Now you could simply import the pdf images in your Latex file, and things work pretty well.
The only hitch is that many conference templates enforce eps images. Now most paths that convert pptx->pdf->eps completely mess up the image. Sometimes the pdf may be converted into a Huge bitmap in the eps file. We certainly don't want that. Here is a technique that you can use to directly convert pptx drawings to eps, while keeping the vector format. No more "Yuck! Bitmap..." comments from your advisor :) ... and you don't have to tell Microsoft Haters that you used Powerpoint :) and that you converted it to eps using tools that come by default with Windows ;)

Anyway, before I begin, here are the places from where I picked up this info (everything is just a web-search away):
http://people.csail.mit.edu/dalleyg/faqs/20010425.html
http://www.sketchpad.net/postscript-printer-winxp-1.htm

Note: I am using Win7 & Office 2010, so some things may be a bit different in other versions.

Now the first step is to create an EPS File Printer. (Yes you can do that)
Go to 'Control Panel'->'Devices and Printers'->[Right Click]->'Add a Printer'
Click 'Add a local printer'.
Choose 'Use an existing port'->'FILE: Print to File'
Pick some printer that has a 'PS' suffix to it.
Now this may take some trial and error to find a color printer with decent number of options.


You can print a test page and check if things are working now. (Just save the page as a .eps file). To view this, you may need to install GhostScript & GhostView on Windows. Linux should have this by default.

Now to prepare the PPT diagram for printing:
Create a blank presentation.
Select 'Design' -> 'Slide Orientation' -> 'Portrait'
(This is the only limitation I came across. In Landscape mode, the EPS printer rotates the image through 270 degrees)
Select 'Design' -> 'Page Setup'
Setup the page dimensions here (This should be the boundary of your diagram)

Now copy-paste the actual drawing into this slide from wherever you created it.
(The reason for this is, if you draw first and then rescale the page size, it will stretch the diagram. Maybe there is a workaround for this.)

Now select 'Print', and pick the PS printer from the list.
Select 'Printer Properties'->'Advanced'

Setup the PostScript options as shown in this screenshot:

The Postscript output option should be EPS.
Postscript language level be 1 (could be higher I suppose, but this is safer)
TrueType font download options: Outline (This converts fonts to curves I guess. Play around with other options if you want, but stay away from 'Bitmap' of course).

As shown in the next image, set the Paper Size to 'Postscript custom page size'. Keep this the same as your Slide dimensions, because this will be the size of the CropBox in the EPS file.


Now we are all set. Just click 'Print' and save the file with a .eps extension.
GhostView correctly rendered this file for me, and the file size was reasonable.

Note however, that eps is limited in its ability to handle transparency (i think there is no transparency whatsoever), and gradients, so try to use solid colors in the drawings.

Let me know how this goes for you :)

7 comments:

  1. Hi ! This is my first visit to your blog! Your blog provided us beneficial information to work on.
    EPS panel

    ReplyDelete
  2. THANK YOU! It works.

    ReplyDelete
  3. Great! This is the best solution I have ever seen.

    ReplyDelete
  4. your article very informative brilliant Efforts thanks keep sharing Convert Power Point to pdf

    ReplyDelete
  5. Hi friends You can download Some Best Business card Designs here
    Free Business cards Templates Download

    ReplyDelete