2013-08-23 2 views
0

Я написал код ниже, чтобы получить все изображения в папке.Печать изображения Один за другим C#

Ниже приведен код

string[] files = Directory.GetFiles(@"C:\temp", "*.jpeg"); 

Я получил все имена изображений в файлах. Теперь я хочу распечатать все изображения по одному. Я попытался ниже код

foreach (var i in files) 
{ 
    objPrintImage = Image.FromFile(i); 
    objDimension = new FrameDimension(new System.Guid()); 
    PrintDocument objPrintDoc = new PrintDocument(); 
    objPrintDoc.PrintPage += new PrintPageEventHandler(this.objPrintDoc_PrintPage); 
    if (objPrintDoc.PrinterSettings.IsValid) 
     objPrintDoc.Print(); 
} 

Но получение ошибки Произошла общая ошибка в GDI +.

Пожалуйста, помогите мне.

Спасибо заранее, PRASHANT

+0

Предоставить стопку также PLS. – speti43

+0

зачем нужно objDimension? – speti43

+0

Что вы пытаетесь напечатать? objPrintImage, который является образом или objPrintDoc? –

ответ

0

Это работает для меня не бросает исключение, и печать начинается:

Я сохранил в JPG файлы, а не JPEG, первый это: Pencils

Я думаю, что проблема с вашими файлами изображений.

var files = Directory.GetFiles(@"C:\temp\", "*.jpg"); 

     foreach (var i in files) 
     {   
      var objPrintDoc = new PrintDocument(); 
      objPrintDoc.PrintPage += (obj, eve) => 
       { 
        System.Drawing.Image img = System.Drawing.Image.FromFile(i); 
        Point loc = new Point(100, 100); 
        eve.Graphics.DrawImage(img, loc); 
       }; 
      objPrintDoc.Print();  
     } 
+0

Спасибо, это сработало для меня. – User5590

2

Image реализует IDisposable, поэтому вы должны утилизировать ваше изображение

foreach (var i in files) 
    { 
     using(var objPrintImage = Image.FromFile(i)) 
     { 

     objDimension = new FrameDimension(new System.Guid()); 

     PrintDocument objPrintDoc = new PrintDocument(); 

     objPrintDoc.PrintPage += new PrintPageEventHandler(this.objPrintDoc_PrintPage); 
     if (objPrintDoc.PrinterSettings.IsValid) 
     { 
      objPrintDoc.Print(); 
     } 
     } 
    } 

Редактировать - Просто заметил, что вы даже не используете этот файл в этом примере?


public abstract class Image : MarshalByRefObject, 
ISerializable, ICloneable, IDisposable 
+0

PrintPage EventHandler вызовет событие objPrintDoc_PrintPage. – User5590

+0

что с этим? – Sayse

+0

Вы говорите, что я должен удалить объект изображения после вызова objPrintDoc.Print() ...? – User5590

Смежные вопросы