Печать сообщений электронной почты в XPS и TIFF

Этот Aspose.Email.Printing namespace предоставляет широкий набор возможностей для печати почтовых сообщений в различные форматы (XPS или TIFF) и настройки разметки страниц. В этой статье они описаны. Существует несколько вариантов того, как электронное письмо может быть распечатано с использованием Aspose.Email:

  1. Печать только тела сообщения.
  2. Печать тела сообщения и заголовков.
  3. Печать HTML‑тела.
  4. Настройка макета страницы.
  5. Автоматическое подгонка TIFF под принтер.
  6. Настройка целевого DPI для выходного TIFF.

Центральный класс для этих операций — MailPrinter. Его Print метод принимает MailMessage, имя выходного файла и PrintFormat значение (XPS или Tiff).

Печать тела сообщения

В следующем фрагменте кода создаётся сообщение и печатается без заголовков, сначала в файл XPS, затем в файл TIFF. Установите FormattingFlags свойство для MessageFormattingFlags.None чтобы отображалось только тело сообщения.

// Declare message as a MailMessage instance
MailMessage message = new MailMessage();
message.From = "user1@domain.com";
message.To = "user2@domain.com";
message.Subject = "My First Mail";
message.Date = DateTime.Now;
message.Body = "Text is the Mail Message";

// Instantiate an instance of MailPrinter and set the FormattingFlags to None to display only the message body
var printer = new Aspose.Email.Printing.MailPrinter();
printer.FormattingFlags = Aspose.Email.Printing.MessageFormattingFlags.None;

// Print the email to an XPS and TIFF file
printer.Print(message, dataDir + "PrintXPS_out.xps", Aspose.Email.Printing.PrintFormat.XPS);
printer.Print(message, dataDir + "PrintTIFF_out.tiff", Aspose.Email.Printing.PrintFormat.Tiff);

Печать заголовков и тела сообщения

Чтобы отображать и печатать заголовки сообщения вместе с его телом, измените FormattingFlags в MessageFormattingFlags.MailInfo.

printer.FormattingFlags = Aspose.Email.Printing.MessageFormattingFlags.MailInfo;

Печать сообщения с HTML‑текстом

Сообщения с HTML‑текстом также могут быть распечатаны. Установите HTML‑содержимое с помощью HtmlBody свойство перед печатью.

// Body of the email message
message.IsBodyHtml = true;
message.HtmlBody = "<html><body><h1>Hello this is html body in Heading 1 format </h1></body></html>";

Установка макета страницы для печати

MailPrinter предоставляет средства для задания следующих свойств макета страницы:

|Свойство|Описание|Значение по умолчанию| | :- | :- | :- | |FormattingFlags|Показать или скрыть детали сообщения.|None [1]| |MarginTop|Получить или установить верхнее поле.|0.5| |MarginLeft|Получить или установить левое поле.|0.5| |MarginBottom|Получить или установить нижнее поле.|0.5| |MarginRight|Получить или установить правое поле.|0.5| |PageUnit|Получить или установить единицы измерения.|Inch [2]| |PageHeight|Получить или установить высоту страницы.|11.69| |PageWidth|Получить или установить ширину страницы.|8.27|

  • [1] Существует два флага: MailInfo и None.
  • [2] Единицы измерения страницы могут быть Inch, Pixel, Point, Cm, или Millimeter.

Приведённый ниже фрагмент кода использует произвольные настройки для иллюстрации применения этих свойств. Он задаёт страницу высотой 20 см и шириной 8 см с полями по 2 см.

// Instantiate an instance of MailPrinter
var printer = new Aspose.Email.Printing.MailPrinter();

// Just for testing, get the default property values
double width = printer.PageWidth;
double height = printer.PageHeight;

// Set page layout for printing
printer.PageUnit = Aspose.Email.Printing.PrinterUnit.Cm;
printer.MarginTop = 2;
printer.MarginBottom = 2;
printer.MarginLeft = 2;
printer.MarginRight = 2;
printer.PageWidth = 8;
printer.PageHeight = 20;

Автоподгонка TIFF

Aspose.Email.Printing предоставляет MessageFormattingFlags.AutoFitWidth флаг, позволяющий автоматически подгонять TIFF под принтер. Ниже показан пример использования авто‑подгонки.

string dataDir = RunExamples.GetDataDir_KnowledgeBase();

// Instantiate an instance of MailPrinter
Printing.MailPrinter printer = new Printing.MailPrinter();
printer.FormattingFlags = Printing.MessageFormattingFlags.AutoFitWidth;
MailMessage msg = MailMessage.Load(dataDir + "message3.msg", new MsgLoadOptions());
printer.Print(msg, dataDir + "AutoFit_out.tiff", Printing.PrintFormat.Tiff);

Настройка целевого DPI для выходного TIFF

Используйте DpiX и DpiY свойства для управления разрешением выходного TIFF.

// The path to the File directory and instantiate an instance of MailPrinter
string dataDir = RunExamples.GetDataDir_KnowledgeBase();
Printing.MailPrinter printer = new Printing.MailPrinter();
printer.DpiX = 300;
printer.DpiY = 300;
MailMessage msg = MailMessage.Load(dataDir + "message3.msg", new MsgLoadOptions());
printer.Print(msg, dataDir + "AdjustTargetDPI_out.tiff", Printing.PrintFormat.Tiff);