Skip to content

Instantly share code, notes, and snippets.

@janosorcsik
Last active September 12, 2018 09:20
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save janosorcsik/5ab65371b00f203935f6 to your computer and use it in GitHub Desktop.
Save janosorcsik/5ab65371b00f203935f6 to your computer and use it in GitHub Desktop.
Telerik Report Helper
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