Convert EPS to EMF using Java


This article explains how to convert EPS to EMF using Java. It covers the following topics.

Java EPS to Image

The EPS to Image conversion using Java in other formats like JPG, PNG, TIFF, WMF etc. are covered in these articles.

Java EPS to EMF Convesion

Aspose.Page for Java EPS to EMF converter allows to convert Encapsulated PostScript (EPS) file to EMF image on any OS for which Java Virtual Machine exists.

Steps: EPS to EMF Converter API Code in Java

It is necessary to do several steps in order to perform EPS to EMF conversion:

  1. Initialize an input stream for input EPS file.
  2. Create an instance of PsDocument from created earlier input stream.
  3. Use ImageSaveOptions to specify AdditionalFontsFolder and SuppressError boolean value.
  4. Create an instance of ImageDevice specifying image type and size if it is necessary.
  5. Save PostScript document as image with image save options to an array of arrays of bytes. One array of bytes for one page of input document.
  6. Save resulting 2-dimensional arrays of bytes to EMF files creating for every bytes array a new file output stream.
  7. If SuppressErrors value was true, as it is by default, It is possible to see what errors were thrown during conversion of EPS to EMF.

Following Java code snippet shows how to convert EPS to EMF files in Java:

// For complete examples and data files, please go to
// The path to the documents directory.
String dataDir = Utils.getDataDir();
//Initialize image format
ImageFormat imageFormat = ImageFormat.EMF;
// Initialize Encapsulated PostScript input stream
FileInputStream psStream = new FileInputStream(dataDir + "input.eps");

PsDocument document = new PsDocument(psStream);

// If you want to convert Postscript file despite of minor errors set this flag
boolean suppressErrors = true;

//Initialize options object with necessary parameters.
ImageSaveOptions options = new ImageSaveOptions(suppressErrors);
// If you want to add special folder where fonts are stored. Default fonts folder in OS is always included.
//options.setAdditionalFontsFolders(new String [] {"FONTS_FOLDER"});

// Default image size is 595x842 and it is not mandatory to set it in ImageDevice
com.aspose.eps.device.ImageDevice device = new com.aspose.eps.device.ImageDevice(imageFormat);
// But if you need to specify size use constructor with two parameters
//ImageDevice device = new ImageDevice(new Dimension(595, 842), imageFormat);

try {, options);
} finally {

byte[][] imagesBytes = device.getImagesBytes();

int i = 0;

for (byte [] imageBytes : imagesBytes) {
    String imagePath = dataDir + "EPSToImage" + i + "." + imageFormat.toString().toLowerCase();
    FileOutputStream fs = new FileOutputStream(imagePath);

    try {
        fs.write(imageBytes, 0, imageBytes.length);
    } catch (IOException ex) {
    } finally {

//Review errors
if (suppressErrors) {
    for (Exception ex : options.getExceptions()) {

Let’s consider ImageSaveOptions. Using this class we can assign different conversion parameters while converting EPS to EMF.

  • AdditionalFontsFolder specifies locations where to find fonts. System fonts folders are always included by default.
  • SuppressError controls behaviour of EPS to EMF converter when non-critical errors are appeared. If value is true than it is possible to view a list of such errors after conversion in Exceptions field. Default value is true.
  • Debug allows outputting debug information to console. Default value is false.