Last active
September 12, 2018 09:20
-
-
Save janosorcsik/5ab65371b00f203935f6 to your computer and use it in GitHub Desktop.
Telerik Report Helper
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
namespace UI.Helpers | |
{ | |
using System; | |
using System.Collections; | |
using System.Collections.Generic; | |
using System.Drawing; | |
using System.Drawing.Imaging; | |
using System.IO; | |
using System.Text; | |
using Telerik.Reporting.Processing; | |
using Report = Telerik.Reporting.Report; | |
public static class ReportHelpers | |
{ | |
public static byte[] ReportToJpeg(this Report report, int pageNumber = 1) | |
{ | |
try | |
{ | |
pageNumber = pageNumber - 1; | |
var deviceInfo = new Hashtable(); | |
deviceInfo["OutputFormat"] = "JPEG"; | |
string documentName; | |
var mlist = new MemoryStreamList(); | |
var reportProcessor = new ReportProcessor(); | |
reportProcessor.RenderReport("IMAGE", report, deviceInfo, mlist.CreateStream, out documentName); | |
var bytes = new byte[mlist[pageNumber].Length]; | |
mlist[pageNumber].Seek(0, SeekOrigin.Begin); | |
mlist[pageNumber].Read(bytes, 0, bytes.Length); | |
bytes = mlist[pageNumber].ToArray(); | |
return bytes; | |
} | |
catch (Exception ex) | |
{ | |
throw new Exception(ex.Message, ex.InnerException); | |
} | |
} | |
public static byte[] MergeTwoImages(this byte[] firstByteArray, byte[] secondByteArray) | |
{ | |
var firstImage = firstByteArray.ByteArrayToImage(); | |
var secondImage = secondByteArray.ByteArrayToImage(); | |
var outputImage = new Bitmap(firstImage.Width, firstImage.Height + secondImage.Height); | |
var g = Graphics.FromImage(outputImage); | |
g.Clear(Color.White); | |
g.DrawImage(firstImage, new Point(0, 0)); | |
g.DrawImage(secondImage, new Point(0, firstImage.Height)); | |
g.Dispose(); | |
firstImage.Dispose(); | |
secondImage.Dispose(); | |
var bytes = outputImage.ImageToByteArray(); | |
outputImage.Dispose(); | |
return bytes; | |
} | |
public static Image ByteArrayToImage(this byte[] byteArray) | |
{ | |
var ms = new MemoryStream(byteArray); | |
var returnImage = Image.FromStream(ms); | |
return returnImage; | |
} | |
public static byte[] ImageToByteArray(this Image image) | |
{ | |
var ms = new MemoryStream(); | |
image.Save(ms, ImageFormat.Jpeg); | |
return ms.ToArray(); | |
} | |
} | |
public class MemoryStreamList : List<MemoryStream> | |
{ | |
public Stream CreateStream(string name, string extension, Encoding encoding, string mimeType) | |
{ | |
var m = new MemoryStream(); | |
this.Add(m); | |
return m; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment