Exibindo PDF em browser utilizando ASP.NET

Crie um novo projeto do tipo " ASP.NET Empty Web Application ".

Referencie a NFeX.dll no projeto para que possamos utilizar o método ExportarDanfe. Para isso vá em Project -> Add Reference -> clique em Browse -> procure pela NFeX.dll e clique em Add.

Usings necessárias :

 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.IO;
using System.Net;
using System.Text; 

Instanciando as variáveis utilizadas:

Implemente a função LerArquivo onde seu retorno será do tipo String que conterá o conteúdo do XML armazenado em disco. Utilizaremos esse retorno para alimentar o método ExportarDanfe.

 
private string LerArquivo() //Aqui fazemos a captura do conteúdo do xml.
{
	string xml = AppDomain.CurrentDomain.BaseDirectory + @"Impressao\" + txtChave.Text + "-nfe.xml";    //Pasta onde estão os xmls.
	return xDoc.InnerXml;
} 

Implemente a função ExibirPDF onde seu retorno será do tipo Void, está função será responsável por abrir o arquivo PDF em seu browser do lado Client.

 private void ExibirPDF() 
{    
	//Este método faz com que a impressão apareça na tela de quem está exportando. 
	//Caso queira que apareça em outra página, basta usar o código abaixo no load de uma outra página em branco.   
	string pdfPath = Server.MapPath(@"\Impressao\" + txtChave.Text + ".pdf"); WebClient client = new WebClient(); Byte[] buffer = client.DownloadData(pdfPath); 
	Response.ContentType = "application/pdf"; Response.AddHeader("content-length", buffer.Length.ToString()); Response.BinaryWrite(buffer); 
} 

Segue o código do TextBox e Button que utilizaremos para testar:

 <%@ Page Language="C#" AutoEventWireup="true" Async="true" CodeBehind="Exemplo.aspx.cs" Inherits="ExportarNFe.Exemplo" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
	<title>Teste Tecnospeed</title>
</head>
<body>
	<form id="form1" runat="server">
		<div>
			<asp:TextBox ID="txtChave" runat="server" Width="435px">Chave para exportar.</asp:TextBox>
			<asp:Button ID="btnExportar" runat="server" Text="Exportar" OnClick="btnExportar_Click" />
		</div>
	</form>
</body>
</html> 

No evento OnClick do botão btnExportar implemente o seguinte código:

 protected async void btnExportar_Click(object sender, EventArgs e)
{
	nfe.ExportarDanfe("00001", LerArquivo(), AppDomain.CurrentDomain.BaseDirectory + @"templates\vm50a\Danfe\retrato.rtm", 1, Server.MapPath(@"\Impressao\" + txtChave.Text + ".pdf")); 
	//Server.MapPath(@"\Impressao\" + txtChave.Text + ".pdf") Pasta do servidor onde vai salvar o xml para depois o cliente visualizar.
	ExibirPDF();
} 

Execute o projeto e adicione o número da chave do xml que está na pasta que configuramos dentro da função LerArquivo.

Feito isso o PDF é exibido na página atual dessa forma :


https://tsdn.tecnospeed.com.br/files/render/a/9f_4g5bCC5s/m/2Aal0HUq8Wc-9TMgc_r7RJn3T2-CMeUP3MswzVDSA9cmhjYDjfOMWmOelm23wjSBUqNVKgKPb30