Array
(
)

Screeshot do conteudo de um iframe Asp. Net

Lucas Higor
   - 26 out 2012

Fala Pessoal boa noite.
estou precisando tirar um screeshot do conteúdo de um iframe,pois bem consseguir tirar um screen shot da tela no tamanho do iframe e gravalo na maquila até ai tudo bem, o unico problema é a posição do print. pois o broswer conta como ponto 0,0 o inicio do HTML mas o Grfics usa como 0,0 o inicio da tela então ao inves do print começar no inicio do HTML ele inicia no inicio da tela.

Citação:

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.Web.UI.HtmlControls;
namespace ProjetoEquipeDeTeste
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
private void Tirar_Print()
{
System.Drawing.Rectangle r = new System.Drawing.Rectangle();
//essas são as posições de X e Y, mas levam como parametro a screen completa a tela
//Valores colocados a mão como gabiarra
r.X = 9;
r.Y = 129;
//iframe.Attributes["Height"].ToString() Retorna o Tamanho do Height dele mesmo
string a = iframe.Attributes["Height"].ToString();

//Coloca o tamanho do iframe como tamanho do retangulo. Ps o "a" esta como "540px" por isso o Substring
r.Height = int.Parse(a.Substring(0, a.Length - 2));
a = iframe.Attributes["Width"].ToString();
r.Width = int.Parse(a.Substring(0, a.Length - 2));
//Cria um bitmap
Bitmap b = new Bitmap(r.Width, r.Height);
Graphics gfx = Graphics.FromImage(b);
//Tira o Print
gfx.CopyFromScreen(r.X, r.Y, 0, 0, r.Size, CopyPixelOperation.SourceCopy);
gfx.Dispose();

//Salva na pasta Imagens no servidor
MemoryStream stream = new MemoryStream();
b.Save(stream, ImageFormat.Jpeg);
String saveImagePath = Server.MapPath("Imagens/") + "aaa.jpg";
b.Save(saveImagePath);
}

protected void Button1_Click(object sender, EventArgs e)
{
try
{
Tirar_Print();
txtPasso.Text = Convert.ToString(int.Parse(txtPasso.Text) + 1);
}
catch (Exception ex)
{

}
}
}
}

Vlw Pessoal