Foros del Web » Programando para Internet » ASPX (.net) »

Generar pdf desde aspx

Estas en el tema de Generar pdf desde aspx en el foro de ASPX (.net) en Foros del Web. Hola, necesito crear un pdf desde un aspx dinámico. Es decir tengo una factura, realizada con aspx + css, con datos del servidor, y lo ...
  #1 (permalink)  
Antiguo 06/11/2014, 06:06
 
Fecha de Ingreso: mayo-2014
Mensajes: 13
Antigüedad: 10 años
Puntos: 0
Pregunta Generar pdf desde aspx

Hola, necesito crear un pdf desde un aspx dinámico.

Es decir tengo una factura, realizada con aspx + css, con datos del servidor, y lo muestro en el cliente desde el navegador, ahora lo que quiero es de esa página, cuando se pulse un botón, generar un pdf que sea guardado en el servidor, para futuras consultas.

Espero les haya quedado claro lo que necesito y puedan ayudarme.

Un saludo.
  #2 (permalink)  
Antiguo 06/11/2014, 09:55
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Generar pdf desde aspx

Has probado con iTextSharp?
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 07/11/2014, 02:28
 
Fecha de Ingreso: mayo-2014
Mensajes: 13
Antigüedad: 10 años
Puntos: 0
Respuesta: Generar pdf desde aspx

Cita:
Iniciado por Malenko Ver Mensaje
Has probado con [URL="http://sourceforge.net/projects/itextsharp/"]iTextSharp[/URL]?
Todo lo que he visto iTextSharp es para generarlo desde cero y con tablas, pero yo ya lo tengo generado.

Si hay alguna forma de hacerlo que yo no haya encontrado con iTextSharp, me podrian ayudar?
  #4 (permalink)  
Antiguo 11/11/2014, 00:49
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 5 meses
Puntos: 37
Respuesta: Generar pdf desde aspx

Si el PDF tiene campos editables con los "acrofields" del iTextsharp puedes llenar el pdf (usarlo como plantilla).
  #5 (permalink)  
Antiguo 13/11/2014, 05:46
 
Fecha de Ingreso: mayo-2014
Mensajes: 13
Antigüedad: 10 años
Puntos: 0
Respuesta: Generar pdf desde aspx

No tiene campos editables.

Yo genero una factura que se muestra por pantalla en el navegador, tiene estilo css. Hasta ahora solo se visualizaba en el navegador, ahora lo que quiero es que al pinchar en un botón, genere un pdf que no sera visto, si no que lo guardara en el servidor, para más adelante enviarlo por correo.

No se si me he explicado bien.

Un saludo.
  #6 (permalink)  
Antiguo 14/11/2014, 11:15
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 19 años
Puntos: 16
Respuesta: Generar pdf desde aspx

Buenas compañero,

Una pregunta, porqué no guardas los datos de ese presupuesto en vez del pdf¿?
Para generar los pdf's en mi proyecto usamos XSLT, creo que te podría venir bien ya sea para una u otra cosa...


Un saludo!
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #7 (permalink)  
Antiguo 14/11/2014, 18:47
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 5 meses
Puntos: 37
Respuesta: Generar pdf desde aspx

En mi caso yo descargue el "IBM Lotus Symphony" que es gratuito, cree un documento nuevo (.odt), hice mas o menos el diseño y le puse campos editables, lo exporte como .PDF y desde el .net pude cargarlos con acrofields del itextSharp.
  #8 (permalink)  
Antiguo 19/11/2014, 22:57
Avatar de Grost  
Fecha de Ingreso: enero-2014
Ubicación: Guatemala
Mensajes: 25
Antigüedad: 10 años, 3 meses
Puntos: 1
Respuesta: Generar pdf desde aspx

Yo utilizo el control de google: wkhtmltopdf
este me ha servido muy bien.

Este es el link para descargarlo es gratuito: http://wkhtmltopdf.org/downloads.html

Este es el código que yo utilizo en una clase para exportar mi página web a PDF

Este es el código del botón de la página desde ejecuto la clase que contiene la funcionalidad de la exportación a PDF de la página ASPX

Código:
 protected void btnExportarPDF_Click(object sender, EventArgs e)
    {
        string URL_EXPORT_PDF = ConfigurationManager.AppSettings["URL_EXPORTAR_PDF"];
        exportarPDF pdf = new exportarPDF();
        byte[] fileContent = pdf.GeneratePDFFile(URL_EXPORT_PDF + "?parametro=" + hdfDataKey.Value.ToString(), "C:\\PDF", Server.MapPath("~/PDFConverter"));


        if (fileContent != null)
        {
            Response.Clear();
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-length", fileContent.Length.ToString());
            if (Request.QueryString["attachment"] == null)
            {
                Response.AddHeader("content-disposition", "attachment; filename = detalleEvaluacion.pdf");
            }
            else
            {
                Response.AddHeader("content-disposition", "inline; filename = detalleEvaluacion.pdf");
            }


            Response.BinaryWrite(fileContent);
            Response.End();
        }
    }


Esta es la clase que utilizo para ejecutar la exportación a PDF y abrir el mismo archivo en el navegador.

Código:
    public byte[] GeneratePDFFile(string url, string salida, string ejecutable)
    {
        //url of the page we would wanto convert.
        //we dont need to hard code this URL if we want to export current page
        //we could prepare the URL by using HTTPRequest object oo
        //string url = @"http://localhost:54630/PageExportPDF.aspx";
        //string url = Request.Url.AbsoluteUri;

        //output PDF file Path
        string filepath = Path.Combine(salida, "NOMBRE_REPORTE.pdf");

        //variable to store pdf file content
        byte[] fileContent = null;

        System.Diagnostics.Process process = new System.Diagnostics.Process();
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.CreateNoWindow = true;

        //set the executable location
        process.StartInfo.FileName = Path.Combine(ejecutable, "wkhtmltopdf.exe");
        //set the arguments to the exectuable
        // wkhtmltopdf [OPTIONS]... <input fileContent> [More input fileContents] <output fileContent>
        process.StartInfo.Arguments = url + " " + filepath;
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.RedirectStandardError = true;
        process.StartInfo.RedirectStandardInput = true;
        //run the executable
        process.Start();

        //wait until the conversion is done
        process.WaitForExit();

        // read the exit code, close process    
        int returnCode = process.ExitCode;
        process.Close();

        //initialize the filestream with filepath
        FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read);
        fileContent = new byte[(int)fs.Length];

        //read the content
        fs.Read(fileContent, 0, (int)fs.Length);

        //close the stream
        fs.Close();

        return fileContent;

    }
Espero te pueda servir y si tienes alguna duda puedes dejarme un mensaje o escribir en el historial de este post.

Etiquetas: aspx, css, dinamico, pdf
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:25.