Created On:  03 July 2012


How can I print the contents of an image file like a .BMP or .GIF to the default printer at a specified location on the page using Visual COBOL and the .NET Framework?


The following example will do exactly that.  There are two sets of code that can be used to either print an image residing in a file on disk or an image that resides in a resource file that is part of the project.

The entire solution is attached.  When unzipping the file please do so to your C:\ drive retaining the folder structure that is in the .zip file.

$set ilusing"System.Drawing.Printing"
$set ilusing"printimagevc.Properties"
class-id printimagevc.Form1 is partial
   inherits type System.Windows.Forms.Form.
working-storage section.
method-id NEW.
procedure division.
   invoke self::InitializeComponent
end method.

method-id button1_Click final private.
01 pd type PrintDocument.
procedure division using by value sender as object e as type System.EventArgs.
   set pd to new PrintDocument
   invoke pd::add_PrintPage(new System.Drawing.Printing.PrintPageEventHandler (self::pDoc_PrintPage))
   invoke pd::Print
end method.

method-id pDoc_PrintPage final private.
01 img type Image.
01 loc type Point.
procedure division using by value sender as object, e as type PrintPageEventArgs.
*> If loading image directly from file use the following.
   set img to type Image::FromFile("C:\printimagevc\LOGO.GIF")
   set loc to new Point(100, 100)
   invoke e::Graphics::DrawImage(img, loc)
*> If printing an image that is part of the projects resource file uncomment the line below and comment the previous
*> 3 lines.
*> invoke e::Graphics::DrawImage(type Resources::LOGO, 100, 100)
end method.
end class.