Click here to Skip to main content
15,868,103 members
Articles / Programming Languages / C#
Article

Converting Image Files to PDF

Rate me:
Please Sign up or sign in to vote.
4.65/5 (40 votes)
15 Aug 2008CPOL2 min read 466.8K   41.1K   110   83
An article on converting image files (BMP, PNG, GIF, JPEG, TIFF) to PDF
ImageToPdf.JPG

Introduction

Hello everybody! This is my first article here. It's nothing fancy, but it can save a lot of trouble if you need to include a simple image -> PDF convertor in your .NET application. Please forgive any spelling or grammar mistakes which may follow.

Background

Some time ago I needed a TIFF to PDF converter. I found this article called Convert Tiff To PDF, which is written in Visual C++ 6 and uses the CXImage library, as well as LibTIFF.

As that article says, it only suppots TIFF Image files in Fax formats, whatever that means. I haven't looked in depth, but probably that's the reason why, during my testing, out of these 18 TIFF sample files, only 11 were converted to something that Adobe Reader could understand. They contain scanned text (from books and handwritten), technical drawings and pictures, so I suppose they cover a wide range of sub-formats.

So after the few minutes of joy during which I thought I had found the perfect solution, I was back to Google to look for something else. Luckily I found the wonderful freeware Open Source library called PDFSharp, which saved the day.

Using the Code

The purpose of the PDFSharp libray is to create PDF files from scratch as easy as possible. The methods it exposes are symilar to the GDI+ ones in .NET. So you can imagine that writing a PDF file is like drawing 'stuff' (text, shapes, images) in the Paint event of a Windows Forms Panel. With that knowledge, converting a BMP/PNG/GIF/JPEG/TIFF file to a PDF one is done like this:

  • create a new empty PDF document
  • add a blank page
  • get the XGraphics object
  • create the XImage from the source file
  • draw the image
  • save the PDF file

The core of the program is listed below. I used a BackgroundWorker, so that the UI will not hang during the conversion.

C#
PdfDocument doc = new PdfDocument();
doc.Pages.Add(new PdfPage());
XGraphics xgr = XGraphics.FromPdfPage(doc.Pages[0]);
XImage img = XImage.FromFile(source);

xgr.DrawImage(img, 0, 0);
doc.Save(destinaton);
doc.Close();

Conclusion

Creating PDF files from images is very easy with PDFSharp.

For TIFF images, the downside is that the speed is significantly lower compared with the method described in the article Convert Tiff To PDF. I don't have rigorous data, but as an estimation, converting a large image (2.5 MB) takes around 2 seconds. The other method is about 10 times faster, but again it only supports some TIFF files. The performance is not that bad, but if you want to use this code to process multiple files in an application, be sure to do it asyncronously with th UI.

Note: In the download archives I included the PDFSharp library. If you want the latest version, be sure to visit their download page.

History

14 Aug 2008 - first submission of the article.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer
Romania Romania
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralMy vote of 5 Pin
Member 1533839927-Aug-21 7:03
Member 1533839927-Aug-21 7:03 
QuestionLow quality od pdf Pin
BMicka7-Feb-21 23:48
BMicka7-Feb-21 23:48 
QuestionVisual Studio C# Capture Screen to Print and/or Also Save As PDF Showing Unwanted White Pixels Pin
Member 1435300724-Mar-20 6:26
Member 1435300724-Mar-20 6:26 
QuestionNot working for width >1000 images Pin
Peram Brahma Reddy29-Aug-19 23:58
Peram Brahma Reddy29-Aug-19 23:58 
QuestionAbout License Pin
OZA NILESH4-Jul-19 1:41
OZA NILESH4-Jul-19 1:41 
PraiseJust perfect Pin
Filip D. Williams28-Jun-17 23:30
Filip D. Williams28-Jun-17 23:30 
PraiseTHANKS Pin
HARISH KUMAR JHAMNANI31-Aug-16 23:39
HARISH KUMAR JHAMNANI31-Aug-16 23:39 
QuestionCONFUSED Pin
Member 1251305231-May-16 21:21
Member 1251305231-May-16 21:21 
QuestionConverting relative small 24bits bmp of approximately 10x10 Adobe points to portable document format. Pin
Member 1097162017-Nov-15 0:35
Member 1097162017-Nov-15 0:35 
AnswerRe: Converting relative small 24bits bmp of approximately 10x10 Adobe points to portable document format. Pin
blackjack21507-Jan-16 22:02
blackjack21507-Jan-16 22:02 
QuestionExcelent!!! Pin
Member 117261272-Jun-15 11:41
Member 117261272-Jun-15 11:41 
QuestionCode for PdfSharp.dll Pin
nayana_a8526-May-15 21:07
nayana_a8526-May-15 21:07 
QuestionGood Job! Pin
winhtay17-Nov-14 23:23
winhtay17-Nov-14 23:23 
QuestionMore images for listbox Pin
Gabee82-Nov-13 22:40
Gabee82-Nov-13 22:40 
Questioncode for convert image,excel or word documents to pdf on dreamweaver Pin
Member 101477509-Jul-13 8:49
Member 101477509-Jul-13 8:49 
GeneralIt worked perfectly. five stars Pin
pianocomposer20-May-13 4:58
pianocomposer20-May-13 4:58 
GeneralMy vote of 5 Pin
Animo199410-May-13 10:34
Animo199410-May-13 10:34 
QuestionCan i convert GIF image to PDF file Pin
Tridip Bhattacharjee9-Apr-13 4:32
professionalTridip Bhattacharjee9-Apr-13 4:32 
Questioni can set the DPI ? Pin
waveiro21-Feb-13 9:33
waveiro21-Feb-13 9:33 
QuestionThanks For This Great Project Pin
fireofwin17-Jul-12 22:50
fireofwin17-Jul-12 22:50 
GeneralMy vote of 5 Pin
Ganesh Nellaiappan Rajan29-Mar-12 10:05
Ganesh Nellaiappan Rajan29-Mar-12 10:05 
GeneralUseful with a nice touch Pin
joshd0626-Mar-12 3:17
joshd0626-Mar-12 3:17 
QuestionI really appreciate for this work. This code helped me a lot. Thanx very much Pin
Member 43617134-Feb-12 6:05
Member 43617134-Feb-12 6:05 
GeneralMy vote of 5 Pin
Airelement07423-Jun-11 23:39
Airelement07423-Jun-11 23:39 
QuestionProcessing large TIFFs into PDFs: out of memory issue Pin
Member 31967208-Jun-11 3:33
Member 31967208-Jun-11 3:33 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.