none
Como Crear pdf en asp.ne c# marca error al abrirlo RRS feed

  • Pregunta

  • Buenos dias:

    Actualmente tengo mi codigo asi, en realidad nunca he echo un pdf en asp.net, pero vi un ejemplo y asi lo tengo, y si me crea mi pdf en la carpeta con el folio, pero al abrirlo marca error que esta dañado, agradeceria si ven el error en el codigo, gracias.

     
        public void GenerarPDF(string folio)
        {
            try
            {
                Document pdfReport = new Document(PageSize.LETTER, 25, 25, 40, 25);
                PdfWriter writer;
                if (!Directory.Exists(@"c:\pdf"))
                    Directory.CreateDirectory(@"c:\pdf");
                string constring = @"Data Source=189...;Initial Catalog=....;User ID=sa;pwd=...;";
                SqlConnection con = new SqlConnection(constring);
              
            
                SqlDataAdapter daInter = new SqlDataAdapter("Select folio,marca FROM producto WHERE folio='" + folio + "'  ", con);
             
          DataTable t = new DataTable();
          daInter.Fill(t);
                
                  if (t.Rows.Count > 0)
                   {
                    writer = PdfWriter.GetInstance(pdfReport, new FileStream("C:\\pdf\\" + folio + ".pdf", FileMode.Create, FileAccess.Write, FileShare.None));
                    pdfReport.AddTitle("producto- producto: " + folio);
                    pdfReport.AddCreationDate();producto");
                    pdfReport.AddCreator("web");
                    pdfReport.AddSubject("producto");
                    //Se Abre para editarlo
                     
                    pdfReport.Open();
                    //Cr5eamos los tipos de Letras y estilos a Usar
                    PdfContentByte cb = writer.DirectContent;
                    BaseFont bfItalic = BaseFont.CreateFont(BaseFont.HELVETICA_OBLIQUE, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
                    BaseFont bfItalic2 = BaseFont.CreateFont(BaseFont.HELVETICA_BOLDOBLIQUE, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
                    BaseFont bfBold = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
                    BaseFont bfNormal = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
                    cb.BeginText();
                  
                    cb.SetColorFill(iTextSharp.text.BaseColor.BLACK);//COlor Letra
                 
                    cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, folio, 390, 680, 0);
                    cb.SetColorFill(iTextSharp.text.BaseColor.BLACK);//COlor Letra
                    //DATOS DIRECCION
                    cb.SetFontAndSize(bfBold, 18);
                    cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, "producto", 410, 750, 0);
                    pdfReport.Close();//Cierra el PDF   

               }
                }
                catch (System.Exception err)
                {
                    // pdfReport.Close();//Cualquier error cierro el PDF
                    Response.Write("error");
                }
            }




    martes, 25 de octubre de 2016 14:44

Respuestas

  • Amigo, hola....esto hago yo.

    saveFileDialog1.FileName = "Informe Ventas Sushi"; saveFileDialog1.OverwritePrompt = true; saveFileDialog1.InitialDirectory = "C:\\Users\\" + Environment.UserName + "\\Desktop\\"; saveFileDialog1.Filter = "PDF Files (*.pdf)|*.pdf|All Files (*.*)|*.*"; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { Document document = new Document(PageSize.LETTER.Rotate(), 50, 50, 25, 25); PdfWriter.GetInstance(document, new FileStream(saveFileDialog1.FileName, FileMode.Create)); document.Open(); Paragraph parrafo1 = new Paragraph(); parrafo1.Alignment = Element.ALIGN_CENTER; parrafo1.Font = FontFactory.GetFont("Verdana", 24); parrafo1.Add(" Informe Ventas Sushi \n"); document.Add(parrafo1); PdfPTable table = new PdfPTable(6); //actual width of table in points table.TotalWidth = 600f; //fix the absolute width of the table table.LockedWidth = true; table.AddCell(new Paragraph("Código venta")); table.AddCell(new Paragraph("Fecha de venta")); table.AddCell(new Paragraph("Vendedor")); table.AddCell(new Paragraph("Tipo de pago")); table.AddCell(new Paragraph("Monto total")); table.AddCell(new Paragraph("Nombre producto")); float[] widths = new float[] { 100f, 100f, 100f, 100f, 100f, 100f }; table.SetWidths(widths); table.HorizontalAlignment = 0; table.SpacingBefore = 20f; table.SpacingAfter = 30f; var t = new ventaDAL().verVentasPDF(Sesion.negocio);

    //para agregar una tabla dentro del pdf foreach (DataRow item in t.Rows) { table.AddCell(item["Código venta"].ToString()); table.AddCell(item["Fecha de venta"].ToString()); table.AddCell(item["venta hecha por"].ToString()); table.AddCell(item["tipo de pago"].ToString()); table.AddCell(item["Monto total"].ToString()); table.AddCell(item["Nombre producto"].ToString()); } document.Add(table); document.AddAuthor(Sesion.nombreVendedor); document.Close(); Process prc = new Process(); prc.StartInfo.FileName = saveFileDialog1.FileName; prc.Start(); MessageBox.Show("Se ha creado el reporte correctamente.", "ARCHIVO CREADO", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); }


    mando una ventana en donde se va a guardar el reporte en pdf....

    Saludos

    martes, 25 de octubre de 2016 15:29

Todas las respuestas

  • Amigo, hola....esto hago yo.

    saveFileDialog1.FileName = "Informe Ventas Sushi"; saveFileDialog1.OverwritePrompt = true; saveFileDialog1.InitialDirectory = "C:\\Users\\" + Environment.UserName + "\\Desktop\\"; saveFileDialog1.Filter = "PDF Files (*.pdf)|*.pdf|All Files (*.*)|*.*"; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { Document document = new Document(PageSize.LETTER.Rotate(), 50, 50, 25, 25); PdfWriter.GetInstance(document, new FileStream(saveFileDialog1.FileName, FileMode.Create)); document.Open(); Paragraph parrafo1 = new Paragraph(); parrafo1.Alignment = Element.ALIGN_CENTER; parrafo1.Font = FontFactory.GetFont("Verdana", 24); parrafo1.Add(" Informe Ventas Sushi \n"); document.Add(parrafo1); PdfPTable table = new PdfPTable(6); //actual width of table in points table.TotalWidth = 600f; //fix the absolute width of the table table.LockedWidth = true; table.AddCell(new Paragraph("Código venta")); table.AddCell(new Paragraph("Fecha de venta")); table.AddCell(new Paragraph("Vendedor")); table.AddCell(new Paragraph("Tipo de pago")); table.AddCell(new Paragraph("Monto total")); table.AddCell(new Paragraph("Nombre producto")); float[] widths = new float[] { 100f, 100f, 100f, 100f, 100f, 100f }; table.SetWidths(widths); table.HorizontalAlignment = 0; table.SpacingBefore = 20f; table.SpacingAfter = 30f; var t = new ventaDAL().verVentasPDF(Sesion.negocio);

    //para agregar una tabla dentro del pdf foreach (DataRow item in t.Rows) { table.AddCell(item["Código venta"].ToString()); table.AddCell(item["Fecha de venta"].ToString()); table.AddCell(item["venta hecha por"].ToString()); table.AddCell(item["tipo de pago"].ToString()); table.AddCell(item["Monto total"].ToString()); table.AddCell(item["Nombre producto"].ToString()); } document.Add(table); document.AddAuthor(Sesion.nombreVendedor); document.Close(); Process prc = new Process(); prc.StartInfo.FileName = saveFileDialog1.FileName; prc.Start(); MessageBox.Show("Se ha creado el reporte correctamente.", "ARCHIVO CREADO", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); }


    mando una ventana en donde se va a guardar el reporte en pdf....

    Saludos

    martes, 25 de octubre de 2016 15:29
  • gracias
    martes, 25 de octubre de 2016 15:45
  • Alguien sabe porque lo crea mal???
    martes, 25 de octubre de 2016 15:47
  • algina ayuda, por favor
    martes, 25 de octubre de 2016 17:58
  • Amigo/a...el código que puse yo no manda error...podrías seguir esa estructura adaptada a tu necesidad....luego de preguntar donde vas a guardar el archivo, se crea, manda el mensaje de creación ok y luego con el process abro el archivo...funciona perfecto..

    saludos

    miércoles, 26 de octubre de 2016 13:13