Many users of report generators fairly standard functionality in their everyday work. But sometimes they have to deal with non-trivial tasks, and then search for a solution may take a lot of time and effort. But perhaps the best solution is to ask the developers to get the most qualified assistance. This is done by one of the users of the generator Telerik Reporting reports. The problem was to print a picture of the object image in the report:
https://www.telerik.com/forums/print-a-picture-from-a-picturebox
The report may contain images not only uploaded during the design, but those that are stored binaryly in the database. Imagine a situation where you only need to print the right images from a report with many pages of data. At first glance, this is a big problem. You can export the report to HTML, copy the image you want to the graphics editor, and only then send it to print. And you can make an interactive report that will allow you to print pictures by clicking. Such solution is offered by Telerik specialists, in response to a user's question.
It's a great solution. Let's look at how to solve this problem in the FastReport.Net report. In fact, there is nothing simpler. All you need to do is create an event handler clicking on the picture object:
And add couple methods to the report script
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
//picture object public Image img; //printing method public void Print() { System.Drawing.Printing.PrintDocument picture = new System.Drawing.Printing.PrintDocument(); picture.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(picture_PrintPage); DialogResult result = new PrintDialog().ShowDialog(); if (result == System.Windows.Forms.DialogResult.OK) { picture.Print(); } } private void picture_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { e.Graphics.DrawImage(img, new Point(0, 0)); //picture and posirion on one page } private void Picture1_Click(object sender, EventArgs e) { img = (sender as PictureObject).Image; //We get the picture from the chosen object Print(); //execute printing } |
As you can see, just need to get a picture of the selected object and execute printing. In the method of printing, we have created the event handler print a document, which used the resulting image. Now, when viewing a report in the viewer, you can click on the picture and send it to print:
But if u do not need to print but only save on a local drive, so you can proceed in the similar way:
1 2 3 4 |
private void Picture1_Click(object sender, EventArgs e) { (sender as PictureObject).Image.Save("C:\\Temp\\image.bmp"); } |
Thus, printing of the picture by ckick from the FastRepor.Netreport is very easy to perform.