public PackageService Load()
        {
            using (Dal dal = new Dal(Config.ConnString))
            {
                IDataParameter[] param =
                {
                    dal.GetParameter("@package_id", PackageId),
                    dal.GetParameter("@user_id",    Config.UserId)
                };

                using (IDataReader dr = dal.GetReader("sc_package_load", param, CommandType.StoredProcedure))
                {
                    if (dr.Read())
                    {
                        Package.Id          = dr.GetDrValue <int>(0);
                        Package.Name        = dr.GetDrValue <string>(1);
                        Package.Permission  = (Permission)dr.GetByte(2);
                        Package.Pagination  = (Pagination)dr.GetByte(3);
                        Package.IncludeToc  = dr.GetDrValue <bool>(4);
                        Package.PageSetting = SetPageSetting(dr);
                        Package.FontName    = dr.GetDrValue <string>(10);

                        GroupLogo groupLogo = new GroupLogo
                        {
                            Path   = dr.GetDrValue <string>(11),
                            Width  = Convert.ToDouble(dr.GetDrValue <int>(12)),
                            Height = Convert.ToDouble(dr.GetDrValue <int>(13))
                        };

                        Package.GroupLogo     = groupLogo;
                        Package.LineSeparator = new GroupLogo();
                        Package.CompanyName   = dr.GetDrValue <string>(14);
                        Package.CopyrightText = dr.GetDrValue <string>(15);
                    }

                    dr.NextResult();
                    if (dr.Read())
                    {
                        Package.Header = AddHeaderFooter(dr);
                    }

                    dr.NextResult();
                    if (dr.Read())
                    {
                        Package.Footer = AddHeaderFooter(dr);
                    }
                }
            }
            return(this);
        }
        private static void AddImage(Page page, HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment, HeaderFooterConfig headerFooterConfig, GroupLogo groupLogo, bool isHeader, Package package)
        {
            if (groupLogo.ImageStream == null)
            {
                return;
            }

            var pageMargin = GetHeaderFooterMargin(horizontalAlignment, headerFooterConfig, isHeader, package);

            ImageStamp imageStamp = new ImageStamp(groupLogo.ImageStream)
            {
                TopMargin           = pageMargin.TopPoints,
                BottomMargin        = pageMargin.BottomPoints,
                LeftMargin          = pageMargin.LeftPoints,
                RightMargin         = pageMargin.RightPoints,
                HorizontalAlignment = horizontalAlignment,
                VerticalAlignment   = verticalAlignment,
                Width  = groupLogo.ResizedWidth,
                Height = groupLogo.CalculatedHeight > 0 ? groupLogo.CalculatedHeight : groupLogo.Height
            };

            page.AddStamp(imageStamp);
        }