コード例 #1
0
 /// <summary>
 /// 增加页面
 /// </summary>
 /// <param name="bookid"></param>
 /// <param name="userid"></param>
 /// <param name="pagecount"></param>
 /// <returns></returns>
 public ActionResult AddBookPage(int bookid, int userid, int pagecount)
 {
     try
     {
         Inpinke_Book book = DBBookBLL.GetBookByID(bookid);
         if (book == null)
         {
             return(Content("{\"success\":false,\"msg\":\"添加书本页面失败,刷新页面再试试吧!\"}"));
         }
         if (book.PageCount >= pagecount)
         {
             return(Content("{\"success\":false,\"msg\":\"添加书本页面失败,刷新页面再试试吧!\"}"));
         }
         Inpinke_Book_Page bookpage = DBBookBLL.GetBookPageByPNum(book.PageCount, bookid);
         if (bookpage != null)
         {
             bookpage.PageData.SetAttributeValue("opnum", book.PageCount + "_" + (book.PageCount + 1));
             bookpage.PageData = XElement.Parse(bookpage.PageData.ToString());
             bookpage.SaveWhenSubmit(InpinkeDataContext.Instance);
         }
         book.PageCount = pagecount;
         book.SaveWhenSubmit(InpinkeDataContext.Instance);
         InpinkeDataContext.Instance.Submit();
         return(Content("{\"success\":true,\"msg\":\"添加书本页面成功!\"}"));
     }
     catch (Exception ex)
     {
         Logger.Error(string.Format("AddBookPage Error:{0},BookID:{1},UserID:{2},PageCount:{3}", ex.ToString(), bookid, userid, pagecount));
         return(Content("{\"success\":false,\"msg\":\"添加书本页面失败,刷新页面再试试吧!\"}"));
     }
 }
コード例 #2
0
        /// <summary>
        /// 添加新页面
        /// </summary>
        /// <param name="page"></param>
        /// <returns></returns>
        public static BaseResponse AddBookPage(Inpinke_Book_Page page)
        {
            BaseResponse br = new BaseResponse();

            br.IsSuccess = false;
            try
            {
                page.CreateTime = DateTime.Now;
                page.UpdateTime = DateTime.Now;
                page.Status     = (int)RecordStatus.Nomral;
                page.InsertWhenSubmit(InpinkeDataContext.Instance);
                InpinkeDataContext.Instance.Submit();
                br.IsSuccess   = true;
                br.ResponseObj = page;
                br.Message     = "添加页面成功";
                return(br);
            }
            catch (Exception ex)
            {
                Logger.Error(string.Format("AddBookPage BookID:{0},PageNum:{1},Error:{2}", page.BookID, page.PageNum, ex.ToString()));
                br.IsSuccess = false;
                br.Message   = "添加页面失败请稍后再试";
                return(br);
            }
        }
コード例 #3
0
        /// <summary>
        /// 删除书本页面
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static BaseResponse DeleteBookPage(Inpinke_Book_Page model)
        {
            BaseResponse br = new BaseResponse();

            br.IsSuccess = false;
            try
            {
                model.PageStatus = (int)PageStatus.Delete;
                model.UpdateTime = DateTime.Now;
                model.SaveWhenSubmit(InpinkeDataContext.Instance);
                InpinkeDataContext.Instance.Submit();
                br.IsSuccess = true;
                br.Message   = "书本信息更新成功";
            }
            catch (Exception ex)
            {
                br.IsSuccess = false;
                br.Message   = "书本信息更新失败,请稍后再试";
                Logger.Error(string.Format("DeleteBookPage Error:{0},BookID:{1}", ex.ToString(), model.ID));
            }
            return(br);
        }
コード例 #4
0
        /// <summary>
        /// 保存页面内容
        /// </summary>
        /// <param name="bookid"></param>
        /// <param name="userid"></param>
        /// <param name="pagedata"></param>
        /// <returns></returns>
        public ActionResult SavePageData(int bookid, int userid, string pdata)
        {
            try
            {
                Inpinke_Book model    = DBBookBLL.GetBookByID(bookid);
                PageDataObjs pageObjs = (PageDataObjs)JsonConvert.DeserializeObject(pdata, typeof(PageDataObjs));
                if (pageObjs == null)
                {
                    return(Content("{\"success\":false,\"msg\":\"保存失败,内容为空\"}"));
                }
                if (model.BookStauts == (int)BookStatus.Making)
                {
                    return(Content("{\"success\":false,\"msg\":\"对不起当前印品已下单印制不能再编辑。\"}"));
                }
                string     strReturn    = "{\"success\":true,\"pviews\":[";
                string     noneused     = "";
                string     usedimgs     = "";
                List <int> noneUseImage = new List <int>();
                List <int> usedimg      = new List <int>();
                foreach (PageDataObj pageObj in pageObjs.pdatas)
                {
                    int pnum = pageObj.pagenum;
                    Inpinke_Book_Page bookPage = DBBookBLL.GetBookPageByPNum(pnum, bookid);
                    XElement          root     = new XElement("layout", new XAttribute("pnum", pnum), new XAttribute("styleid", pageObj.styleid),
                                                              new XAttribute("isskip", pageObj.isskip), new XAttribute("opnum", pageObj.opagenum), new XAttribute("bgcolor", pageObj.bgcolor));
                    bool isCreate = false;
                    if (bookPage == null)
                    {
                        bookPage = new Inpinke_Book_Page()
                        {
                            BookID  = bookid,
                            PageNum = pnum
                        };
                        isCreate = true;
                    }
                    else
                    {
                        //原页面不是跨页,现在是跨页的,需要删除掉一个原页面
                        if (!bookPage.IsSkip && pageObj.isskip.ToLower() == "true" && pageObj.opagenum != "-1_0")
                        {
                            int opnum = int.Parse(pageObj.opagenum.Replace(pnum + "_", ""));
                            Inpinke_Book_Page oBookPage = DBBookBLL.GetBookPageByPNum(opnum, bookid);
                            if (oBookPage != null)
                            {
                                oBookPage.PageStatus = (int)PageStatus.Delete;
                                DBBookBLL.UpdateBookPage(oBookPage);
                                //修改页面图片使用次数
                                DBImageBLL.ChangeImageUsedNum(oBookPage.PageData, bookid, true, ref noneUseImage);
                            }
                        }
                        //修改页面图片使用次数
                        DBImageBLL.ChangeImageUsedNum(bookPage.PageData, bookid, true, ref noneUseImage);
                    }
                    bookPage.IsSkip = pageObj.isskip.ToLower() == "false" ? false : true;

                    //添加图片节点
                    foreach (PageImage image in pageObj.image)
                    {
                        XElement       imageItem = new XElement("image");
                        PropertyInfo[] pis       = image.GetType().GetProperties();
                        int            urlIndex  = image.src.ToLower().IndexOf("/userfile");
                        if (urlIndex > 0)
                        {
                            image.src = image.src.Substring(urlIndex);
                        }
                        foreach (PropertyInfo property in pis)
                        {
                            //设置节点属性
                            imageItem.SetAttributeValue(property.Name, property.GetValue(image, null));
                        }
                        root.Add(imageItem);
                    }
                    //添加文字节点
                    foreach (PageText text in pageObj.text)
                    {
                        XElement       textItem = new XElement("text");
                        PropertyInfo[] pis      = text.GetType().GetProperties();
                        foreach (PropertyInfo property in pis)
                        {
                            //设置节点属性
                            textItem.SetAttributeValue(property.Name, property.GetValue(text, null));
                        }
                        if (pageObj.pagenum == 0 && text.issingle == "true")
                        {
                            if (!string.IsNullOrEmpty(text.content) && text.conid == "txt_1")
                            {
                                model.BookName = text.content;
                            }
                            if (!string.IsNullOrEmpty(text.content) && text.conid == "txt_2")
                            {
                                model.SubBookName = text.content;
                            }
                        }

                        root.Add(textItem);
                    }
                    bookPage.PageData = root;
                    //修改页面图片使用次数

                    DBImageBLL.ChangeImageUsedNum(bookPage.PageData, bookid, false, ref usedimg);

                    bool istxtO = false; //文字是否过多
                    if (isCreate)
                    {
                        int pID = DBBookBLL.GetMaxBookPageID() + 1;
                        bookPage.PageImg = SavePageView(pageObj, userid, model, ref istxtO, pID);
                    }
                    else
                    {
                        bookPage.PageImg = SavePageView(pageObj, userid, model, ref istxtO, bookPage.ID);
                    }

                    strReturn          += "{\"pnum\":" + pageObj.pagenum + ",\"src\":\"" + bookPage.PageImg + "\",\"isskip\":" + pageObj.isskip + ",\"istxtover\":" + istxtO.ToString().ToLower() + "},";
                    bookPage.PageStatus = (int)PageStatus.Normal;
                    if (pageObj.pagenum == 0)
                    {
                        model.BookCover = "/UserFile/" + UserSession.CurrentUser.ID + "/" + bookid + "/cover200.jpg";
                    }

                    if (isCreate)
                    {
                        DBBookBLL.AddBookPage(bookPage);
                        //更新已完成的页数
                        DBBookBLL.UpdateDonePage(bookid);
                    }
                    else
                    {
                        DBBookBLL.UpdateBookPage(bookPage);
                    }
                }
                noneused = string.Join(",", noneUseImage);
                usedimgs = string.Join(",", usedimg);

                strReturn = strReturn.TrimEnd(',') + "],\"noneusedimg\":[" + noneused + "],\"usedimg\":[" + usedimgs + "]}";
                return(Content(strReturn));
            }
            catch (Exception ex)
            {
                Logger.Error(string.Format("SavePageData BookID:{0},UserID:{1},Error:{2}", bookid, userid, ex.ToString()));
                return(Content("{\"success\":false,\"msg\":\"服务器异常保存失败,请稍后再试\"}"));
            }
        }
コード例 #5
0
        /// <summary>
        /// 调整书本顺序
        /// </summary>
        /// <param name="bookid"></param>
        /// <param name="userid"></param>
        /// <param name="numorder"></param>
        /// <returns></returns>
        public ActionResult SetPageNumOrder(int bookid, int userid, string numorder, string delpnum)
        {
            try
            {
                string[] delpnums = delpnum.Split(',');
                string[] nums     = numorder.Split(',');
                // list = DBBookBLL.GetBookPageByPNums(delpnums, bookid);
                Inpinke_Book book = DBBookBLL.GetBookByID(bookid);
                if (delpnums != null && delpnums.Count() > 0)
                {
                    book.PageCount = book.PageCount - delpnums.Length;
                    DBBookBLL.UpdateBook(book);
                    DBBookBLL.DeleteBookPage(delpnum, bookid);
                    DBBookBLL.UpdateDonePage(bookid);
                }

                IList <Inpinke_Book_Page> list = DBBookBLL.GetBookPageByPNums(nums, bookid);
                if (list != null)
                {
                    Hashtable ht = new Hashtable();
                    foreach (Inpinke_Book_Page p in list)
                    {
                        ht[p.PageNum] = p.ID;
                    }

                    int[] intNums = nums.Where(e => int.Parse(e) >= 0).Select(e => int.Parse(e)).ToArray();
                    for (int i = 0; i < intNums.Length; i++)
                    {
                        if (ht[intNums[i]] == null)
                        {
                            continue;
                        }
                        Inpinke_Book_Page model = list.Where(e => e.ID == (int)ht[intNums[i]]).FirstOrDefault();
                        if (model != null)
                        {
                            model.PageNum = i;

                            model.PageData.SetAttributeValue("pnum", i);
                            string opnum = "-1_0";
                            if (i == 0)
                            {
                                opnum = "-1_0";
                            }
                            else if (i == 1)
                            {
                                opnum = "-2_1";
                            }
                            else if (i == intNums.Length - 1)
                            {
                                opnum = i.ToString() + "_-3";
                            }
                            else if (i % 2 == 0)
                            {
                                opnum = i + "_" + (i + 1);
                            }
                            else
                            {
                                opnum = (i - 1) + "_" + i;
                            }
                            model.PageData.SetAttributeValue("opnum", opnum);
                            model.PageData = XElement.Parse(model.PageData.ToString());
                            model.SaveWhenSubmit(InpinkeDataContext.Instance);
                        }
                    }
                }
                InpinkeDataContext.Instance.Submit();
                return(Content("{\"success\":true,\"msg\":\"更新书本信息成功\"}"));
            }
            catch (Exception ex)
            {
                Logger.Error(string.Format("SetPageNumOrder BookID:{0} Error:{1}", bookid, ex.ToString()));
                return(Content("{\"success\":false,\"msg\":\"更新书本信息失败,刷新页面再试试吧!\"}"));
            }
        }
コード例 #6
0
        /// <summary>
        /// 生成书本pdf
        /// </summary>
        /// <param name="bookid"></param>
        /// <returns></returns>
        public static bool CreateBookPDF(int bookid)
        {
            Inpinke_Book model   = DBBookBLL.GetBookByID(bookid);
            string       pdfname = FilterSpecial(model.BookName);

            pdfname = OutPath + pdfname + "-" + model.ID + "-intime.pdf";
            PDFProcessBLL pdfProcess = new PDFProcessBLL(PageWidth + 2 * TrimLineLength, PageHeight + 2 * TrimLineLength, pdfname);

            try
            {
                IList <Inpinke_Book_Page> pages = DBBookBLL.GetBookPage(bookid);
                pdfProcess.PaintScale = PaintScale;
                if (pages != null)
                {
                    pages = pages.OrderBy(e => e.PageNum).ToList();


                    pdfProcess.doc.Open();
                    float boneWidth = backboneWidth * model.PageCount;
                    pdfProcess.FlodPageWidth    = flodPageWidth;
                    pdfProcess.BackBoneWidth    = boneWidth;
                    pdfProcess.SinglePageWidth  = PageWidth;
                    pdfProcess.SinglePageHeight = PageHeight;
                    for (int i = 0; i <= model.PageCount; i++)
                    {
                        Inpinke_Book_Page p = pages.Where(e => e.PageNum == i).SingleOrDefault();
                        if (p == null)
                        {
                            pdfProcess.PageWidth  = PageWidth + 2 * TrimLineLength;
                            pdfProcess.PageHeight = PageHeight + 2 * TrimLineLength;
                            pdfProcess.doc.SetPageSize(new iTextSharp.text.Rectangle(pdfProcess.PageWidth, pdfProcess.PageHeight));
                            pdfProcess.doc.NewPage();
                            pdfProcess.PaintTirmLine();
                        }
                        else
                        {
                            float pWidth = PageWidth;
                            if (p.IsSkip)
                            {
                                pWidth = PageWidth * 2;
                                if (i != 0)
                                {
                                    i++;
                                }
                            }
                            else if (i != 1 && i != model.PageCount)
                            {
                                pWidth = PageWidth * 2;
                            }
                            if (i == 0)
                            {
                                //封面和封底和折页书脊总宽度
                                pWidth = PageWidth * 2 + flodPageWidth * 2 + boneWidth;
                            }

                            pdfProcess.PageWidth  = pWidth + 2 * TrimLineLength;
                            pdfProcess.PageHeight = PageHeight + 2 * TrimLineLength;
                            pdfProcess.doc.SetPageSize(new iTextSharp.text.Rectangle(pdfProcess.PageWidth, pdfProcess.PageHeight));
                            pdfProcess.doc.NewPage();
                            pdfProcess.PaintTirmLine();
                            PageDataObj pageObj = (PageDataObj)SerializeXmlHelper.DeserializeFromXml(p.PageData, typeof(PageDataObj));
                            pdfProcess.PaintPage(pageObj, 0);
                            if (!p.IsSkip && i != 1 && i != model.PageCount)
                            {
                                p = pages.Where(e => e.PageNum == i + 1).SingleOrDefault();
                                if (p != null)
                                {
                                    pageObj = (PageDataObj)SerializeXmlHelper.DeserializeFromXml(p.PageData, typeof(PageDataObj));
                                    pdfProcess.PaintPage(pageObj, PageWidth);
                                    i++;
                                }
                            }
                        }
                    }
                    pdfProcess.doc.Close();
                }
                return(true);
            }
            catch (Exception ex)
            {
                pdfProcess.doc.Close();
                Logger.Error(string.Format("CreateBookPDF BookID:{0},Error:{1}", bookid, ex.ToString()));
                return(false);
            }
        }