none
Guardar archivo pdf HtmlToPdfConverter RRS feed

  • Pregunta

  • Buenas,

    tengo un problemilla haber si alguien me puede ayudar. 

    Resulta que tengo metido en un foreach la creación de un código html para crear unas facturas. Cuando tengo todo ese codigo lo quiero pasar a pdf y guardar el archivo. Si tengo varias facturas que crear solo me crea una factura y se me queda como atascado. 

    El código que uso que encontre es este:

    HtmlToPdfConverter pdfConverter = new HtmlToPdfConverter();

    var pdfBytes = pdfConverter.GeneratePdf(htmlTotal);

    Response.Clear();
    MemoryStream ms = new MemoryStream(pdfBytes);
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "");
    FileStream outStream = File.OpenWrite(ruta);
    ms.WriteTo(outStream);
    outStream.Flush();
    outStream.Close();
    ms.Close();
    Response.End();

    Gracias por la ayuda

    jueves, 12 de marzo de 2015 13:32

Respuestas

  • >>Es que lo que quería era guardar las diferentes facturas creadas

    entonces vas a tener que grabarlas fisicamente en una carpeta y darle al usuario los link de descarga de cada documento

    el Response solo tiene una salida si en cada loop pisas la asignacion quedara la ultima

    >>¿Hay alguna forma de que el código html pase a pdf y sean en distintos pdf?

    si lo grabas a un archivo fisico si

    entiendo que pdfBytes  es un byte[] por lo que podrias usar el

    File.WriteallBytes("ruta", pdfBytes );

    para grabar cada pdf

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Agmaza jueves, 12 de marzo de 2015 15:00
    jueves, 12 de marzo de 2015 13:52

Todas las respuestas

  • >>Si tengo varias facturas que crear solo me crea una factura y se me queda como atascado.

    es que el codigo que usas solo asigna una sola salida en el Response, y es obvio que sera la ultima la que quede asignada

    si tienes varias salidas deberias generar los pdf, unirlos en un unico pdf y luego ese envialro en el Response

    el Response no deberia estar NUNCA dentro del foreach

    //aqui creas un pdf donde uniras las facturas que generes dentro del foreach
    Document pdfDoc =  ....
    
    foreach(...)
    {
    
    	HtmlToPdfConverter pdfConverter = new HtmlToPdfConverter();
    
    	var pdfBytes = pdfConverter.GeneratePdf(htmlTotal);
    
      //aqui haces el merge a un pdf
    
    }
    
    Response.Clear();
    MemoryStream ms = new MemoryStream(...); //asignas el pdfDoc
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "");
    FileStream outStream = File.OpenWrite(ruta);
    ms.WriteTo(outStream);
    outStream.Flush();
    outStream.Close();
    ms.Close();
    Response.End();

    Merging multiple PDFs using iTextSharp in asp.net c#

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    jueves, 12 de marzo de 2015 13:40
  • Osea que con el foreach no puedo meter el response. Es que lo que quería era guardar las diferentes facturas creadas. No en una todas juntas. 

    ¿Hay alguna forma de que el código html pase a pdf y sean en distintos pdf?

    jueves, 12 de marzo de 2015 13:45
  • >>Es que lo que quería era guardar las diferentes facturas creadas

    entonces vas a tener que grabarlas fisicamente en una carpeta y darle al usuario los link de descarga de cada documento

    el Response solo tiene una salida si en cada loop pisas la asignacion quedara la ultima

    >>¿Hay alguna forma de que el código html pase a pdf y sean en distintos pdf?

    si lo grabas a un archivo fisico si

    entiendo que pdfBytes  es un byte[] por lo que podrias usar el

    File.WriteallBytes("ruta", pdfBytes );

    para grabar cada pdf

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Agmaza jueves, 12 de marzo de 2015 15:00
    jueves, 12 de marzo de 2015 13:52
  • Vale muchas gracias voy a probarlo.
    jueves, 12 de marzo de 2015 13:54
  • Muchas gracias ya lo consegui como me dijiste.

    Saludos

    jueves, 12 de marzo de 2015 15:01