Codecs: How to convert an Email file to a PDF file?
In This Topic
Here is C#/VB.NET code that shows how to convert an Email file to a PDF file:
/// <summary>
/// Converts Email (.msg, .eml) document to a PDF document.
/// </summary>
/// <param name="emailFilePath">Path to a source Email file.</param>
/// <param name="pdfFilePath">Path to a result PDF file.</param>
public static void ConvertEmailToPdf(string emailFilePath, string pdfFilePath)
{
// set default Email converter settings
// create headers
EmailLayoutSettings.DefaultEmailSettings.EmailConverterSettings.CreateHeader = true;
// create attachment list in header
EmailLayoutSettings.DefaultEmailSettings.EmailConverterSettings.CreateAttachmentsInHeader = true;
// create image collection
ImageCollection images = new ImageCollection();
try
{
// open Email file
images.Add(emailFilePath);
// create PDF encoder
using (PdfEncoder encoder = new PdfEncoder())
{
// create metadata for Email document
EmailDocumentMetadata emailMetadata = (EmailDocumentMetadata)images[0].SourceInfo.Decoder.GetDocumentMetadata();
// set subject in PDF document as the Email Subject
string subject = emailMetadata.FindTextHeader("Subject");
if (subject != null)
encoder.Settings.DocumentSubject = subject;
// set title in PDF document as the Email sender
string sender = emailMetadata.FindTextHeader("Sender");
if (sender != null)
encoder.Settings.DocumentTitle = sender;
// save images from image collection (Email document) to a PDF file
images.SaveSync(pdfFilePath, encoder);
}
}
finally
{
images.ClearAndDisposeItems();
}
}
''' <summary>
''' Converts Email (.msg, .eml) document to a PDF document.
''' </summary>
''' <param name="emailFilePath">Path to a source Email file.</param>
''' <param name="pdfFilePath">Path to a result PDF file.</param>
Public Shared Sub ConvertEmailToPdf(emailFilePath As String, pdfFilePath As String)
' set default Email converter settings
' create headers
EmailLayoutSettings.DefaultEmailSettings.EmailConverterSettings.CreateHeader = True
' create attachment list in header
EmailLayoutSettings.DefaultEmailSettings.EmailConverterSettings.CreateAttachmentsInHeader = True
' create image collection
Dim images As New ImageCollection()
Try
' open Email file
images.Add(emailFilePath)
' create PDF encoder
Using encoder As New PdfEncoder()
' create metadata for Email document
Dim emailMetadata As EmailDocumentMetadata = DirectCast(images(0).SourceInfo.Decoder.GetDocumentMetadata(), EmailDocumentMetadata)
' set subject in PDF document as the Email Subject
Dim subject As String = emailMetadata.FindTextHeader("Subject")
If subject IsNot Nothing Then
encoder.Settings.DocumentSubject = subject
End If
' set title in PDF document as the Email sender
Dim sender As String = emailMetadata.FindTextHeader("Sender")
If sender IsNot Nothing Then
encoder.Settings.DocumentTitle = sender
End If
' save images from image collection (Email document) to a PDF file
images.SaveSync(pdfFilePath, encoder)
End Using
Finally
images.ClearAndDisposeItems()
End Try
End Sub