Печать многостраничного Tiff с помощью C #

Я пытаюсь напечатать многомерный tiff. Этот tiff имеет 3 страницы с переменным изображением. Поэтому я написал следующий код, который, к сожалению, печатает только первое измерение. Все остальные печатаются на пустой бумаге. Если я сохраню изображение из памяти в файл, irfanview показывает все страницы правильно ...

Кто может мне подсказать?

 public void print(Bitmap imageToPrint, string printerName, int pagesToPrint)
 {
  try
  {
   printmap = imageToPrint;

   cur_page = 0;
   max_pages = pagesToPrint;

   m.Top = 1 * dpi; // Set a 1' margin, from the top
   m.Left = 1.25f * dpi; // Set a 1.25' margin, from the left
   m.Bottom = printmap.Height - m.Top; // 1', from the bottom
   m.Right = printmap.Width; // rechter Rand so weit wie es eben geht
   m.Width = printmap.Width - (m.Left * 2); // Get the width of our working area
   m.Height = printmap.Height - (m.Top * 2); // Get the height of our working area

   pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
   if (printerName != "")
    pd.DefaultPageSettings.PrinterSettings.PrinterName = printerName;
   pd.DefaultPageSettings.Color = true; 
   pd.DefaultPageSettings.PrinterSettings.PrintFileName = "tiffprint";
   pd.DocumentName = "InstantFormsPrinting";
   if (m.Width > m.Height)
   {
    pd.DefaultPageSettings.Landscape = true;
   }
   pd.Print(); // Print

  }
  catch (Exception ex)
  {
   Console.WriteLine("Error during print preparation:" + ex.Message);
  }
 }

 // Our printing event
 public void pd_PrintPage(object sender, PrintPageEventArgs e)
 {
  Rectangle crop = new Rectangle(1, 1, 200, 200);

  try
  {              
   printmap.SelectActiveFrame(FrameDimension.Page, cur_page);
   e.Graphics.DrawImageUnscaled(printmap, new Point(0, 0)); 

   ++cur_page;
   e.HasMorePages = (cur_page < max_pages);
  }
  catch (Exception ex)
  {
   Console.WriteLine("Error during print operation:" + ex.Message);
  }
 }

На странице 2 pd_PrintPage показывает исключение с "общая проблема gdi "

Пока понятия не имею. Было бы очень хорошо, если бы кто-нибудь мог помочь.

5
задан bke15 20 September 2010 в 15:13
поделиться