Viele Benutzer von Berichtsgeneratoren benutzen Standardfunktionalität in ihrer täglichen Arbeit. Aber manchmal müssen sie sich mit nicht-trivialen Aufgaben beschäftigen, und dann kann die Suche nach einer Lösung viel Zeit und Mühe kosten. Aber vielleicht ist die beste Lösung, die Entwickler zu fragen, um die qualifizierte Hilfe zu bekommen. Diese Situation hatte ein Anwender des Generators Telerik Reporting Reports. Das Problem war, ein Bild des Objektbildes im Bericht zu drucken:
https://www.telerik.com/forums/print-a-picture-from-a-picturebox
Der Bericht kann Bilder enthalten, die nicht nur während des Entwurfs hochgeladen wurden, sondern auch solche, die binär in der Datenbank gespeichert sind. Stellen Sie sich eine Situation vor, in der Sie nur die richtigen Bilder aus einem Bericht mit vielen Seiten an Daten drucken müssen. Auf den ersten Blick ist das ein großes Problem. Sie können den Bericht nach HTML exportieren, das gewünschte Bild in den Grafikeditor kopieren und es erst dann zum Drucken schicken. Und Sie können einen interaktiven Bericht erstellen, der es Ihnen erlaubt, Bilder durch Anklicken zu drucken. Eine solche Lösung wird von den Telerik-Spezialisten angeboten, als Antwort auf die Frage eines Benutzers.
Es ist eine großartige Lösung. Schauen wir uns an, wie man dieses Problem im FastReport.Net Bericht lösen kann. In der Tat gibt es nichts Einfacheres. Alles, was Sie tun müssen, ist einen Ereignishandler für den Klick auf das Bildobjekt zu erstellen:
Und fügen Sie dem Berichtsskript einige Methoden hinzu
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 } |
Wie Sie sehen können, müssen Sie nur ein Bild des ausgewählten Objekts erhalten und den Druck ausführen. In der Methode zum Drucken haben wir der Ereignishandler “das Dokument drucken” erstellt, der das resultierende Bild verwendet. Jetzt, wenn Sie einen Bericht im Viewer anzeigen, können Sie auf das Bild klicken und es zum Drucken senden:
Wenn Sie aber nicht drucken, sondern nur auf einem lokalen Laufwerk speichern wollen, so können Sie ähnlich vorgehen:
1 2 3 4 |
private void Picture1_Click(object sender, EventArgs e) { (sender as PictureObject).Image.Save("C:\\Temp\\image.bmp"); } |
So ist das Drucken des Bildes per Klick aus dem FastRepor.Netreport sehr einfach durchzuführen.