domingo, 29 de abril de 2012
ASP.NET - PRINT SCREEN DE UMA PÁGINA ASP.NET
Recentemente, deparei-me com a necessidade de retirar print screen de uma página em ASP.NET em um dado momento via código sem a interação do usuário.
Quem trabalha com o ASP.NET deve saber que todas as páginas visualizadas em um browser na verdade estão sendo executadas dentro do servidor. Então retirar um print screen via código é uma tarefa mais complicada porque a execução do código irá em busca de uma página que está em execução no servidor ASP.NET onde a página se encontra e não realmente no browser ativo no momento.
Minha saída para este problema:
Um aplicativo em separado estaria em execução na máquina cliente onde o browser está em execução.
Esse aplicativo se encarregaria de fazer um print screen da tela ativa salvando na página c:\temp, Em seguida, obteria esta imagem do diretório c:\temp e a salvaria em um arquivo pdf na própria pasta c:\temp.
Quando houvesse a necessidade de realizar um print screen esse pequeno aplicativo seria acionado - executarservico seria setado em 1, fazendo o print screen da tela e gerando a imagem requisitada e salvando-a em arquivo pdf. Este pequeno aplicativo teria um timer que de 15 em 15 segundos verificaria
se o ExecutarServico na tabela está setado em 1 ou não. No momento em que o Executarservico estiver setado em 1 a imagem seria gerada e o arquivo pdf criado.
Utilizei o ASP.NET com o VB.Net para gerar o código.
Os imports associados a isso estão listados abaixo:
Imports System.IO
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Windows.Forms
Para gerar o print screen via código:
'Ler se ExecutarServico está setado em 1
myCommand = New OleDbCommand("select ExecutarServico,linha from Parametros", myConnection)
ds = myCommand.ExecuteReader()
While ds.Read()
sValor = ds.Item("ExecutarServico")
sLinha = ds.Item("Linha")
End While
'Se o valor padrão foi 1, dispara a cópia da imagem
If sValor = "1" Then
'Grava o nome do arquivo com a linha associada ao mesmo
Dim sNomeArquivo = sLinha + "_" + DateTime.Now.ToString("yyMMddhhmmss") + ".jpg"
arquivoWS.WriteLine("Captura de Tela iniciada... " & DateTime.Now)
arquivoWS.Flush()
Try
Dim image As New Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb)
Dim g As Graphics = Graphics.FromImage(image)
g.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy)
image.Save("c:\temp\" + sNomeArquivo, ImageFormat.Jpeg)
Catch ex As Exception
arquivoWS.WriteLine("Erro na Captura de Tela efetuada... " & DateTime.Now)
arquivoWS.Flush()
End Try
End If
Caso um erro ocorra na geração da imagem, o mesmo será gerado no arquivo de log criado.
A geração do arquivo pdf com a imagem criada é mostrado abaixo:
'Recuperar o nome do arquivo de imagem na base de dados
sSQL = "select ExecutarServico,nomearquivo,diretorio from Parametros where linha = '" & sLinhaSelecionada & "' and ROTA = '" & sRotaSelecionada & "' and computador = '" & shostname & "'"
myCommand = New OleDbCommand(sSQL, myConnection)
ds = myCommand.ExecuteReader()
'Recuperar nome e caminho do arquivo na base de dadps
While ds.Read()
sLimpaArquivoJPG = ds.Item("nomearquivo")
sDiretorioArquivo = ds.Item("diretorio")
End While
ds.Close()
'Gerar arquivo PDF com a imagem criada
''Gravar a imagem dentro do arquivo PDF
''baseado em : http://www.dotnetspark.com/kb/1364-add-image-to-pdf-document-using-itextsharp.aspx
Dim imageFilePath As String = sDiretorioArquivo + sLimpaArquivoJPG
Dim test As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(imageFilePath)
'Resize image depend upon your need
'logo.ScaleToFit(280.0F, 260.0F)
test.ScaleToFit(600.0F, 600.0F)
'Give space before image
test.SpacingBefore = 30.0F
'Give some space after the image
test.SpacingAfter = 1.0F
test.Alignment = Element.ALIGN_CENTER
Dim hoje As DateTime = DateTime.Now
Dim arquivoPDF = sLinhaSelecionada & "_" & sRotaSelecionada & "_" & DateTime.Now.ToString("yyMMddhhmmss") & ".pdf"
'Grava o arquivo PDF no modo retrato
Dim doc As New Document(iTextSharp.text.PageSize.A4_LANDSCAPE, 2, 2, 42, 42)
PdfWriter.GetInstance(doc, New FileStream(sDiretorioArquivo + "\" & arquivoPDF, FileMode.Create))
doc.Open()
doc.Add(test)
doc.Close()
Desse modo, teremos um arquivo pdf com a imagem da tela desejada em seu interior.
Sucesso a todos!
quinta-feira, 26 de abril de 2012
CONFIGURANDO IIS PARA O WINDOWS 7
Recentemente, ao trabalhar com o Windows 7 deparei com o problema relativo a se fazer o registro do IIS para o ASP gerando o seguinte erro:
An error has occurred: 0x8007b799
You must have administrative rights on this machine in order to run this tool.
O que ocorre: É necessário um novo tipo de configuração para o Windows 7. Para corrigir esse tipo de erro imediatamente, você precisa desativar o seu nível de UAC :
Start > Control Panel > System and Security > Action Center > Choose Your UAC Level - Set this to Never Notify;
Após alterar o nível, você deve reiniciar o computador e adentrar novamente com usuário e senha.
Após isso, ao tentar novamente registrar o IIS na máquina você terá sucesso:
Além disso, ao tentar se publicar uma página que tenha sido criada no Visual Studio 2010 com o ASP.NET em uma máquina com o Windows 7 será necessário antes de tentar publicar e após registrar o IIS com sucesso instalar o IIS 6 Metabase.
O IIS 6 Metabase pode ser obtido na página da Microsoft.
An error has occurred: 0x8007b799
You must have administrative rights on this machine in order to run this tool.
O que ocorre: É necessário um novo tipo de configuração para o Windows 7. Para corrigir esse tipo de erro imediatamente, você precisa desativar o seu nível de UAC :
Start > Control Panel > System and Security > Action Center > Choose Your UAC Level - Set this to Never Notify;
Após alterar o nível, você deve reiniciar o computador e adentrar novamente com usuário e senha.
Após isso, ao tentar novamente registrar o IIS na máquina você terá sucesso:
Além disso, ao tentar se publicar uma página que tenha sido criada no Visual Studio 2010 com o ASP.NET em uma máquina com o Windows 7 será necessário antes de tentar publicar e após registrar o IIS com sucesso instalar o IIS 6 Metabase.
O IIS 6 Metabase pode ser obtido na página da Microsoft.
DANFE EM VISUAL STUDIO 2010 E CRYSTAL REPORTS 2010
Olá, pessoal!
Venho através desta informar que a DANFE desenvolvida em VB.NET está agora atualizada para a versão mais nova do Visual Studio, o Visual Studio 2010.
Os relatórios da DANFE também foram atualizados para a nova versão do Crystal Reports.
A partir da versão 2010 do Visual Studio o Crystal Reports deixou de ser incluído com a aplicação. Para instalar o Crystal Reports você deve ir até a páginada SAP Bussines e baixar a versão disponível para integração com o Visual Studio 2010:
http://www.businessobjects.com/jump/xi/crvs2010/us2_default.asp
A opção a ser selecionada é a primeira da lista desta página e mostrada abaixo:
SAP Crystal Reports, version for Visual Studio 2010 - Standard
Standard EXE installation package which installs the software into the Visual Studio IDE.
O arquivo possui 295MB de tamanho e deve ser instalado a fim de que você possa criar relatório com o Crystal Reports no Visual Studio 2010.
O site oficial do Visual Studio 2010 é apresentado abaixo:
http://www.microsoft.com/visualstudio/pt-br/home-produtos
A DANFE possui a partir de agora uma função a mais que permite selecionar o modo de impressão da mesma, retrato ou paisagem. As versões antigas somente realizam a impressão em modo retrato e precisavam ter o relatório em Crystal Reports configurado a fim de que a impressão em paisagem pudesse ser possível. Com a nova funcionalidade um relatório no modo paisagem em Crystal Reports foi incluso ao código-fonte a fim de permitir que o mesmo seja impresso em modo paisagem.
Código que faz com que o relatório seja impresso em modo paisagem:
'DESCOMENTAR AQUI PARA VER A DANFE INICIAL 07/11/2010 23:05
'DANFE INICIAL
Dim myRelatorio As New Danfe_paisagem()
'Mudar formato para Paisagem
myRelatorio.PrintOptions.PaperOrientation = PaperOrientation.Landscape myRelatorio.SetDataSource(myDs1)
Me.CrvXml.ReportSource = myRelatorio
Me.CrvXml.Visible = True
Danfe_paisagem(0 é o nome do novo relatório em Crystal Reports para impressão da DANFE em modo de paisagem.
Lembro a todos que o código-fonte desta DANFE continua a ser
comercializado para os que necessitarem disto para o desenvolvimento da
nota fiscal eletrônica.
Também vale ressaltar que a parte de leitura do XML deste aplicativo pode ser utilizado para se obter os dados de qualquer XML de nota fiscal eletrônica a fim de que os mesmos possam ser acrescentados em uma tabela de qualquer base de dados - SQL SERVER, MUSQL, ORACLE, INFORMIX, etc.
Sucesso a todos!!
By
Leonardo Metelys
Desenvolvedor ASP.NET / VB.NET / C#.NET / Delphi
Assinar:
Postagens (Atom)
UM APLICATIVO PARA LEITURA DEVOCIONAL ANUAL DA BIBLIA EM ANDROID
Olá, pessoal! Este novo projeto foi criado em Visual Studio 2019 em C#.Net com o Xamarin. Já está disponível no Google Play para vocês baix...
-
As funções abaixo ajudam na leitura de um arquivo XML da NF-e. Você só precisa fazer a leitura das tags corretas e lançá-las na base de dado...
-
O GLPI é um dos muitos tipos de aplicativos helpdesk free existentes na internet. O fórum do mesmo pode ser encontrado neste link: ...
-
Olá, pessoal! Esse projeto foi criado em 2017 e aprimorado agora em 2018. Foi também criado com o Visual Studio 2015 em C#.NET com o Xa...