🔥 Apps, books, system as a service, podcast and more



Download de PDF usando Buffer


Caro(a) Leitor(a), gostaria de falar hoje sobre como fazer download de PDF usando buffer sem mostrar o caminho ao usuário final pelo browser. São poucas linhas que precisam ser escritas, só é necessário prestar atenção no funcionamento e na ideia.

Usado no artigo:
Linguagem C#
Ferramenta de desenvolvimento Visual Studio 2012
Tipo da aplicação Web: ASP.NET.

A ideia principal é bem simples. O usuário clica na imagem para fazer download do arquivo em PDF já criado e armazenado em algum local dentro do servidor web. Lembrando que o usuário não pode saber o endereço do arquivo, deve apenas pegar o arquivo aparecendo no “browser”.

O primeiro passo é: a imagem que o usuário final clica com o mouse deve ser do tipo ImageButton (componente da ferramenta Visual Studio 2012). A listagem 1 mostra o exemplo.

Listagem 1 – Código da ImageButton

<asp:ImageButton_ ID="imgEdicao06"_ CssClass="image"_ Width="220"_

BorderWidth="1px" runat="server" ImageUrl="capas/capa-201206.png"

AlternateText="Magazine" ToolTip="Edição 05 - Magazine" OnClick="imgEdicao06_Click"/>

Esse componente (Listagem 1) mostra a imagem no atributo ImageUrl e ao clicar na imagem, o evento acionado é o OnClick. Esse evento chama a classe de C# para fazer download. 

Caso queira fazer uma contagem de quantos cliques as pessoas estão dando, é melhor colocar alguma regra antes do download, mas isso é uma regra mais específica. Eu mesmo coloquei um sistema de contador para saber quantos cliques estão dando para fazer download. 

O segundo passo é: como o endereço do PDF está gravado dentro do banco de dados, preciso pegar o endereço para que o buffer seja feito. Neste momento, não vou mostrar como se conectar no banco de dados e fazer um select para pegar a informação, existem vários outros artigos no site www.ecode10.com que mostram como fazer isso.

O retorno dos dados estão dentro de um DataSet ou DataTable, você escolha o que é melhor pra você. A listagem 2 mostra como fazer o buffer.

Listagem 2 – Fazendo o buffer para download do PDF.

//pegando a string de do pdf

string pdfPath = dtSet.Tables[0].Rows[0][0].ToString();

 

//criando uma variável para download – componente WebClient()

WebClient client = new WebClient();

 

//fazendo download do pdf pelo endereço pego anteriormente

Byte[] buffer = client.DownloadData(pdfPath);

 

Response.ContentType = "application/pdf";

Response.AddHeader("content-length", buffer.Length.ToString());

 

//escrevendo o buffer na tela do usuário, onde aparece o PDF

Response.BinaryWrite(buffer);


Note-se que cada linha da listagem 2 explica de maneira rápida o que faz. O componente utilizado para download é o WebClient da ferramenta Visual Studio 2012. O conteúdo que precisa ser mostrado é o Application/PDF por isso que no final o que é gerado na tela é o PDF sem mostrar o endereço. 

Na Url mostra apenas o nome da página onde o usuário estava antes. Um exemplo típico disso é o download da revista eCode10 Magazine no site www.ecode10.com. Espero que tenha gostado e qualquer dúvida pode entrar em contato pelo site pessoal www.mauriciojunior.org

Sign up to our newsletter

Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.

Top