Пример #1
0
        private RectangleF RenderTableRow(Font font, Font hdrFont, RectangleF rcPage, RectangleF rc, string[] fields, DataRow dr)
        {
            // calculate cell width (same for all columns)
            RectangleF rcCell = rc;

            rcCell.Width  = rc.Width / fields.Length;
            rcCell.Height = 0;

            // calculate cell height (max of all columns)
            rcCell.Inflate(-4, 0);
            foreach (string field in fields)
            {
                string text   = dr[field].ToString();
                float  height = PdfCotizacion.MeasureString(text, font, rcCell.Width).Height;
                rcCell.Height = Math.Max(rcCell.Height, height);
            }
            rcCell.Inflate(4, 0);

            // break page if we have to
            if (rcCell.Bottom > rcPage.Bottom)
            {
                PdfCotizacion.NewPage();
                rc       = RenderTableHeader(hdrFont, rcPage, fields);
                rcCell.Y = rc.Y;
            }

            // center vertically just to show how
            StringFormat sf = new StringFormat();

            sf.LineAlignment = StringAlignment.Near;

            // render data cells
            Pen pen = new Pen(Brushes.Blue, 0.1f);

            foreach (string field in fields)
            {
                // get content
                string text = dr[field].ToString();

                // set horizontal alignment
                double d;
                sf.Alignment = (double.TryParse(text, NumberStyles.Any, CultureInfo.CurrentCulture, out d))
                    ? StringAlignment.Near
                    : StringAlignment.Near;

                // render cell
                PdfCotizacion.DrawRectangle(pen, rcCell);
                rcCell.Inflate(-4, 0);
                PdfCotizacion.DrawString(text, font, Brushes.Black, rcCell, sf);
                rcCell.Inflate(4, 0);
                rcCell.Offset(rcCell.Width, 0);
            }
            pen.Dispose();

            // update rectangle and return it
            rc.Offset(0, rcCell.Height);
            return(rc);
        }
Пример #2
0
        public void CrearPdf()
        {
            try
            {
                Cursor = Cursors.WaitCursor;

                if (tdbgCotizacion.RowCount == 0)
                {
                    Cursor = Cursors.Default;
                    return;
                }

                if (CbProveedor.SelectedValue == null)
                {
                    MessageBox.Show("Seleccione el Proveedor.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    Cursor = Cursors.Default;
                    return;
                }
                dtCotizacion.AcceptChanges();

                DataView dvProveedor = new DataView(dtProveedor);
                dvProveedor.RowFilter = "IDProveedor='" + CbProveedor.SelectedValue + "'";
                string EmailProveedor = Convert.ToString(dvProveedor[0][2]);
                string NomProveedor   = Convert.ToString(dvProveedor[0][1]);
                //create pdf document
                this.PdfCotizacion.Clear();
                this.PdfCotizacion.DocumentInfo.Title = "COTIZACIÓN";

                //calculate page rect (discounting margins)
                RectangleF rcPage = GetPageRect();
                RectangleF rc     = rcPage;

                Image     img = Properties.Resources.HalleyLogo;
                Rectangle RC  = new Rectangle(30, 12, 160, 44);
                PdfCotizacion.DrawImage(img, RC);
                PdfCotizacion.DrawRectangle(Pens.White, RC);

                // add title
                Font titleFont   = new Font("Tahoma", 20, FontStyle.Regular);
                Font detalleFont = new Font("Tahoma", 15, FontStyle.Regular);

                rc = RenderParagraph(PdfCotizacion.DocumentInfo.Title, titleFont, rcPage, rc, false, 3);
                RenderParagraph("Proveedor : " + NomProveedor, detalleFont, rcPage, rc, false, 3);
                rc = RenderParagraph("Comprador : " + AppSettings.ApeNom_Login, detalleFont, rcPage, rc, false, 2);


                rc = RenderTable(rc, rcPage, dtCotizacion, "ProductoID", "Descripcion", "UM", "CantidadSolicitada");

                // second pass to number pages
                AddFooters();

                //enviar correo
                string NomArchivo = AppSettings.EmpresaID + "COTIZACION.pdf";
                string fileName   = "\\\\192.168.1.21\\cotizacion\\" + NomArchivo;
                this.PdfCotizacion.Save(fileName);
                string ruta = "D:\\COTIZACION\\" + NomArchivo;

                string Asunto  = "COTIZACIÓN " + AppSettings.NomEmpresa;
                string Mensaje = "Deseo que me cotizé los siguientes productos.\nAdjuntado en el pdf.\n\nREMITIR A: " + AppSettings.UserEmail;
                new CL_Helper().SendMail(Asunto, Mensaje, EmailProveedor, AppSettings.UserEmail, ruta);
                MessageBox.Show("Se envió la cotización correctamente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                dtCotizacion.Rows.Clear();
                this.tdbgCotizacion.SetDataBinding(dtCotizacion, "", true);

                Get_Requerimientos(AppSettings.EmpresaID);
                //Process.Start(fileName);

                Cursor = Cursors.Default;
            }
            catch (Exception ex)
            {
                Cursor = Cursors.Default;
                MessageBox.Show(ex.Message, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }