Saltar al contenido

Mostrar el byte pdf generado por ASP.NET[] a la página web sin guardar el archivo

Solución:

Probé esto en jsFiddle, y funciona bien en Chrome y FF, también necesito verificar en otros navegadores.

Convierta el byte[] para Base64 utilizando,

string base64PDF = System.Convert.ToBase64String(outputPDF, 0, outputPDF.Length);

Todo lo que tenía que hacer era especificar el MIME type como data:application/pdf;base64, en la fuente y dar la Base64 versión de la PDF.

<object data="https://foroayuda.es/data:application/pdf;base64, JVBERi0xLjQKJeLjz9MKMyA..." type="application/pdf" width="160px">
    <embed src="https://foroayuda.es/data:application/pdf;base64, JVBERi0xLjQKJeLjz9MKMyA..." type="application/pdf" />
</object>

No pude ocultar la barra de herramientas superior que aparece en FF agregando #toolbar=0&navpanes=0&statusbar=0.

IE8 necesita que se muestre un archivo pdf guardado.

Prueba esto

Response.ContentType = "application/pdf";
Response.AddHeader("content-length", outputPDF.Length.ToString());
Response.BinaryWrite(outputPDF);

He estado usando Convert.ToBase64String(content) para algunos proyectos sin ningún problema, hasta hoy con un archivo de 18 páginas de aproximadamente 1 MB. El error de la consola de Chrome es Failed to load resource: net::ERR_INVALID_URL. ¡¿Supongo que es por el tamaño de la cuerda ?!

Terminé usando la API web y la devolví como FileStreamResult en lugar de la cadena Base64.

var stream = new MemoryStream();
await stream.WriteAsync(content, 0, content.Length);
stream.Position = 0;
return new FileStreamResult(stream, "application/pdf");

Actualización: es básicamente lo mismo mostrarlo en una página de afeitar. Acabo de copiar mi código para recuperar contenido de fax usando RingCentral aquí. Y mejor aún, solo usa FileContentResult como ya tienes el byte[].

public async Task<IActionResult> OnGet(string messageId)
{
    try
    {
        using (var rc = new RingCentral.RestClient(setting.ClientId, setting.ClientSecret, setting.Production, "Fax"))
        {
            await rc.Authorize(setting.UserName, setting.Extension, setting.Password);
            var extension = rc.Restapi().Account().Extension();
            var outputPDF = await extension.MessageStore(messageId).Content(messageId).Get();

            return new FileContentResult(outputPDF, "application/pdf");
        }
        return Page();
    }
    catch (Exception ex)
    {
        _logger.Error(ex.Message);
        throw;
    }
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *