none
Generar PDF en WebApi C# RRS feed

  • Pregunta

  • Buen día, tengo una App en angularJs que consume una WebApi Rest .NET C#. Hasta el momento todo bien pero me ha aparecido la necesidad de generar un reporte PDF con unos datos. me nace la siguiente duda.

    1. Ese pdf se debe generar en el cliente???

    2. El Pdf lo debo generar en el backend (Web Api .NET C#) y enviarlo al cliente? (si es asi que tipo de petición uno para enviar el archivo?) aquí usaría itextsharp para generar el PDF

    Gracias.


    • Editado CrissR lunes, 13 de julio de 2015 16:02
    lunes, 13 de julio de 2015 16:02

Respuestas

  • hola

    >>Ese pdf se debe generar en el cliente?

    yo no lo aconsejaria, los datos los tienes en el servidor seria mas practico si es alli donde los generas y despues lo descargas al cliente

    salvo que sea otra aplicacion quien lo genera y el cliente lo sube

    >>El Pdf lo debo generar en el backend (Web Api .NET C#) y enviarlo al cliente?

    es lo que recomendaria

    >>si es asi que tipo de petición uno para enviar el archivo?

    Download file from a ASP.NET Web API method using angularjs

    yo recomendaria veas si hay alguna funcionalidad en jquery para descarga de archivos

    jquery.fileDownload

    >>aquí usaría itextsharp para generar el PDF

    si esa es una bena librerias, o podrias crear un reporte en rdlc y exportar a pdf

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta CrissR lunes, 13 de julio de 2015 16:45
    lunes, 13 de julio de 2015 16:22

Todas las respuestas

  • Hola,

    Para la pregunta no existe un "debe ser así", sin embargo la sugerencia es que sea del lado del servidor, dejarlo en el servidor (en una carpeta) y luego darle al cliente la URL de donde descargarlo (para no generarlo a cada petición por ejemplo, si es que aplica).

    La petición puede ser GET o POST según desees, pero creo le va mejor el GET y las instrucciones para la generación del archivo en el cuerpo del mensaje HTTP.

    Saludos, 

    lunes, 13 de julio de 2015 16:05
  • Hola,

    Para la pregunta no existe un "debe ser así", sin embargo la sugerencia es que sea del lado del servidor, dejarlo en el servidor (en una carpeta) y luego darle al cliente la URL de donde descargarlo (para no generarlo a cada petición por ejemplo, si es que aplica).

    La petición puede ser GET o POST según desees, pero creo le va mejor el GET y las instrucciones para la generación del archivo en el cuerpo del mensaje HTTP.

    Saludos, 

    Hola Rodrigo, lo hare entonces en el servidor, lo que no me queda claro es la parte de llamar al archivo.

    Como lo manejo, actualmente hago un post a la WebApi donde guardo en la db una solicitud y luego muestro el mensaje exitoso.

    Asi funciona de 10, ahora tengo el requerimiento donde solicitan que al registrar, muestre un formato de la solicitud ya diligenciado.

    Entonces al momento de dar click en registrar y enviar el post, debería crear el PDF, la creación no le veo pero, mi duda es, en ese momento donde hice el post y tengo le mensaje de éxito, como llamaría el pdf con GET?

    lunes, 13 de julio de 2015 16:14
  • hola

    >>Ese pdf se debe generar en el cliente?

    yo no lo aconsejaria, los datos los tienes en el servidor seria mas practico si es alli donde los generas y despues lo descargas al cliente

    salvo que sea otra aplicacion quien lo genera y el cliente lo sube

    >>El Pdf lo debo generar en el backend (Web Api .NET C#) y enviarlo al cliente?

    es lo que recomendaria

    >>si es asi que tipo de petición uno para enviar el archivo?

    Download file from a ASP.NET Web API method using angularjs

    yo recomendaria veas si hay alguna funcionalidad en jquery para descarga de archivos

    jquery.fileDownload

    >>aquí usaría itextsharp para generar el PDF

    si esa es una bena librerias, o podrias crear un reporte en rdlc y exportar a pdf

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta CrissR lunes, 13 de julio de 2015 16:45
    lunes, 13 de julio de 2015 16:22
  • hola

    >>Ese pdf se debe generar en el cliente?

    yo no lo aconsejaria, los datos los tienes en el servidor seria mas practico si es alli donde los generas y despues lo descargas al cliente

    salvo que sea otra aplicacion quien lo genera y el cliente lo sube

    >>El Pdf lo debo generar en el backend (Web Api .NET C#) y enviarlo al cliente?

    es lo que recomendaria

    >>si es asi que tipo de petición uno para enviar el archivo?

    Download file from a ASP.NET Web API method using angularjs

    yo recomendaria veas si hay alguna funcionalidad en jquery para descarga de archivos

    jquery.fileDownload

    >>aquí usaría itextsharp para generar el PDF

    si esa es una bena librerias, o podrias crear un reporte en rdlc y exportar a pdf

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    Muchas Gracias Leandro, así lo hare
    lunes, 13 de julio de 2015 16:45
  • Hola, 

    Tengo el mismo problema. Tengo este código en mi Web Api para devolver el fichero:

      [HttpPost]
    public HttpResponseMessage GetFile()
    {
             Request.CreateResponse(HttpStatusCode.BadRequest);
    
                string fileName;
                string localFilePath;
                //int fileSize;
    
                localFilePath = "C:\\Users\\mmm\\Desktop\\Excel\\";
                fileName = "Traducciones.xlsx";
    
                HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
                response.Content = new StreamContent(new FileStream(localFilePath+fileName, FileMode.Open, FileAccess.Read));
                response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
                response.Content.Headers.ContentDisposition.FileName = fileName;
    
                return response;
    }


    El problema es que al intentar consumir el servicio para que se descargue el fichero me devuelve un conjunto de caracteres:

    $.ajax({
          type: "POST",
          url: "http://localhost:48181/api/FacturacionRepresentante/GetFile",
          data: {
           
          },
    success: function(data){ console.log(data)}
    })

    Devuelve un montón de "caracteres raros".

    Lo que necesito es que haga la descarga del fichero en sí, pero no sé cómo solucionarlo.

    Gracias!

    martes, 29 de marzo de 2016 9:52
  • Hola a todos, buenos dias. Hace unos dias que vengo lidiando con este problema y no logro dar en la tecla. Podrian ayudarme a resolver como realizarlo? 

    Les cuento: Arme un rdlc, pero en Web Api Net Core no funciona...Existe alguna opcion para diseñar? Porque lo que me traba es que no encuentro un diseñador de reportes que se pueda usar en Net core. O existe otra manera de resolverlo????

    La verdad estoy re perdido y hace mas de una semana que vengo trabajando con este tema y no logro dar en la tecla...

    Gracias a todos!

    martes, 5 de noviembre de 2019 11:20
  • Hola Cris,

    Veo que es un tema que manejas hace un tiempo...y estoy re perdido...¿ me podrias ayudar?

    Hola a todos, buenos dias. Hace unos dias que vengo lidiando con este problema y no logro dar en la tecla. Podrian ayudarme a resolver como realizarlo? 

    Les cuento: Arme un rdlc, pero en Web Api Net Core no funciona...Existe alguna opcion para diseñar? Porque lo que me traba es que no encuentro un diseñador de reportes que se pueda usar en Net core. O existe otra manera de resolverlo????

    La verdad estoy re perdido y hace mas de una semana que vengo trabajando con este tema y no logro dar en la tecla...

    martes, 5 de noviembre de 2019 11:22