Exemplo n.º 1
0
        public string BuildPrintFile(List <PackPageData> pageDatas, string appUser)
        {
            string fileName = string.Format("CustPack-{0}.pdf", DateTime.Now.ToString("yyyyMMddHHmm"));
            string fullPath = BasePath + fileName;


            List <string> sData = new List <string>();

            //each page size get from header ,
            Document doc = new Document(pdfUtility.GetDocRectangle(pageDatas[0].Header.PAPER_HORIZONTAL, pageDatas[0].Header.PAPER_VERTICAL));

            PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(fullPath, FileMode.Create));

            //string imagePath = BasePath.Replace("temp", "images") + pageDatas[0].Header.LOGO; //;"custpack.png";
            PackPageEventHelper pHelper = new PackPageEventHelper();

            if (!string.IsNullOrEmpty(pageDatas[0].Header.LOGO))
            {
                pHelper.LogoPath = BasePath.Replace("temp", "images") + pageDatas[0].Header.LOGO;
            }
            writer.PageEvent = pHelper;

            doc.SetMargins(10f, 10f, 10f, 36f);

            pHelper.CurrentGroup = pageDatas[0].Header.LODNUM;
            for (int i = 0; i < pageDatas.Count; i++)
            {
                //pHelper.CurrentGroup = pageDatas[i].Header.SHIP_ID;
                if (i != 0)
                {
                    doc.SetPageSize(pdfUtility.GetDocRectangle(pageDatas[i].Header.PAPER_HORIZONTAL, pageDatas[i].Header.PAPER_VERTICAL));
                    doc.NewPage();
                }
                else
                {
                    doc.Open();
                }


                PdfPCell cellUnit;
                //Content part
                PdfPTable contentTable = new PdfPTable(3);
                contentTable.WidthPercentage = 90f;
                contentTable.SetWidths(new float[] { 200f, 190f, 185f });//575

                cellUnit             = new PdfPCell(new Paragraph(pageDatas[i].Header.HEADER1, new iTextSharp.text.Font(BF_Light, HeaderFontSize)));
                cellUnit.BorderWidth = 0;
                contentTable.AddCell(cellUnit);
                cellUnit             = new PdfPCell(new Paragraph(pageDatas[i].Header.HEADER2, new iTextSharp.text.Font(BF_Light, HeaderFontSize)));
                cellUnit.BorderWidth = 0;
                contentTable.AddCell(cellUnit);
                cellUnit             = new PdfPCell(new Paragraph(pageDatas[i].Header.HEADER3, new iTextSharp.text.Font(BF_Light, HeaderFontSize)));
                cellUnit.BorderWidth = 0;
                contentTable.AddCell(cellUnit);
                doc.Add(contentTable);
                doc.Add(new Paragraph(Environment.NewLine));

                //part 2
                PdfPTable table_2 = new PdfPTable(2);
                table_2.WidthPercentage = 90f;
                table_2.SetWidths(new float[] { 285f, 285f });//575
                Paragraph p21 = new Paragraph();
                p21.Add(new Phrase(string.Format("{0}    {1}", pageDatas[i].Header.NOTE1, pageDatas[i].Header.FLEX1), new iTextSharp.text.Font(BF_Light, ContentFontSize)));
                p21.Add(System.Environment.NewLine);
                p21.Add(new Phrase(string.Format("{0}", pageDatas[i].Header.COMPANY), new iTextSharp.text.Font(BF_Light, ContentFontSize)));
                p21.Add(System.Environment.NewLine);
                p21.Add(new Phrase(string.Format("{0}", pageDatas[i].Header.ADDRESS), new iTextSharp.text.Font(BF_Light, ContentFontSize)));
                p21.Add(System.Environment.NewLine);
                p21.Add(new Phrase(string.Format("{0}    {1}", pageDatas[i].Header.CONTACT, pageDatas[i].Header.TELEPHONE), new iTextSharp.text.Font(BF_Light, ContentFontSize)));
                p21.Add(System.Environment.NewLine);
                cellUnit             = new PdfPCell(p21);
                cellUnit.BorderWidth = 0;
                table_2.AddCell(cellUnit);

                Paragraph p22 = new Paragraph();
                p22.Add(new Phrase(string.Format("{0}    {1}", pageDatas[i].Header.NOTE2, pageDatas[i].Header.FLEX2), new iTextSharp.text.Font(BF_Light, ContentFontSize)));
                p22.Add(System.Environment.NewLine);
                p22.Add(new Phrase(string.Format("{0}    {1}", pageDatas[i].Header.ADRNAM, pageDatas[i].Header.ADRCTY), new iTextSharp.text.Font(BF_Light, ContentFontSize)));
                p22.Add(System.Environment.NewLine);
                p22.Add(new Phrase(string.Format("{0}", pageDatas[i].Header.ADRLN1), new iTextSharp.text.Font(BF_Light, ContentFontSize)));
                p22.Add(System.Environment.NewLine);
                p22.Add(new Phrase(string.Format("{0}    {1}", pageDatas[i].Header.ADRLN2, pageDatas[i].Header.ADRLN3), new iTextSharp.text.Font(BF_Light, ContentFontSize)));
                p22.Add(System.Environment.NewLine);
                p22.Add(new Phrase(string.Format("{0}    {1}", pageDatas[i].Header.LAST_NAME, pageDatas[i].Header.PHNNUM), new iTextSharp.text.Font(BF_Light, ContentFontSize)));
                p22.Add(System.Environment.NewLine);
                cellUnit             = new PdfPCell(p22);
                cellUnit.BorderWidth = 0;
                table_2.AddCell(cellUnit);

                doc.Add(table_2);
                doc.Add(new Paragraph(Environment.NewLine));

                //part 3
                PdfPTable table_3 = new PdfPTable(3);
                table_3.WidthPercentage = 90f;
                table_3.SetWidths(new float[] { 200f, 190f, 185f });//575
                Paragraph p31 = new Paragraph();
                p31.Add(new Phrase(string.Format("{0}", pageDatas[i].Header.NOTE3), new iTextSharp.text.Font(BF_Light, ContentFontSize)));
                p31.Add(System.Environment.NewLine);
                p31.Add(System.Environment.NewLine);
                p31.Add(new Phrase(string.Format("{0}", pageDatas[i].Header.FLEX3), new iTextSharp.text.Font(BF_Light, ContentFontSize)));
                cellUnit             = new PdfPCell(p31);
                cellUnit.BorderWidth = 0;
                table_3.AddCell(cellUnit);

                Paragraph p32 = new Paragraph();
                p32.Add(new Phrase(string.Format("{0}", pageDatas[i].Header.NOTE4), new iTextSharp.text.Font(BF_Light, ContentFontSize)));
                p32.Add(System.Environment.NewLine);
                p32.Add(System.Environment.NewLine);
                p32.Add(new Phrase(string.Format("{0}", pageDatas[i].Header.FLEX4), new iTextSharp.text.Font(BF_Light, ContentFontSize)));
                cellUnit             = new PdfPCell(p32);
                cellUnit.BorderWidth = 0;
                table_3.AddCell(cellUnit);

                Paragraph p33 = new Paragraph();
                p33.Add(new Phrase(string.Format("{0}", pageDatas[i].Header.NOTE5), new iTextSharp.text.Font(BF_Light, ContentFontSize)));
                p33.Add(System.Environment.NewLine);
                p33.Add(System.Environment.NewLine);
                p33.Add(new Phrase(string.Format("{0}", pageDatas[i].Header.FLEX5), new iTextSharp.text.Font(BF_Light, ContentFontSize)));
                cellUnit             = new PdfPCell(p33);
                cellUnit.BorderWidth = 0;
                table_3.AddCell(cellUnit);

                doc.Add(table_3);
                doc.Add(new Paragraph(Environment.NewLine));

                //Table part
                PdfPTable dTable = new PdfPTable(11);
                dTable.WidthPercentage = 90f;
                dTable.SetWidths(new float[] { 30f, 52f, 98f, 25f, 30f, 47f, 47f, 47f, 47f, 47f, 47f });
                dTable.AddCell(pdfUtility.BuildCell("Index", new iTextSharp.text.Font(BF_Light, TableFontSize)));
                dTable.AddCell(pdfUtility.BuildCell(pageDatas[i].Header.COL01, new iTextSharp.text.Font(BF_Light, TableFontSize)));
                dTable.AddCell(pdfUtility.BuildCell(pageDatas[i].Header.COL02, new iTextSharp.text.Font(BF_Light, TableFontSize)));
                dTable.AddCell(pdfUtility.BuildCell(pageDatas[i].Header.COL03, new iTextSharp.text.Font(BF_Light, TableFontSize)));
                dTable.AddCell(pdfUtility.BuildCell(pageDatas[i].Header.COL04, new iTextSharp.text.Font(BF_Light, TableFontSize)));
                dTable.AddCell(pdfUtility.BuildCell(pageDatas[i].Header.COL05, new iTextSharp.text.Font(BF_Light, TableFontSize)));
                dTable.AddCell(pdfUtility.BuildCell(pageDatas[i].Header.COL06, new iTextSharp.text.Font(BF_Light, TableFontSize)));
                dTable.AddCell(pdfUtility.BuildCell(pageDatas[i].Header.COL07, new iTextSharp.text.Font(BF_Light, TableFontSize)));
                dTable.AddCell(pdfUtility.BuildCell(pageDatas[i].Header.COL08, new iTextSharp.text.Font(BF_Light, TableFontSize)));
                dTable.AddCell(pdfUtility.BuildCell(pageDatas[i].Header.COL09, new iTextSharp.text.Font(BF_Light, TableFontSize)));
                dTable.AddCell(pdfUtility.BuildCell(pageDatas[i].Header.COL10, new iTextSharp.text.Font(BF_Light, TableFontSize)));

                if (pageDatas[i].Details != null && pageDatas[i].Details.Count > 0)
                {
                    //order
                    //pageDatas[i].Details.OrderBy(a => a.COL01);

                    int indexPoint = 1;
                    foreach (var item in pageDatas[i].Details)
                    {
                        dTable.AddCell(pdfUtility.BuildCell(indexPoint.ToString(), new iTextSharp.text.Font(BF_Light, TableFontSize)));
                        indexPoint++;
                        dTable.AddCell(pdfUtility.BuildCell(item.COL01, new iTextSharp.text.Font(BF_Light, BigTableFontSize)));
                        dTable.AddCell(pdfUtility.BuildCell(item.COL02, new iTextSharp.text.Font(BF_Light, TableFontSize)));
                        dTable.AddCell(pdfUtility.BuildCell(item.COL03, new iTextSharp.text.Font(BF_Light, TableFontSize)));
                        dTable.AddCell(pdfUtility.BuildCell(item.COL04, new iTextSharp.text.Font(BF_Light, TableFontSize)));
                        dTable.AddCell(pdfUtility.BuildCell(item.COL05, new iTextSharp.text.Font(BF_Light, TableFontSize)));
                        dTable.AddCell(pdfUtility.BuildCell(item.COL06, new iTextSharp.text.Font(BF_Light, TableFontSize)));
                        dTable.AddCell(pdfUtility.BuildCell(item.COL07, new iTextSharp.text.Font(BF_Light, TableFontSize)));
                        dTable.AddCell(pdfUtility.BuildCell(item.COL08, new iTextSharp.text.Font(BF_Light, TableFontSize)));
                        dTable.AddCell(pdfUtility.BuildCell(item.COL09, new iTextSharp.text.Font(BF_Light, TableFontSize)));
                        dTable.AddCell(pdfUtility.BuildCell(item.COL10, new iTextSharp.text.Font(BF_Light, TableFontSize)));
                    }
                    doc.Add(dTable);

                    Paragraph pLast = new Paragraph(string.Format("Total Items:{0}          ", pageDatas[i].Details.Count.ToString()), new iTextSharp.text.Font(BF_Light, ContentFontSize));
                    pLast.Alignment = Element.ALIGN_RIGHT;
                    doc.Add(pLast);
                }

                //footer  part
                //
                sData.Clear();
                sData.Add(pageDatas[i].Header.FOOTER1 ?? string.Empty);
                sData.Add(pageDatas[i].Header.FOOTER2 ?? string.Empty);
                sData.Add(pageDatas[i].Header.FOOTER3 ?? string.Empty);

                PdfContentByte cb = writer.DirectContent;
                ColumnText     ct = new ColumnText(cb);
                cb.BeginText();
                cb.SetFontAndSize(BF_Light, FooterFontSize);
                cb.SetTextMatrix(doc.LeftMargin, doc.BottomMargin);
                cb.ShowText(pdfUtility.GetLineString(sData));
                cb.EndText();

                if ((i + 1) < pageDatas.Count)
                {
                    pHelper.CurrentGroup = pageDatas[i + 1].Header.LODNUM;
                    if (!string.IsNullOrEmpty(pageDatas[i + 1].Header.LOGO))
                    {
                        pHelper.LogoPath = BasePath.Replace("temp", "images") + pageDatas[i + 1].Header.LOGO;
                    }
                    else
                    {
                        pHelper.LogoPath = null;
                    }
                }
            }

            doc.Close();

            //add track data

            //string sourceString1 = hData.SHIP_ID + "C";
            //RP_SHIP_TRACK_BLL trackBLL = new RP_SHIP_TRACK_BLL();
            //foreach (var item in dPrintList)
            //{
            //    RP_SHIP_TRACK track = new RP_SHIP_TRACK();
            //    track.WH_ID = item.WH_ID;
            //    track.SHIP_ID = item.SHIP_ID;

            //    if (wbType.TRACK_NUM_BY_IHUB == CHubConstValues.IndY)
            //        track.TRACK_NUM_IHUB = sourceString1;
            //    else
            //        track.TRACK_NUM_IHUB = "IHUB_Printed";

            //    track.RECORD_DATE = DateTime.Now;
            //    track.UPDATED_BY = appUser;
            //    trackBLL.AddOrUpdate(track);
            //}


            return(fileName);
        }
Exemplo n.º 2
0
        public string BuildPDF(List <V_PLABEL_PRINT> printDatas, List <LabelPrintItem> labelItems)
        {
            string fileName = string.Format("labelPrint-{0}.pdf", DateTime.Now.ToString("yyyyMMddHHmm"));
            string fullPath = BasePath + fileName;

            //List<string> sData = new List<string>();

            //each page size get from header ,
            Document doc = new Document(pdfUtility.GetDocRectangle(printDatas[0].PAPER_HORIZONTAL.Value, printDatas[0].PAPER_VERTICAL.Value));

            PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(fullPath, FileMode.Create));


            // PackPageEventHelper pHelper = new PackPageEventHelper();
            //writer.PageEvent = pHelper;

            doc.SetMargins(10f, 10f, 0f, 0f);

            int headerHeight = fontHelper.GetFontHeight(printDatas[0].HEADER, new System.Drawing.Font("黑体", ContentFontSize, System.Drawing.FontStyle.Bold));

            int ColumnHeight = fontHelper.GetFontHeight("柳工", new System.Drawing.Font("黑体", ContentFontSize)) + 1;
            int lineCount    = (int)((doc.Top - headerHeight) / ColumnHeight);
            int linePointer  = 1;

            for (int i = 0; i < printDatas.Count; i++)
            {
                //pHelper.CurrentGroup = pageDatas[i].Header.SHIP_ID;
                if (i != 0)
                {
                    doc.SetPageSize(pdfUtility.GetDocRectangle(printDatas[i].PAPER_HORIZONTAL.Value, printDatas[i].PAPER_VERTICAL.Value));
                    doc.NewPage();
                }
                else
                {
                    doc.Open();
                }

                int copies = (labelItems.FirstOrDefault(a => a.partNo == printDatas[i].PART_NO) ?? new LabelPrintItem()).copies;
                //in case senerio 0
                if (copies == 0)
                {
                    copies = 1;
                }

                for (int j = 0; j < copies; j++)
                {
                    if (j != 0)
                    {
                        doc.NewPage();
                    }

                    linePointer = 1;

                    Paragraph pUnit = new Paragraph(printDatas[i].HEADER, BoldFont);
                    doc.Add(pUnit);
                    linePointer++;

                    doc.Add(new Paragraph(Environment.NewLine, BoldFont));
                    linePointer++;

                    PdfPCell cellUnit;
                    //Content part
                    PdfPTable contentTable = new PdfPTable(4);
                    contentTable.WidthPercentage = 100f;
                    //contentTable.SplitRows = false;
                    contentTable.SetWidths(new float[] { 4f, 4f, 3f, 2f });

                    //line 1
                    cellUnit             = new PdfPCell(new Paragraph(printDatas[i].T01, BoldFont));
                    cellUnit.BorderWidth = 0;
                    contentTable.AddCell(cellUnit);

                    cellUnit             = new PdfPCell(new Paragraph(printDatas[i].C01, BoldFont));
                    cellUnit.BorderWidth = 0;
                    cellUnit.Colspan     = 3;
                    contentTable.AddCell(cellUnit);

                    linePointer++;

                    //Line 2
                    cellUnit             = new PdfPCell();
                    cellUnit.BorderWidth = 0;
                    contentTable.AddCell(cellUnit);

                    //picture
                    if (string.IsNullOrEmpty(printDatas[i].C01))
                    {
                        cellUnit = new PdfPCell();
                    }
                    else
                    {
                        cellUnit = new PdfPCell(pdfUtility.GetCode128Img(printDatas[i].C01, 9), true);
                    }
                    cellUnit.BorderWidth = 0;
                    cellUnit.Colspan     = 2;
                    contentTable.AddCell(cellUnit);

                    cellUnit             = new PdfPCell();
                    cellUnit.BorderWidth = 0;
                    contentTable.AddCell(cellUnit);

                    linePointer++;

                    //Line3
                    if (linePointer > lineCount)
                    {
                        doc.Add(contentTable);
                        continue;
                    }
                    //C09 prepare
                    string c09 = printDatas[i].C09;
                    if (string.IsNullOrEmpty(c09))
                    {
                        c09 = (labelItems.FirstOrDefault(a => a.partNo == printDatas[i].PART_NO) ?? new LabelPrintItem()).MOQ.ToString();
                    }

                    cellUnit             = new PdfPCell(new Paragraph(printDatas[i].T02, BoldFont));
                    cellUnit.BorderWidth = 0;
                    contentTable.AddCell(cellUnit);

                    cellUnit             = new PdfPCell(new Paragraph(printDatas[i].C02, BoldFont));
                    cellUnit.BorderWidth = 0;
                    contentTable.AddCell(cellUnit);

                    cellUnit             = new PdfPCell(new Paragraph(printDatas[i].T09, BoldFont));
                    cellUnit.BorderWidth = 0;
                    contentTable.AddCell(cellUnit);

                    cellUnit             = new PdfPCell(new Paragraph(c09, BoldFont));
                    cellUnit.BorderWidth = 0;
                    contentTable.AddCell(cellUnit);

                    linePointer++;


                    //Line 4
                    if (linePointer > lineCount)
                    {
                        doc.Add(contentTable);
                        continue;
                    }
                    cellUnit             = new PdfPCell(new Paragraph(printDatas[i].T03, BoldFont));
                    cellUnit.BorderWidth = 0;
                    contentTable.AddCell(cellUnit);

                    cellUnit             = new PdfPCell(new Paragraph(printDatas[i].C03, BoldFont));
                    cellUnit.BorderWidth = 0;
                    contentTable.AddCell(cellUnit);

                    //picture
                    if (string.IsNullOrEmpty(c09))
                    {
                        cellUnit = new PdfPCell();
                    }
                    else
                    {
                        cellUnit = new PdfPCell(pdfUtility.GetCode128Img(c09, 9), false);
                    }
                    cellUnit.BorderWidth = 0;
                    cellUnit.Colspan     = 2;
                    contentTable.AddCell(cellUnit);

                    linePointer++;

                    //line 5
                    if (linePointer > lineCount)
                    {
                        doc.Add(contentTable);
                        continue;
                    }
                    cellUnit             = new PdfPCell(new Paragraph(printDatas[i].T04, BoldFont));
                    cellUnit.BorderWidth = 0;
                    contentTable.AddCell(cellUnit);

                    cellUnit             = new PdfPCell(new Paragraph(printDatas[i].C04, BoldFont));
                    cellUnit.BorderWidth = 0;
                    contentTable.AddCell(cellUnit);

                    cellUnit             = new PdfPCell(new Paragraph(printDatas[i].T10, BoldFont));
                    cellUnit.BorderWidth = 0;
                    contentTable.AddCell(cellUnit);

                    cellUnit             = new PdfPCell(new Paragraph(printDatas[i].C10, BoldFont));
                    cellUnit.BorderWidth = 0;
                    contentTable.AddCell(cellUnit);

                    linePointer++;
                    //line 6
                    if (linePointer > lineCount)
                    {
                        doc.Add(contentTable);
                        continue;
                    }
                    cellUnit             = new PdfPCell(new Paragraph(printDatas[i].T05, BoldFont));
                    cellUnit.BorderWidth = 0;
                    contentTable.AddCell(cellUnit);

                    cellUnit             = new PdfPCell(new Paragraph(printDatas[i].C05, BoldFont));
                    cellUnit.BorderWidth = 0;
                    contentTable.AddCell(cellUnit);

                    //picture
                    if (string.IsNullOrEmpty(printDatas[i].C10))
                    {
                        cellUnit = new PdfPCell();
                    }
                    else
                    {
                        cellUnit = new PdfPCell(pdfUtility.GetCode128Img(printDatas[i].C10, 9), false);
                    }
                    cellUnit.BorderWidth = 0;
                    cellUnit.Colspan     = 2;
                    contentTable.AddCell(cellUnit);

                    linePointer++;

                    //line 7
                    if (linePointer > lineCount)
                    {
                        doc.Add(contentTable);
                        continue;
                    }
                    cellUnit             = new PdfPCell(new Paragraph(printDatas[i].T06, BoldFont));
                    cellUnit.BorderWidth = 0;
                    contentTable.AddCell(cellUnit);

                    cellUnit             = new PdfPCell(new Paragraph(printDatas[i].C06, BoldFont));
                    cellUnit.BorderWidth = 0;
                    cellUnit.Colspan     = 3;
                    contentTable.AddCell(cellUnit);


                    linePointer++;
                    //c07 may have new line, if have new line ,need add linePointer
                    //int c01Line = printDatas[i].C07.Count<char>(a => a == Environment.NewLine);
                    //if (printDatas[i].C07.Contains(Environment.NewLine))
                    Regex           rg = new Regex("\n");
                    MatchCollection mc = rg.Matches(printDatas[i].C07);
                    linePointer += mc.Count;

                    //Line 8
                    if (linePointer > lineCount)
                    {
                        doc.Add(contentTable);
                        continue;
                    }
                    cellUnit             = new PdfPCell(new Paragraph(printDatas[i].T07, BoldFont));
                    cellUnit.BorderWidth = 0;
                    contentTable.AddCell(cellUnit);

                    cellUnit             = new PdfPCell(new Paragraph(printDatas[i].C07, BoldFont));
                    cellUnit.BorderWidth = 0;
                    cellUnit.Colspan     = 3;
                    contentTable.AddCell(cellUnit);


                    //line9
                    if (linePointer > lineCount)
                    {
                        doc.Add(contentTable);
                        continue;
                    }
                    cellUnit             = new PdfPCell(new Paragraph(printDatas[i].T08, BoldFont));
                    cellUnit.BorderWidth = 0;
                    contentTable.AddCell(cellUnit);

                    cellUnit             = new PdfPCell(new Paragraph(printDatas[i].C08, BoldFont));
                    cellUnit.BorderWidth = 0;
                    cellUnit.Colspan     = 3;
                    contentTable.AddCell(cellUnit);


                    doc.Add(contentTable);
                }
            }
            doc.Close();

            return(fileName);
        }