Esempio n. 1
0
        internal RectangleF RenderParagraph(string text, Font font, RectangleF rcPage, RectangleF rc, bool outline, bool linkTarget)
        {
            // if it won't fit this page, do a page break
            rc.Height = _c1pdf.MeasureString(text, font, rc.Width).Height;
            if (rc.Bottom > rcPage.Bottom)
            {
                _c1pdf.NewPage();
                rc.Y = rcPage.Top;
            }

            // draw the string
            _c1pdf.DrawString(text, font, Brushes.Black, rc);

            // add headings to outline
            if (outline)
            {
                _c1pdf.DrawLine(Pens.Black, rc.X, rc.Y, rc.Right, rc.Y);
                _c1pdf.AddBookmark(text, 0, rc.Y);
            }

            // add link target
            if (linkTarget)
            {
                _c1pdf.AddTarget(text, rc);
            }

            // update rectangle for next time
            rc.Offset(0, rc.Height);
            return(rc);
        }
Esempio n. 2
0
        private void Create()
        {
            _c1pdf = new C1PdfDocument();
            //create StringFormat for right-aligned fields
            _sfRight                     = new StringFormat();
            _sfRight.Alignment           = StringAlignment.Far;
            _sfRightCenter               = new StringFormat();
            _sfRightCenter.Alignment     = StringAlignment.Far;
            _sfRightCenter.LineAlignment = StringAlignment.Center;

            //initialize pdf generator
            _c1pdf.Clear();

            //get page rectangle, discount margins
            RectangleF rcPage = _c1pdf.PageRectangle;

            rcPage.Inflate(-72, -92);

            //loop through selected categories
            int       page = 0;
            DataTable dt   = GetCategories();

            foreach (DataRow dr in dt.Rows)
            {
                //add page break, update page counter
                if (page > 0)
                {
                    _c1pdf.NewPage();
                }
                page++;

                //get current category name
                string catName = (string)dr["CategoryName"];

                //add title to page
                _c1pdf.DrawString(catName, _fontTitle, Brushes.Blue, rcPage);

                //add outline entry
                _c1pdf.AddBookmark(catName, 0, 0);

                //build row template
                RectangleF[] rcRows = new RectangleF[6];
                for (int i = 0; i < rcRows.Length; i++)
                {
                    rcRows[i]          = RectangleF.Empty;
                    rcRows[i].Location = new PointF(rcPage.X, rcPage.Y + _fontHeader.SizeInPoints + 10);
                    rcRows[i].Size     = new SizeF(0, _fontBody.SizeInPoints + 3);
                }
                rcRows[0].Width = 110;          // Product Name
                rcRows[1].Width = 60;           // Unit Price
                rcRows[2].Width = 80;           // Qty/Unit
                rcRows[3].Width = 60;           // Stock Units
                rcRows[4].Width = 60;           // Stock Value
                rcRows[5].Width = 60;           // Reorder
                for (int i = 1; i < rcRows.Length; i++)
                {
                    rcRows[i].X = rcRows[i - 1].X + rcRows[i - 1].Width + 8;
                }

                //add column headers
                _c1pdf.FillRectangle(Brushes.DarkGray, RectangleF.Union(rcRows[0], rcRows[5]));
                _c1pdf.DrawString("Product Name", _fontHeader, Brushes.White, rcRows[0]);
                _c1pdf.DrawString("Unit Price", _fontHeader, Brushes.White, rcRows[1], _sfRight);
                _c1pdf.DrawString("Qty/Unit", _fontHeader, Brushes.White, rcRows[2]);
                _c1pdf.DrawString("Stock Units", _fontHeader, Brushes.White, rcRows[3], _sfRight);
                _c1pdf.DrawString("Stock Value", _fontHeader, Brushes.White, rcRows[4], _sfRight);
                _c1pdf.DrawString("Reorder", _fontHeader, Brushes.White, rcRows[5]);

                //loop through products in this category
                DataRow[] products = dr.GetChildRows("Categories_Products");

                foreach (DataRow product in products)
                {
                    //move on to next row
                    for (int i = 0; i < rcRows.Length; i++)
                    {
                        rcRows[i].Y += rcRows[i].Height;
                    }

                    //add row with some data
                    try
                    {
                        _c1pdf.DrawString(product["ProductName"].ToString(), _fontBody, Brushes.Black, rcRows[0]);
                        _c1pdf.DrawString(string.Format("{0:c}", product["UnitPrice"]), _fontBody, Brushes.Black, rcRows[1], _sfRight);
                        _c1pdf.DrawString(string.Format("{0}", product["QuantityPerUnit"]), _fontBody, Brushes.Black, rcRows[2]);
                        _c1pdf.DrawString(string.Format("{0}", product["UnitsInStock"]), _fontBody, Brushes.Black, rcRows[3], _sfRight);
                        _c1pdf.DrawString(string.Format("{0:c}", product["ValueInStock"]), _fontBody, Brushes.Black, rcRows[4], _sfRight);
                        if ((bool)product["OrderNow"])
                        {
                            _c1pdf.DrawString("<<<", _fontBody, Brushes.Red, rcRows[5]);
                        }
                    }
                    catch
                    {
                        // Debug.Assert(false);
                    }
                }
                if (products.Length == 0)
                {
                    rcRows[0].Y += rcRows[0].Height;
                    _c1pdf.DrawString("No products in this category.", _fontBody, Brushes.Black,
                                      RectangleF.Union(rcRows[0], rcRows[5]));
                }
            }

            //add page headers
            AddPageHeaders(rcPage);
        }
Esempio n. 3
-1
        private void Create()
        {
            _c1pdf = new C1PdfDocument();
            //create StringFormat for right-aligned fields
            _sfRight = new StringFormat();
            _sfRight.Alignment = StringAlignment.Far;
            _sfRightCenter = new StringFormat();
            _sfRightCenter.Alignment = StringAlignment.Far;
            _sfRightCenter.LineAlignment = StringAlignment.Center;

            //initialize pdf generator
            _c1pdf.Clear();

            //get page rectangle, discount margins
            RectangleF rcPage = _c1pdf.PageRectangle;
            rcPage.Inflate(-72, -92);

            //loop through selected categories
            int page = 0;
            DataTable dt = GetCategories();
            foreach (DataRow dr in dt.Rows)
            {
                //add page break, update page counter
                if (page > 0) _c1pdf.NewPage();
                page++;

                //get current category name
                string catName = (string)dr["CategoryName"];

                //add title to page
                _c1pdf.DrawString(catName, _fontTitle, Brushes.Blue, rcPage);

                //add outline entry
                _c1pdf.AddBookmark(catName, 0, 0);

                //build row template
                RectangleF[] rcRows = new RectangleF[6];
                for (int i = 0; i < rcRows.Length; i++)
                {
                    rcRows[i] = RectangleF.Empty;
                    rcRows[i].Location = new PointF(rcPage.X, rcPage.Y + _fontHeader.SizeInPoints + 10);
                    rcRows[i].Size = new SizeF(0, _fontBody.SizeInPoints + 3);
                }
                rcRows[0].Width = 110;		// Product Name
                rcRows[1].Width = 60;		// Unit Price
                rcRows[2].Width = 80;		// Qty/Unit
                rcRows[3].Width = 60;		// Stock Units
                rcRows[4].Width = 60;		// Stock Value
                rcRows[5].Width = 60;		// Reorder
                for (int i = 1; i < rcRows.Length; i++)
                    rcRows[i].X = rcRows[i - 1].X + rcRows[i - 1].Width + 8;

                //add column headers
                _c1pdf.FillRectangle(Brushes.DarkGray, RectangleF.Union(rcRows[0], rcRows[5]));
                _c1pdf.DrawString("Product Name", _fontHeader, Brushes.White, rcRows[0]);
                _c1pdf.DrawString("Unit Price", _fontHeader, Brushes.White, rcRows[1], _sfRight);
                _c1pdf.DrawString("Qty/Unit", _fontHeader, Brushes.White, rcRows[2]);
                _c1pdf.DrawString("Stock Units", _fontHeader, Brushes.White, rcRows[3], _sfRight);
                _c1pdf.DrawString("Stock Value", _fontHeader, Brushes.White, rcRows[4], _sfRight);
                _c1pdf.DrawString("Reorder", _fontHeader, Brushes.White, rcRows[5]);

                //loop through products in this category
                DataRow[] products = dr.GetChildRows("Categories_Products");

                foreach (DataRow product in products)
                {
                    //move on to next row
                    for (int i = 0; i < rcRows.Length; i++)
                        rcRows[i].Y += rcRows[i].Height;

                    //add row with some data
                    try
                    {
                        _c1pdf.DrawString(product["ProductName"].ToString(), _fontBody, Brushes.Black, rcRows[0]);
                        _c1pdf.DrawString(string.Format("{0:c}", product["UnitPrice"]), _fontBody, Brushes.Black, rcRows[1], _sfRight);
                        _c1pdf.DrawString(string.Format("{0}", product["QuantityPerUnit"]), _fontBody, Brushes.Black, rcRows[2]);
                        _c1pdf.DrawString(string.Format("{0}", product["UnitsInStock"]), _fontBody, Brushes.Black, rcRows[3], _sfRight);
                        _c1pdf.DrawString(string.Format("{0:c}", product["ValueInStock"]), _fontBody, Brushes.Black, rcRows[4], _sfRight);
                        if ((bool)product["OrderNow"])
                            _c1pdf.DrawString("<<<", _fontBody, Brushes.Red, rcRows[5]);
                    }
                    catch
                    {
                        // Debug.Assert(false);
                    }
                }
                if (products.Length == 0)
                {
                    rcRows[0].Y += rcRows[0].Height;
                    _c1pdf.DrawString("No products in this category.", _fontBody, Brushes.Black,
                                      RectangleF.Union(rcRows[0], rcRows[5]));
                }
            }

            //add page headers
            AddPageHeaders(rcPage);
        }