EMF to PDF as raster image

EMF is the Windows Meta file format for images. More information on this file format can be found here. One of the advantages of the Windows Meta File is, that it is vector based and therefor the images are scalable. With the PDFkit tool it is possible to convert these EMF images to PDF or to include them in a PDF while preserving the scalability. In rare and unforseeable occasions, these images may not be converted correctly. In that case it is possible to include the EMF images in PDF as raster images. This article and Code Sample EMF to PDF as raster image explains how to do that.

EMF to PDF

First we create a bitmap from an EMF file using GDI+ library functions.

C# EMF to PDF code sample: Create a Bitmap from an EMF file

static Bitmap EMF2Bitmap(string file_name)
{
    using (Metafile emf = new Metafile(file_name))
    {
        Bitmap bmp = new Bitmap(emf.Width, emf.Height);

        using (Graphics g = Graphics.FromImage(bmp))
        {
            g.DrawImage(emf, 0, 0);
            return bmp;
        }
    }
}

Secondly we convert the Bitmap to a pdf file

C# code sample: Convert a Bitmap to PDF

static void Bitmap2Pdf(System.Drawing.Bitmap bmp, string file_name)
{
    ImageShape img = new ImageShape(bmp);
    Document document = new Document();
    Page page = new Page(img.Width, img.Height);

    page.VisualOverlay.Add(img);
    document.Pages.Add(page);
    using (FileStream fs = new FileStream(file_name, FileMode.Create, FileAccess.Write))
    {
        document.Write(fs);
    }
}

Having these functions makes it easy to write the Main method.

Putting things together: EMF to PDF

static void Main(string[] args)
{
    // http://stackoverflow.com/questions/10147293/how-to-display-windows-metafile
    string input = @"D:\github\EMFToBitmap\sample.emf";
    string output = @"D:\github\EMFToBitmap\sample.pdf";

    Bitmap bmp = EMF2Bitmap(input);
    Bitmap2Pdf(bmp, output);
}

More C# EMF to PDF code samples?

Check out other EMF to PDF code samples: